pixelize-design-library 1.1.59 → 1.1.61
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/Components/Button/Button.d.ts +1 -1
- package/dist/Components/Button/Button.js +3 -2
- package/dist/Components/Button/ButtonProps.d.ts +2 -2
- package/dist/Components/Checkbox/Checkbox.d.ts +1 -1
- package/dist/Components/Checkbox/Checkbox.js +4 -2
- package/dist/Components/Checkbox/CheckboxProps.d.ts +1 -1
- package/dist/Components/Table/Components/Pagination.d.ts +1 -3
- package/dist/Components/Table/Components/Pagination.js +4 -9
- package/dist/Components/Table/Components/TableBody.d.ts +1 -1
- package/dist/Components/Table/Components/TableBody.js +9 -11
- package/dist/Components/Table/Components/TableHeader.d.ts +1 -1
- package/dist/Components/Table/Components/TableHeader.js +9 -5
- package/dist/Components/Table/Components/useTable.d.ts +3 -3
- package/dist/Components/Table/Components/useTable.js +16 -22
- package/dist/Components/Table/Table.d.ts +1 -1
- package/dist/Components/Table/Table.js +11 -9
- package/dist/Components/Table/TableProps.d.ts +3 -3
- package/dist/Components/Table/TableSettings/ManageColumns.d.ts +10 -0
- package/dist/Components/Table/TableSettings/ManageColumns.js +111 -0
- package/dist/Components/Table/TableSettings/TableSettings.d.ts +7 -0
- package/dist/Components/Table/TableSettings/TableSettings.js +73 -0
- package/dist/Hooks/usePreferences.js +2 -0
- package/dist/Utils/table.d.ts +1 -0
- package/dist/Utils/table.js +12 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { ButtonProps } from "./ButtonProps";
|
|
3
|
-
declare function Button({ label,
|
|
3
|
+
declare function Button({ label, onClick, color, variant, leftIcon, rightIcon, size, isDisabled, isLoading, loadingText, type, sx, }: ButtonProps): React.JSX.Element;
|
|
4
4
|
declare const _default: React.MemoExoticComponent<typeof Button>;
|
|
5
5
|
export default _default;
|
|
@@ -38,8 +38,9 @@ var react_1 = __importStar(require("react"));
|
|
|
38
38
|
var react_2 = require("@chakra-ui/react");
|
|
39
39
|
var useCustomTheme_1 = require("../../Theme/useCustomTheme");
|
|
40
40
|
function Button(_a) {
|
|
41
|
-
var label = _a.label,
|
|
41
|
+
var label = _a.label, onClick = _a.onClick, color = _a.color, _b = _a.variant, variant = _b === void 0 ? "solid" : _b, leftIcon = _a.leftIcon, rightIcon = _a.rightIcon, size = _a.size, _c = _a.isDisabled, isDisabled = _c === void 0 ? false : _c, _d = _a.isLoading, isLoading = _d === void 0 ? false : _d, _e = _a.loadingText, loadingText = _e === void 0 ? "Loading" : _e, type = _a.type, sx = _a.sx;
|
|
42
42
|
var theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
43
|
+
var buttonColor = !color ? theme.colors.primary[500] : color;
|
|
43
44
|
var variantStyles = {
|
|
44
45
|
solid: {
|
|
45
46
|
backgroundColor: theme.colors.primary[500],
|
|
@@ -77,7 +78,7 @@ function Button(_a) {
|
|
|
77
78
|
},
|
|
78
79
|
};
|
|
79
80
|
var appliedVariantStyle = !color ? variantStyles[variant] : {};
|
|
80
|
-
return (react_1.default.createElement(react_2.Button, __assign({ type: type, onClick: onClick, width:
|
|
81
|
+
return (react_1.default.createElement(react_2.Button, __assign({ type: type, onClick: onClick, width: "fit-content", colorScheme: buttonColor, variant: variant, size: size, isLoading: isLoading, isDisabled: isDisabled, loadingText: loadingText, leftIcon: leftIcon, rightIcon: rightIcon }, appliedVariantStyle, { sx: sx }),
|
|
81
82
|
react_1.default.createElement(react_2.Box, { sx: {
|
|
82
83
|
overflow: "hidden",
|
|
83
84
|
textOverflow: "ellipsis",
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { ButtonProps as ChakraButtonProps } from "@chakra-ui/react";
|
|
2
|
-
export type ButtonProps = Pick<ChakraButtonProps, "onClick" | "leftIcon" | "rightIcon" | "isDisabled" | "isLoading" | "loadingText" | "colorScheme" | "spinner"> & {
|
|
2
|
+
export type ButtonProps = Pick<ChakraButtonProps, "onClick" | "leftIcon" | "rightIcon" | "isDisabled" | "isLoading" | "loadingText" | "colorScheme" | "spinner" | "sx"> & {
|
|
3
3
|
label?: string;
|
|
4
4
|
width?: string | number;
|
|
5
5
|
size?: "lg" | "md" | "sm" | "xs";
|
|
6
6
|
variant?: "solid" | "outline" | "ghost" | "link" | "unstyled";
|
|
7
|
-
color?:
|
|
7
|
+
color?: string;
|
|
8
8
|
type?: "button" | "submit" | "reset";
|
|
9
9
|
};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { CheckboxProps } from "./CheckboxProps";
|
|
3
|
-
export default function CheckBox({ label, spacing, isInvalid, color, iconColor, iconSize, isChecked, isIndeterminate, onChange, isDisabled, size, value, defaultChecked, }: CheckboxProps): React.JSX.Element;
|
|
3
|
+
export default function CheckBox({ label, spacing, isInvalid, color, iconColor, iconSize, isChecked, isIndeterminate, onChange, isDisabled, size, value, defaultChecked, sx, }: CheckboxProps): React.JSX.Element;
|
|
@@ -5,8 +5,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
var react_1 = __importDefault(require("react"));
|
|
7
7
|
var react_2 = require("@chakra-ui/react");
|
|
8
|
+
var useCustomTheme_1 = require("../../Theme/useCustomTheme");
|
|
8
9
|
function CheckBox(_a) {
|
|
9
|
-
var label = _a.label, spacing = _a.spacing, isInvalid = _a.isInvalid, color = _a.color, iconColor = _a.iconColor, iconSize = _a.iconSize, isChecked = _a.isChecked, isIndeterminate = _a.isIndeterminate, onChange = _a.onChange, isDisabled = _a.isDisabled, size = _a.size, value = _a.value, defaultChecked = _a.defaultChecked;
|
|
10
|
-
|
|
10
|
+
var label = _a.label, spacing = _a.spacing, isInvalid = _a.isInvalid, color = _a.color, iconColor = _a.iconColor, iconSize = _a.iconSize, isChecked = _a.isChecked, isIndeterminate = _a.isIndeterminate, onChange = _a.onChange, isDisabled = _a.isDisabled, size = _a.size, value = _a.value, defaultChecked = _a.defaultChecked, sx = _a.sx;
|
|
11
|
+
var theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
12
|
+
return (react_1.default.createElement(react_2.Checkbox, { spacing: spacing, isInvalid: isInvalid, colorScheme: color, iconColor: iconColor, iconSize: iconSize, isChecked: isChecked, isIndeterminate: isIndeterminate, onChange: onChange, isDisabled: isDisabled, size: size, value: value, defaultChecked: defaultChecked, borderColor: theme.colors.gray[500], sx: sx }, label));
|
|
11
13
|
}
|
|
12
14
|
exports.default = CheckBox;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CheckboxProps as ChakraButtonProps } from "@chakra-ui/react";
|
|
2
|
-
export type CheckboxProps = Pick<ChakraButtonProps,
|
|
2
|
+
export type CheckboxProps = Pick<ChakraButtonProps, "spacing" | "isInvalid" | "size" | "iconColor" | "iconSize" | "isChecked" | "isIndeterminate" | "onChange" | "isDisabled" | "value" | "defaultChecked" | "sx"> & {
|
|
3
3
|
label?: string;
|
|
4
4
|
width?: string | number;
|
|
5
5
|
variant?: "solid" | "outline" | "ghost" | "link" | "unstyled";
|
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { TableProps } from "../TableProps";
|
|
3
3
|
type PaginationProps = Pick<TableProps, "isVisiblity" | "columns"> & {
|
|
4
|
-
visibleColumns: Record<string, boolean>;
|
|
5
4
|
paginationText: string;
|
|
6
5
|
handlePageSizeChange: (event: React.ChangeEvent<HTMLSelectElement>) => void;
|
|
7
6
|
rowsPerPage: number;
|
|
8
7
|
currentPage: number;
|
|
9
8
|
pages: number;
|
|
10
|
-
handleColumnVisibilityChange: (header: string | number) => void;
|
|
11
9
|
setCurrentPage: React.Dispatch<React.SetStateAction<number>>;
|
|
12
10
|
dataLength: number;
|
|
13
11
|
isServerPagination: boolean;
|
|
14
12
|
};
|
|
15
|
-
declare const Pagination: ({
|
|
13
|
+
declare const Pagination: ({ paginationText, handlePageSizeChange, rowsPerPage, currentPage, pages, setCurrentPage, dataLength, isServerPagination, }: PaginationProps) => React.JSX.Element;
|
|
16
14
|
export default Pagination;
|
|
@@ -4,23 +4,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
var react_1 = __importDefault(require("react"));
|
|
7
|
-
var icons_1 = require("@chakra-ui/icons");
|
|
8
7
|
var react_2 = require("@chakra-ui/react");
|
|
9
8
|
var fa_1 = require("react-icons/fa");
|
|
9
|
+
var table_1 = require("../../../Utils/table");
|
|
10
10
|
var Pagination = function (_a) {
|
|
11
|
-
var
|
|
12
|
-
var pageSizeOptions =
|
|
11
|
+
var paginationText = _a.paginationText, handlePageSizeChange = _a.handlePageSizeChange, rowsPerPage = _a.rowsPerPage, currentPage = _a.currentPage, pages = _a.pages, setCurrentPage = _a.setCurrentPage, dataLength = _a.dataLength, isServerPagination = _a.isServerPagination;
|
|
12
|
+
var pageSizeOptions = (0, table_1.pageSizeCalculation)(dataLength);
|
|
13
13
|
var isLeftDisabled = currentPage === 0;
|
|
14
14
|
var isRightDisabled = currentPage >= pages - 1;
|
|
15
15
|
return (react_1.default.createElement(react_2.Flex, { justify: "flex-end", align: "center", mt: 4 },
|
|
16
|
-
isVisiblity && (react_1.default.createElement(react_2.Flex, { mr: 4 },
|
|
17
|
-
react_1.default.createElement(react_2.Menu, null,
|
|
18
|
-
react_1.default.createElement(react_2.MenuButton, { as: react_2.Button, rightIcon: react_1.default.createElement(icons_1.ChevronDownIcon, null), colorScheme: "blue", variant: "ghost", size: "xs" }, "Columns"),
|
|
19
|
-
react_1.default.createElement(react_2.MenuList, { overflow: "scroll", zIndex: "2" }, columns.map(function (header, index) { return (react_1.default.createElement(react_2.MenuItem, { key: index },
|
|
20
|
-
react_1.default.createElement(react_2.Checkbox, { isChecked: visibleColumns[header.label], size: "sm", onChange: function () { return handleColumnVisibilityChange(header.label); } }, header.label))); }))))),
|
|
21
16
|
react_1.default.createElement(react_2.Text, { mr: 4, fontSize: 12 }, paginationText),
|
|
22
17
|
!isServerPagination && (react_1.default.createElement(react_2.Select, { onChange: handlePageSizeChange, value: rowsPerPage, mr: 4, size: "xs", width: 20 },
|
|
23
|
-
react_1.default.createElement("option", { value: 0 }),
|
|
18
|
+
dataLength < 100 ? react_1.default.createElement("option", { value: 0 }) : null,
|
|
24
19
|
pageSizeOptions.map(function (size, index) { return (react_1.default.createElement("option", { key: index, value: size }, size)); }))),
|
|
25
20
|
react_1.default.createElement(react_2.Flex, null,
|
|
26
21
|
react_1.default.createElement(react_2.IconButton, { mx: 1, "aria-label": "left-icon", color: isLeftDisabled ? "gray" : "black", rounded: "full", variant: isLeftDisabled ? "plain" : "ghost", onClick: function () { return setCurrentPage(0); } },
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { TableBodyPageProps } from "../TableProps";
|
|
3
|
-
declare const TableBody: ({ data, isCheckbox, columns,
|
|
3
|
+
declare const TableBody: ({ data, isCheckbox, columns, startRow, endRow, columnWidths, freezedBgColor, freezedTextColor, noBorders, handleCheckbox, selections, isLoading, onRowClick, isContent, isLink, isActionFreeze, }: TableBodyPageProps) => React.JSX.Element;
|
|
4
4
|
export default TableBody;
|
|
@@ -35,7 +35,7 @@ var fa_1 = require("react-icons/fa");
|
|
|
35
35
|
var TableActions_1 = __importDefault(require("./TableActions"));
|
|
36
36
|
var TableBody = function (_a) {
|
|
37
37
|
var _b;
|
|
38
|
-
var data = _a.data, isCheckbox = _a.isCheckbox, columns = _a.columns,
|
|
38
|
+
var data = _a.data, isCheckbox = _a.isCheckbox, columns = _a.columns, startRow = _a.startRow, endRow = _a.endRow, columnWidths = _a.columnWidths, freezedBgColor = _a.freezedBgColor, freezedTextColor = _a.freezedTextColor, noBorders = _a.noBorders, handleCheckbox = _a.handleCheckbox, selections = _a.selections, isLoading = _a.isLoading, onRowClick = _a.onRowClick, isContent = _a.isContent, isLink = _a.isLink, isActionFreeze = _a.isActionFreeze;
|
|
39
39
|
var theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
40
40
|
var _c = (0, react_2.useState)(new Set()), expandedRows = _c[0], setExpandedRows = _c[1];
|
|
41
41
|
var toggleRowExpansion = function (rowIndex) {
|
|
@@ -75,18 +75,14 @@ var TableBody = function (_a) {
|
|
|
75
75
|
var row = _a.row, bgcolor = _a.bgcolor;
|
|
76
76
|
return (react_2.default.createElement(react_1.Td, { w: 2, p: 0, fontSize: 14, backgroundColor: isActionFreeze ? freezedBgColor : bgcolor, color: freezedTextColor, position: isActionFreeze ? "sticky" : "relative", border: noBorders ? "none" : "1px solid ".concat((_b = theme.colors) === null || _b === void 0 ? void 0 : _b.gray[300]), boxSizing: "border-box", right: 0, zIndex: 1, className: "columns sticky-columns".concat(isActionFreeze ? "-right" : "") }, (row.onLink || row.onEdit || row.onDelete) && (react_2.default.createElement(TableActions_1.default, { row: row }))));
|
|
77
77
|
}, [freezedBgColor, freezedTextColor, noBorders, theme.colors, isActionFreeze]);
|
|
78
|
+
var totalVisibleColumns = Object.values(columns).filter(function (o) { return !o.isHidden; }).length +
|
|
79
|
+
(isCheckbox ? 1 : 0) +
|
|
80
|
+
(isContent ? 1 : 0) +
|
|
81
|
+
(isLink ? 1 : 0);
|
|
78
82
|
if (isLoading) {
|
|
79
|
-
var totalVisibleColumns = Object.values(visibleColumns).filter(Boolean).length +
|
|
80
|
-
(isCheckbox ? 1 : 0) +
|
|
81
|
-
(isContent ? 1 : 0) +
|
|
82
|
-
(isLink ? 1 : 0);
|
|
83
83
|
return (react_2.default.createElement(TableLoading_1.TableBodyLoading, { noOfColumns: totalVisibleColumns, borderColor: theme.colors.gray[300] }));
|
|
84
84
|
}
|
|
85
85
|
if (data.length === 0) {
|
|
86
|
-
var totalVisibleColumns = Object.values(visibleColumns).filter(Boolean).length +
|
|
87
|
-
(isCheckbox ? 1 : 0) +
|
|
88
|
-
(isContent ? 1 : 0) +
|
|
89
|
-
(isLink ? 1 : 0);
|
|
90
86
|
return (react_2.default.createElement(react_1.Tr, { backgroundColor: theme.colors.white },
|
|
91
87
|
react_2.default.createElement(react_1.Td, { colSpan: totalVisibleColumns, textAlign: "center", py: 4 },
|
|
92
88
|
react_2.default.createElement(react_1.Box, { textAlign: "center", fontSize: 14 },
|
|
@@ -109,6 +105,8 @@ var TableBody = function (_a) {
|
|
|
109
105
|
isCheckbox && react_2.default.createElement(RenderCheckbox, { row: row, isChecked: isChecked }),
|
|
110
106
|
columns.map(function (header, headerIndex) {
|
|
111
107
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
108
|
+
if (header.isHidden)
|
|
109
|
+
return null;
|
|
112
110
|
var isFrozen = header.isFreeze;
|
|
113
111
|
var leftOffset = isFrozen
|
|
114
112
|
? (0, table_1.calculateLeftOffset)(columnWidths, headerIndex) +
|
|
@@ -135,7 +133,7 @@ var TableBody = function (_a) {
|
|
|
135
133
|
rowBgColor = (_h = row.rowStyle) === null || _h === void 0 ? void 0 : _h.bg;
|
|
136
134
|
rowTextColor = (_j = row.rowStyle) === null || _j === void 0 ? void 0 : _j.color;
|
|
137
135
|
}
|
|
138
|
-
return (
|
|
136
|
+
return (react_2.default.createElement(react_1.Td, { maxWidth: 500, minWidth: 120, key: headerIndex + 1, onClick: function () {
|
|
139
137
|
return !header.node
|
|
140
138
|
? handleRowClick(row, {
|
|
141
139
|
label: header.label,
|
|
@@ -149,7 +147,7 @@ var TableBody = function (_a) {
|
|
|
149
147
|
: {
|
|
150
148
|
backgroundColor: theme.colors.gray[100],
|
|
151
149
|
} },
|
|
152
|
-
react_2.default.createElement(react_1.Box, { textOverflow: "ellipsis", whiteSpace: "nowrap", display: "block", overflow: "hidden" }, header.node ? header.node(row) : row[header.id])))
|
|
150
|
+
react_2.default.createElement(react_1.Box, { textOverflow: "ellipsis", whiteSpace: "nowrap", display: "block", overflow: "hidden" }, header.node ? header.node(row) : row[header.id])));
|
|
153
151
|
}),
|
|
154
152
|
isLink && react_2.default.createElement(RenderView, { row: row, bgcolor: freezeViewColor })),
|
|
155
153
|
row.content && isExpanded && (react_2.default.createElement(react_1.Tr, null,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { TableHeaderPageProps } from "../TableProps";
|
|
3
|
-
declare const _default: React.MemoExoticComponent<({ columns, isCheckbox,
|
|
3
|
+
declare const _default: React.MemoExoticComponent<({ columns, isCheckbox, handleSort, headerRefs, columnWidths, columnsSort, headerBgColor, headerTextColor, freezedBgColor, freezedTextColor, noBorders, handleCheckbox, checked, isLoading, isContent, isLink, isActionFreeze, setColumnsSearch, columnsSearch, }: TableHeaderPageProps) => React.JSX.Element>;
|
|
4
4
|
export default _default;
|
|
@@ -47,7 +47,7 @@ var lu_1 = require("react-icons/lu");
|
|
|
47
47
|
var TableFilters_1 = __importDefault(require("./TableFilters"));
|
|
48
48
|
var TableHeader = function (_a) {
|
|
49
49
|
var _b;
|
|
50
|
-
var columns = _a.columns, isCheckbox = _a.isCheckbox,
|
|
50
|
+
var columns = _a.columns, isCheckbox = _a.isCheckbox, handleSort = _a.handleSort, headerRefs = _a.headerRefs, columnWidths = _a.columnWidths, columnsSort = _a.columnsSort, headerBgColor = _a.headerBgColor, headerTextColor = _a.headerTextColor, freezedBgColor = _a.freezedBgColor, freezedTextColor = _a.freezedTextColor, noBorders = _a.noBorders, handleCheckbox = _a.handleCheckbox, checked = _a.checked, isLoading = _a.isLoading, isContent = _a.isContent, isLink = _a.isLink, isActionFreeze = _a.isActionFreeze, setColumnsSearch = _a.setColumnsSearch, columnsSearch = _a.columnsSearch;
|
|
51
51
|
var theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
52
52
|
var RenderCheckbox = (0, react_2.useCallback)(function () {
|
|
53
53
|
var _a;
|
|
@@ -84,7 +84,11 @@ var TableHeader = function (_a) {
|
|
|
84
84
|
return (react_2.default.createElement(react_1.Tr, { pr: 0 },
|
|
85
85
|
isContent && react_2.default.createElement(RenderConent, null),
|
|
86
86
|
isCheckbox && react_2.default.createElement(RenderCheckbox, null),
|
|
87
|
-
columns.map(function (header, index) {
|
|
87
|
+
columns.map(function (header, index) {
|
|
88
|
+
if (header === null || header === void 0 ? void 0 : header.isHidden)
|
|
89
|
+
return null;
|
|
90
|
+
return (react_2.default.createElement(ColumnHeader, { header: header, index: index, key: header.label, columnWidths: columnWidths, handleSort: handleSort, isCheckbox: isCheckbox, headerBgColor: headerBgColor, headerTextColor: headerTextColor, freezedBgColor: freezedBgColor, freezedTextColor: freezedTextColor, noBorders: noBorders, columnsSort: columnsSort, headerRefs: headerRefs, columnsSearch: columnsSearch, setColumnsSearch: setColumnsSearch }));
|
|
91
|
+
}),
|
|
88
92
|
isLink && react_2.default.createElement(RenderView, null)));
|
|
89
93
|
};
|
|
90
94
|
exports.default = (0, react_2.memo)(TableHeader);
|
|
@@ -98,7 +102,7 @@ var SortingIcon = (0, react_2.memo)(function (_a) {
|
|
|
98
102
|
});
|
|
99
103
|
var ColumnHeader = (0, react_2.memo)(function (_a) {
|
|
100
104
|
var _b;
|
|
101
|
-
var header = _a.header, index = _a.index, columnWidths = _a.columnWidths, isCheckbox = _a.isCheckbox,
|
|
105
|
+
var header = _a.header, index = _a.index, columnWidths = _a.columnWidths, isCheckbox = _a.isCheckbox, headerBgColor = _a.headerBgColor, headerTextColor = _a.headerTextColor, freezedBgColor = _a.freezedBgColor, freezedTextColor = _a.freezedTextColor, noBorders = _a.noBorders, columnsSort = _a.columnsSort, headerRefs = _a.headerRefs, columnsSearch = _a.columnsSearch, setColumnsSearch = _a.setColumnsSearch, handleSort = _a.handleSort;
|
|
102
106
|
var _c = (0, react_2.useState)(false), isHovered = _c[0], setIsHovered = _c[1];
|
|
103
107
|
var theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
104
108
|
var isFrozen = header.isFreeze;
|
|
@@ -143,7 +147,7 @@ var ColumnHeader = (0, react_2.memo)(function (_a) {
|
|
|
143
147
|
}, [handleSort]);
|
|
144
148
|
var isFiltersEnabled = (isHovered && header.isSort) ||
|
|
145
149
|
((isSorting === null || isSorting === void 0 ? void 0 : isSorting.direction) && isSorting.direction !== "none");
|
|
146
|
-
return
|
|
150
|
+
return (react_2.default.createElement(react_1.Th, { key: index + 1, ref: function (el) { return (headerRefs.current[index] = el); }, textTransform: "capitalize", color: TextColor, fontSize: 14, fontWeight: 600, position: isFrozen ? "sticky" : undefined, left: isFrozen ? leftOffset : undefined, minWidth: 120, backgroundColor: BgColor, maxWidth: 500, zIndex: isFrozen ? 2 : 1, py: 2, pr: 0, border: noBorders ? "none" : "1px solid ".concat((_b = theme.colors) === null || _b === void 0 ? void 0 : _b.gray[300]), className: "columns ".concat(isFrozen ? "sticky-columns" : "scrollable-columns"), height: 41, onMouseEnter: function () { return setIsHovered(true); }, onMouseLeave: function () { return setIsHovered(false); } },
|
|
147
151
|
react_2.default.createElement(react_1.Box, { display: "flex", color: TextColor, justifyContent: "space-between", alignItems: "center", position: "relative" },
|
|
148
152
|
react_2.default.createElement(react_1.Box, { textOverflow: "ellipsis", whiteSpace: "nowrap", display: "block", overflow: "hidden" }, header.label),
|
|
149
153
|
react_2.default.createElement(react_1.Box, { display: "flex", alignItems: "center" },
|
|
@@ -154,5 +158,5 @@ var ColumnHeader = (0, react_2.memo)(function (_a) {
|
|
|
154
158
|
return (__assign(__assign({}, prev), (_a = {}, _a[header.id] = searchVal, _a)));
|
|
155
159
|
});
|
|
156
160
|
}, columnsSearch: columnsSearch[header.id] || "", onClose: function () { return setIsHovered(false); } })),
|
|
157
|
-
react_2.default.createElement("div", { className: "resize-handle", onMouseDown: handleMouseDown }))))
|
|
161
|
+
react_2.default.createElement("div", { className: "resize-handle", onMouseDown: handleMouseDown }))));
|
|
158
162
|
});
|
|
@@ -13,7 +13,7 @@ type UseTableProps = {
|
|
|
13
13
|
isServerPagination: boolean;
|
|
14
14
|
totalRecords: number;
|
|
15
15
|
};
|
|
16
|
-
declare const useTable: ({ tableBorderColor, data, isPagination, selections,
|
|
16
|
+
declare const useTable: ({ tableBorderColor, data, isPagination, selections, onSelection, tablePreferences, savePreferences, noOfRowsPerPage, isServerPagination, totalRecords, columns, }: UseTableProps) => {
|
|
17
17
|
tableData: DataObject[];
|
|
18
18
|
tableContainerStyles: {
|
|
19
19
|
borderRadius: string;
|
|
@@ -27,7 +27,6 @@ declare const useTable: ({ tableBorderColor, data, isPagination, selections, col
|
|
|
27
27
|
isLink: boolean;
|
|
28
28
|
headerRefs: import("react").MutableRefObject<(HTMLTableCellElement | null)[]>;
|
|
29
29
|
columnWidths: number[];
|
|
30
|
-
visibleColumns: Record<string, boolean>;
|
|
31
30
|
handleSort: (field: string | number, sort: "asc" | "desc" | "none") => void;
|
|
32
31
|
handleCheckbox: (id: string | number) => void;
|
|
33
32
|
filteredData: DataObject[];
|
|
@@ -35,11 +34,12 @@ declare const useTable: ({ tableBorderColor, data, isPagination, selections, col
|
|
|
35
34
|
endRow: number;
|
|
36
35
|
selection: (string | number)[];
|
|
37
36
|
columnsSort: ColumnSortingProps[];
|
|
38
|
-
handleColumnVisibilityChange: (header: string | number) => void;
|
|
39
37
|
handlePageSizeChange: (event: React.ChangeEvent<HTMLSelectElement>) => void;
|
|
40
38
|
pages: number;
|
|
41
39
|
currentPage: number;
|
|
42
40
|
rowsPerPage: number;
|
|
43
41
|
setCurrentPage: import("react").Dispatch<import("react").SetStateAction<number>>;
|
|
42
|
+
columnsList: TableHeaderProps[];
|
|
43
|
+
handleColumnPreferences: (columns: any) => void;
|
|
44
44
|
};
|
|
45
45
|
export default useTable;
|
|
@@ -25,7 +25,7 @@ var useCustomTheme_1 = require("../../../Theme/useCustomTheme");
|
|
|
25
25
|
var table_1 = require("../../../Utils/table");
|
|
26
26
|
var defaultPageSize = 50;
|
|
27
27
|
var useTable = function (_a) {
|
|
28
|
-
var tableBorderColor = _a.tableBorderColor, data = _a.data, isPagination = _a.isPagination, selections = _a.selections,
|
|
28
|
+
var tableBorderColor = _a.tableBorderColor, data = _a.data, isPagination = _a.isPagination, selections = _a.selections, onSelection = _a.onSelection, tablePreferences = _a.tablePreferences, savePreferences = _a.savePreferences, noOfRowsPerPage = _a.noOfRowsPerPage, isServerPagination = _a.isServerPagination, totalRecords = _a.totalRecords, columns = _a.columns;
|
|
29
29
|
var theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
30
30
|
var headerRefs = (0, react_1.useRef)([]);
|
|
31
31
|
var _b = (0, react_1.useState)([]), columnWidths = _b[0], setColumnWidths = _b[1];
|
|
@@ -33,22 +33,20 @@ var useTable = function (_a) {
|
|
|
33
33
|
var _d = (0, react_1.useState)([]), columnsSort = _d[0], setColumnsSort = _d[1];
|
|
34
34
|
var _e = (0, react_1.useState)(0), currentPage = _e[0], setCurrentPage = _e[1];
|
|
35
35
|
var _f = (0, react_1.useState)(noOfRowsPerPage !== null && noOfRowsPerPage !== void 0 ? noOfRowsPerPage : defaultPageSize), rowsPerPage = _f[0], setRowsPerPage = _f[1];
|
|
36
|
-
var _g = (0, react_1.useState)({}), visibleColumns = _g[0], setVisibleColumns = _g[1];
|
|
37
36
|
var tableData = (0, react_1.useMemo)(function () { return data; }, [data]);
|
|
38
|
-
var
|
|
37
|
+
var _g = (0, react_1.useState)(tableData), filteredData = _g[0], setFilteredData = _g[1];
|
|
38
|
+
var _h = (0, react_1.useState)(columns), columnsList = _h[0], setColumnsList = _h[1];
|
|
39
|
+
(0, react_1.useEffect)(function () {
|
|
40
|
+
if (tablePreferences) {
|
|
41
|
+
var columnPreference = tablePreferences.columns;
|
|
42
|
+
if (columnPreference === null || columnPreference === void 0 ? void 0 : columnPreference.length) {
|
|
43
|
+
setColumnsList(columnPreference);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}, [tablePreferences]);
|
|
39
47
|
(0, react_1.useEffect)(function () {
|
|
40
48
|
setFilteredData(tableData);
|
|
41
49
|
}, [tableData]);
|
|
42
|
-
(0, react_1.useEffect)(function () {
|
|
43
|
-
var _a;
|
|
44
|
-
var nonVisibility = (_a = tablePreferences === null || tablePreferences === void 0 ? void 0 : tablePreferences.nonVisibility) !== null && _a !== void 0 ? _a : [];
|
|
45
|
-
var column = columns.reduce(function (acc, curr) {
|
|
46
|
-
var _a;
|
|
47
|
-
var _b;
|
|
48
|
-
return (__assign(__assign({}, acc), (_a = {}, _a[curr.label] = !nonVisibility.includes((_b = curr.id) === null || _b === void 0 ? void 0 : _b.toString().toLowerCase()), _a)));
|
|
49
|
-
}, {});
|
|
50
|
-
setVisibleColumns(column);
|
|
51
|
-
}, [columns, tablePreferences === null || tablePreferences === void 0 ? void 0 : tablePreferences.nonVisibility]);
|
|
52
50
|
var tableContainerStyles = (0, react_1.useMemo)(function () {
|
|
53
51
|
var _a;
|
|
54
52
|
return ({
|
|
@@ -133,14 +131,10 @@ var useTable = function (_a) {
|
|
|
133
131
|
setSelection(selectedItems);
|
|
134
132
|
onSelection && onSelection(selectedItems);
|
|
135
133
|
}, [onSelection, selection, tableData]);
|
|
136
|
-
var
|
|
137
|
-
|
|
138
|
-
var visibility = __assign(__assign({}, visibleColumns), (_a = {}, _a[header] = !visibleColumns[header], _a));
|
|
139
|
-
setVisibleColumns(visibility);
|
|
134
|
+
var handleColumnPreferences = function (columns) {
|
|
135
|
+
setColumnsList(columns);
|
|
140
136
|
savePreferences &&
|
|
141
|
-
savePreferences(__assign(__assign({}, tablePreferences), {
|
|
142
|
-
.filter(function (key) { return !visibility[key]; })
|
|
143
|
-
.map(function (item) { return item.toLowerCase(); }) }));
|
|
137
|
+
savePreferences(__assign(__assign({}, tablePreferences), { columns: columns }));
|
|
144
138
|
};
|
|
145
139
|
return {
|
|
146
140
|
tableData: tableData,
|
|
@@ -149,7 +143,6 @@ var useTable = function (_a) {
|
|
|
149
143
|
isLink: isLink,
|
|
150
144
|
headerRefs: headerRefs,
|
|
151
145
|
columnWidths: columnWidths,
|
|
152
|
-
visibleColumns: visibleColumns,
|
|
153
146
|
handleSort: handleSort,
|
|
154
147
|
handleCheckbox: handleCheckbox,
|
|
155
148
|
filteredData: filteredData,
|
|
@@ -157,12 +150,13 @@ var useTable = function (_a) {
|
|
|
157
150
|
endRow: endRow,
|
|
158
151
|
selection: selection,
|
|
159
152
|
columnsSort: columnsSort,
|
|
160
|
-
handleColumnVisibilityChange: handleColumnVisibilityChange,
|
|
161
153
|
handlePageSizeChange: handlePageSizeChange,
|
|
162
154
|
pages: pages,
|
|
163
155
|
currentPage: currentPage,
|
|
164
156
|
rowsPerPage: rowsPerPage,
|
|
165
157
|
setCurrentPage: setCurrentPage,
|
|
158
|
+
columnsList: columnsList,
|
|
159
|
+
handleColumnPreferences: handleColumnPreferences,
|
|
166
160
|
};
|
|
167
161
|
};
|
|
168
162
|
exports.default = useTable;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { TableProps } from "./TableProps";
|
|
3
3
|
import "./Table.css";
|
|
4
|
-
export default function Table({ data, columns, onSelection, isLoading, isCheckbox, headerBgColor, freezedBgColor, headerTextColor, freezedTextColor, tableBorderColor, noBorders, isPagination, onRowClick, selections, isActionFreeze, preferencesUrl, preferencesKey, preferencesName, preferencesPage, authToken, paginationMode, noOfRowsPerPage, totalRecords, onPagination, }: TableProps): React.JSX.Element;
|
|
4
|
+
export default function Table({ data, columns, onSelection, isLoading, isCheckbox, headerBgColor, freezedBgColor, headerTextColor, freezedTextColor, tableBorderColor, noBorders, isPagination, onRowClick, selections, isActionFreeze, preferencesUrl, preferencesKey, preferencesName, preferencesPage, authToken, paginationMode, noOfRowsPerPage, totalRecords, onPagination, isTableSettings, }: TableProps): React.JSX.Element;
|
|
@@ -37,19 +37,20 @@ var useTable_1 = __importDefault(require("./Components/useTable"));
|
|
|
37
37
|
require("./Table.css");
|
|
38
38
|
var table_1 = require("../../Utils/table");
|
|
39
39
|
var usePreferences_1 = require("../../Hooks/usePreferences");
|
|
40
|
+
var TableSettings_1 = __importDefault(require("./TableSettings/TableSettings"));
|
|
40
41
|
function Table(_a) {
|
|
41
42
|
var _b, _c, _d;
|
|
42
|
-
var data = _a.data, columns = _a.columns, onSelection = _a.onSelection, isLoading = _a.isLoading, _e = _a.isCheckbox, isCheckbox = _e === void 0 ? false : _e, headerBgColor = _a.headerBgColor, freezedBgColor = _a.freezedBgColor, headerTextColor = _a.headerTextColor, freezedTextColor = _a.freezedTextColor, tableBorderColor = _a.tableBorderColor, _f = _a.noBorders, noBorders = _f === void 0 ? false : _f, _g = _a.isPagination, isPagination = _g === void 0 ? true : _g, onRowClick = _a.onRowClick, selections = _a.selections, _h = _a.isActionFreeze, isActionFreeze = _h === void 0 ? true : _h, _j = _a.preferencesUrl, preferencesUrl = _j === void 0 ? "
|
|
43
|
+
var data = _a.data, columns = _a.columns, onSelection = _a.onSelection, isLoading = _a.isLoading, _e = _a.isCheckbox, isCheckbox = _e === void 0 ? false : _e, headerBgColor = _a.headerBgColor, freezedBgColor = _a.freezedBgColor, headerTextColor = _a.headerTextColor, freezedTextColor = _a.freezedTextColor, tableBorderColor = _a.tableBorderColor, _f = _a.noBorders, noBorders = _f === void 0 ? false : _f, _g = _a.isPagination, isPagination = _g === void 0 ? true : _g, onRowClick = _a.onRowClick, selections = _a.selections, _h = _a.isActionFreeze, isActionFreeze = _h === void 0 ? true : _h, _j = _a.preferencesUrl, preferencesUrl = _j === void 0 ? "" : _j, _k = _a.preferencesKey, preferencesKey = _k === void 0 ? "" : _k, _l = _a.preferencesName, preferencesName = _l === void 0 ? "" : _l, _m = _a.preferencesPage, preferencesPage = _m === void 0 ? "" : _m, _o = _a.authToken, authToken = _o === void 0 ? "" : _o, _p = _a.paginationMode, paginationMode = _p === void 0 ? "client" : _p, _q = _a.noOfRowsPerPage, noOfRowsPerPage = _q === void 0 ? 50 : _q, _r = _a.totalRecords, totalRecords = _r === void 0 ? 0 : _r, onPagination = _a.onPagination, _s = _a.isTableSettings, isTableSettings = _s === void 0 ? false : _s;
|
|
43
44
|
var theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
44
|
-
var
|
|
45
|
+
var _t = (0, react_1.useState)({}), columnsSearch = _t[0], setColumnsSearch = _t[1];
|
|
45
46
|
var isServerPagination = paginationMode === "server";
|
|
46
|
-
var
|
|
47
|
+
var _u = (0, usePreferences_1.useGetPreferences)({
|
|
47
48
|
baseUrl: preferencesUrl,
|
|
48
49
|
page: preferencesPage,
|
|
49
50
|
key: preferencesKey,
|
|
50
51
|
name: preferencesName,
|
|
51
52
|
authToken: authToken,
|
|
52
|
-
}), preferences =
|
|
53
|
+
}), preferences = _u.preferences, loading = _u.loading;
|
|
53
54
|
var savePreferences = (0, usePreferences_1.useSavePreferences)({
|
|
54
55
|
baseUrl: preferencesUrl,
|
|
55
56
|
page: preferencesPage,
|
|
@@ -66,7 +67,7 @@ function Table(_a) {
|
|
|
66
67
|
}
|
|
67
68
|
return {};
|
|
68
69
|
}, [preferences]);
|
|
69
|
-
var
|
|
70
|
+
var _v = (0, useTable_1.default)({
|
|
70
71
|
tableBorderColor: tableBorderColor,
|
|
71
72
|
data: data,
|
|
72
73
|
isPagination: isPagination,
|
|
@@ -78,7 +79,7 @@ function Table(_a) {
|
|
|
78
79
|
noOfRowsPerPage: noOfRowsPerPage,
|
|
79
80
|
totalRecords: totalRecords,
|
|
80
81
|
isServerPagination: isServerPagination,
|
|
81
|
-
}), tableData =
|
|
82
|
+
}), tableData = _v.tableData, tableContainerStyles = _v.tableContainerStyles, isContent = _v.isContent, isLink = _v.isLink, headerRefs = _v.headerRefs, columnWidths = _v.columnWidths, handleSort = _v.handleSort, handleCheckbox = _v.handleCheckbox, filteredData = _v.filteredData, startRow = _v.startRow, endRow = _v.endRow, selection = _v.selection, columnsSort = _v.columnsSort, currentPage = _v.currentPage, pages = _v.pages, rowsPerPage = _v.rowsPerPage, handlePageSizeChange = _v.handlePageSizeChange, setCurrentPage = _v.setCurrentPage, columnsList = _v.columnsList, handleColumnPreferences = _v.handleColumnPreferences;
|
|
82
83
|
var _filteredData = (0, react_1.useMemo)(function () {
|
|
83
84
|
return (0, table_1.searchAndSortData)(filteredData, columnsSearch);
|
|
84
85
|
}, [columnsSearch, filteredData]);
|
|
@@ -88,16 +89,17 @@ function Table(_a) {
|
|
|
88
89
|
}
|
|
89
90
|
}, [currentPage, onPagination, noOfRowsPerPage]);
|
|
90
91
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
92
|
+
isTableSettings && (react_1.default.createElement(TableSettings_1.default, { columns: columnsList, onSave: function (cols) { return handleColumnPreferences(cols); } })),
|
|
91
93
|
react_1.default.createElement(react_2.TableContainer, { sx: tableContainerStyles },
|
|
92
94
|
react_1.default.createElement(react_3.Table, { variant: "simple", size: "sm", overflowX: "scroll", minW: "100%", className: "table_wrapper" },
|
|
93
95
|
react_1.default.createElement(react_3.Thead, { position: "sticky", top: 0, zIndex: 2 },
|
|
94
|
-
react_1.default.createElement(TableHeader_1.default, { columns:
|
|
96
|
+
react_1.default.createElement(TableHeader_1.default, { columns: columnsList, 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], handleSort: handleSort, headerRefs: headerRefs, columnWidths: columnWidths, columnsSort: columnsSort, noBorders: noBorders, handleCheckbox: handleCheckbox, isLoading: isTableLoading, checked: tableData.length !== 0 && selection.length === tableData.length
|
|
95
97
|
? true
|
|
96
98
|
: selection.length === 0
|
|
97
99
|
? false
|
|
98
100
|
: "indeterminate", isContent: isContent, isLink: isLink, isActionFreeze: isActionFreeze, setColumnsSearch: setColumnsSearch, columnsSearch: columnsSearch })),
|
|
99
101
|
react_1.default.createElement(react_3.Tbody, null,
|
|
100
|
-
react_1.default.createElement(TableBody_1.default, { data: _filteredData, columns:
|
|
101
|
-
(isPagination || isServerPagination) && (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(isServerPagination ? totalRecords : tableData.length), handlePageSizeChange: handlePageSizeChange, dataLength: tableData.length, isServerPagination: isServerPagination,
|
|
102
|
+
react_1.default.createElement(TableBody_1.default, { data: _filteredData, columns: columnsList, startRow: startRow, endRow: endRow, 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, isLoading: isTableLoading, onRowClick: onRowClick, isContent: isContent, isLink: isLink, isActionFreeze: isActionFreeze })))),
|
|
103
|
+
(isPagination || isServerPagination) && (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(isServerPagination ? totalRecords : tableData.length), handlePageSizeChange: handlePageSizeChange, dataLength: tableData.length, isServerPagination: isServerPagination, isVisiblity: true }))));
|
|
102
104
|
}
|
|
103
105
|
exports.default = Table;
|
|
@@ -28,6 +28,7 @@ export type TableProps = {
|
|
|
28
28
|
noOfRowsPerPage?: number;
|
|
29
29
|
totalRecords?: number;
|
|
30
30
|
onPagination?: (page: number, noOfRecords: number) => void;
|
|
31
|
+
isTableSettings?: boolean;
|
|
31
32
|
};
|
|
32
33
|
export type DataObject = {
|
|
33
34
|
[key: string]: string | number | any;
|
|
@@ -38,6 +39,7 @@ export type TableHeaderProps = {
|
|
|
38
39
|
isSort?: boolean;
|
|
39
40
|
isSearch?: boolean;
|
|
40
41
|
isFreeze?: boolean;
|
|
42
|
+
isHidden?: boolean;
|
|
41
43
|
node?: (data: DataObject) => JSX.Element | string | number | undefined;
|
|
42
44
|
};
|
|
43
45
|
export type ExportOption = {
|
|
@@ -49,7 +51,6 @@ export type ColumnSortingProps = {
|
|
|
49
51
|
direction: "asc" | "desc" | "none";
|
|
50
52
|
};
|
|
51
53
|
export type TableHeaderPageProps = Pick<TableProps, "columns" | "isCheckbox" | "headerBgColor" | "headerTextColor" | "freezedBgColor" | "freezedTextColor" | "noBorders" | "isLoading" | "isActionFreeze"> & {
|
|
52
|
-
visibleColumns: Record<string, boolean>;
|
|
53
54
|
handleSort: (label: string | number, type: "asc" | "desc" | "none") => void;
|
|
54
55
|
activeHeader?: string | null;
|
|
55
56
|
isPopoverOpen?: boolean;
|
|
@@ -67,7 +68,6 @@ export type TableHeaderPageProps = Pick<TableProps, "columns" | "isCheckbox" | "
|
|
|
67
68
|
columnsSearch: Record<string, string>;
|
|
68
69
|
};
|
|
69
70
|
export type TableBodyPageProps = Pick<TableProps, "columns" | "isCheckbox" | "data" | "freezedBgColor" | "freezedTextColor" | "noBorders" | "isLoading" | "onRowClick" | "isActionFreeze"> & {
|
|
70
|
-
visibleColumns: Record<string, boolean>;
|
|
71
71
|
startRow: number;
|
|
72
72
|
endRow: number;
|
|
73
73
|
columnWidths: number[];
|
|
@@ -82,7 +82,7 @@ export type TableFiltersProps = {
|
|
|
82
82
|
columnsSearch: string;
|
|
83
83
|
onClose: () => void;
|
|
84
84
|
};
|
|
85
|
-
export type ColumnHeaderProps = Pick<TableProps, "isCheckbox" | "headerBgColor" | "headerTextColor" | "freezedBgColor" | "freezedTextColor" | "noBorders"> & Pick<TableHeaderPageProps, "handleSort" | "
|
|
85
|
+
export type ColumnHeaderProps = Pick<TableProps, "isCheckbox" | "headerBgColor" | "headerTextColor" | "freezedBgColor" | "freezedTextColor" | "noBorders"> & Pick<TableHeaderPageProps, "handleSort" | "columnsSort"> & {
|
|
86
86
|
header: TableHeaderProps;
|
|
87
87
|
index: number;
|
|
88
88
|
columnWidths: number[];
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { TableProps } from "../TableProps";
|
|
3
|
+
type ManageColumnsMethods = {
|
|
4
|
+
getManageColumnsData: () => TableProps["columns"];
|
|
5
|
+
};
|
|
6
|
+
declare const ManageColumns: ({ columns, childInputMethodsRef, }: {
|
|
7
|
+
columns: TableProps["columns"];
|
|
8
|
+
childInputMethodsRef: React.Ref<ManageColumnsMethods>;
|
|
9
|
+
}) => React.JSX.Element;
|
|
10
|
+
export default ManageColumns;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
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
|
+
};
|
|
36
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
37
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
38
|
+
if (ar || !(i in from)) {
|
|
39
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
40
|
+
ar[i] = from[i];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
44
|
+
};
|
|
45
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
46
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
47
|
+
};
|
|
48
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
49
|
+
var react_1 = __importStar(require("react"));
|
|
50
|
+
var react_2 = require("@chakra-ui/react");
|
|
51
|
+
var rx_1 = require("react-icons/rx");
|
|
52
|
+
var Checkbox_1 = __importDefault(require("../../Checkbox/Checkbox"));
|
|
53
|
+
var useCustomTheme_1 = require("../../../Theme/useCustomTheme");
|
|
54
|
+
var ManageColumns = function (_a) {
|
|
55
|
+
var columns = _a.columns, childInputMethodsRef = _a.childInputMethodsRef;
|
|
56
|
+
var theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
57
|
+
var _b = (0, react_1.useState)(columns.map(function (o) { return (__assign(__assign({}, o), { isHidden: !o.isHidden })); })), items = _b[0], setItems = _b[1];
|
|
58
|
+
var _c = (0, react_1.useState)(""), searchTerm = _c[0], setSearchTerm = _c[1];
|
|
59
|
+
var _d = (0, react_1.useState)(null), draggedItemIndex = _d[0], setDraggedItemIndex = _d[1];
|
|
60
|
+
(0, react_1.useImperativeHandle)(childInputMethodsRef, function () {
|
|
61
|
+
return {
|
|
62
|
+
getManageColumnsData: function () {
|
|
63
|
+
return items.map(function (o) { return (__assign(__assign({}, o), { isHidden: !o.isHidden })); });
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
}, [items]);
|
|
67
|
+
var handleDragStart = function (index) {
|
|
68
|
+
setDraggedItemIndex(index);
|
|
69
|
+
};
|
|
70
|
+
var handleDragOver = function (e, index) {
|
|
71
|
+
e.preventDefault();
|
|
72
|
+
if (draggedItemIndex === null || draggedItemIndex === index)
|
|
73
|
+
return;
|
|
74
|
+
var newItems = __spreadArray([], items, true);
|
|
75
|
+
var draggedItem = newItems[draggedItemIndex];
|
|
76
|
+
newItems.splice(draggedItemIndex, 1);
|
|
77
|
+
newItems.splice(index, 0, draggedItem);
|
|
78
|
+
setDraggedItemIndex(index);
|
|
79
|
+
setItems(newItems);
|
|
80
|
+
};
|
|
81
|
+
var handleDragEnd = function () {
|
|
82
|
+
setDraggedItemIndex(null);
|
|
83
|
+
};
|
|
84
|
+
var toggleCheckbox = function (index) {
|
|
85
|
+
var newItems = __spreadArray([], items, true);
|
|
86
|
+
newItems[index].isHidden = !newItems[index].isHidden;
|
|
87
|
+
setItems(newItems);
|
|
88
|
+
};
|
|
89
|
+
var filteredItems = items.filter(function (item) {
|
|
90
|
+
return item.label.toString().toLowerCase().includes(searchTerm.toLowerCase());
|
|
91
|
+
});
|
|
92
|
+
return (react_1.default.createElement(react_2.Box, { mt: "5" },
|
|
93
|
+
react_1.default.createElement(react_2.Input, { placeholder: "Search", mb: "4", value: searchTerm, onChange: function (e) { return setSearchTerm(e.target.value); } }),
|
|
94
|
+
!searchTerm.length && (react_1.default.createElement(react_2.Flex, { align: "center", mb: "2" },
|
|
95
|
+
react_1.default.createElement(Checkbox_1.default, { isChecked: items.every(function (item) { return item.isHidden; }), onChange: function () {
|
|
96
|
+
var allChecked = items.every(function (item) { return item.isHidden; });
|
|
97
|
+
setItems(items.map(function (item) { return (__assign(__assign({}, item), { isHidden: !allChecked })); }));
|
|
98
|
+
} }),
|
|
99
|
+
react_1.default.createElement(react_2.Text, { ml: "2", fontSize: 14 }, "Select all"))),
|
|
100
|
+
react_1.default.createElement(react_2.List, { spacing: "2" }, filteredItems.length > 0 ? (filteredItems.map(function (item, index) { return (react_1.default.createElement(react_2.ListItem, { key: item.id, draggable: true, onDragStart: function () { return handleDragStart(index); }, onDragOver: function (e) { return handleDragOver(e, index); }, onDragEnd: handleDragEnd, bg: theme.colors.gray[50], display: "flex", alignItems: "center", justifyContent: "space-between", borderRadius: "md", border: "1px solid", borderColor: "gray.200", cursor: "grab", position: "relative", fontSize: 14 },
|
|
101
|
+
react_1.default.createElement(react_2.IconButton, { "aria-label": "Drag", icon: react_1.default.createElement(rx_1.RxDragHandleDots2, null), variant: "ghost", cursor: "grab", mr: "8" }),
|
|
102
|
+
react_1.default.createElement(Checkbox_1.default, { isChecked: item.isHidden, onChange: function () { return toggleCheckbox(index); }, sx: {
|
|
103
|
+
position: "absolute",
|
|
104
|
+
left: 50,
|
|
105
|
+
padding: "10px 20px 10px 30px",
|
|
106
|
+
width: 60,
|
|
107
|
+
translate: "-40px",
|
|
108
|
+
} }),
|
|
109
|
+
react_1.default.createElement(react_2.Text, { flex: "1" }, item.label))); })) : (react_1.default.createElement(react_2.Text, { color: "gray.500", textAlign: "center" }, "No items found")))));
|
|
110
|
+
};
|
|
111
|
+
exports.default = ManageColumns;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { TableProps } from "../TableProps";
|
|
3
|
+
declare const TableSettings: ({ columns, onSave, }: {
|
|
4
|
+
columns: TableProps["columns"];
|
|
5
|
+
onSave: (updatedColumns: TableProps["columns"]) => void;
|
|
6
|
+
}) => React.JSX.Element;
|
|
7
|
+
export default TableSettings;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
var react_1 = require("@chakra-ui/react");
|
|
30
|
+
var react_2 = __importStar(require("react"));
|
|
31
|
+
var ManageColumns_1 = __importDefault(require("./ManageColumns"));
|
|
32
|
+
var io5_1 = require("react-icons/io5");
|
|
33
|
+
var Button_1 = __importDefault(require("../../Button/Button"));
|
|
34
|
+
var useCustomTheme_1 = require("../../../Theme/useCustomTheme");
|
|
35
|
+
var TableSettings = function (_a) {
|
|
36
|
+
var columns = _a.columns, onSave = _a.onSave;
|
|
37
|
+
var theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
38
|
+
var childInputMethodsRef = (0, react_2.useRef)({});
|
|
39
|
+
var _b = (0, react_2.useState)(false), settingsOpen = _b[0], setSettingsOpen = _b[1];
|
|
40
|
+
var _c = (0, react_2.useState)(0), selectedIndex = _c[0], setSelectedIndex = _c[1];
|
|
41
|
+
return (react_2.default.createElement(react_1.Box, null,
|
|
42
|
+
react_2.default.createElement(react_1.Box, { display: "flex", justifyContent: "flex-end", mb: 1 },
|
|
43
|
+
react_2.default.createElement(react_1.IconButton, { onClick: function () { return setSettingsOpen(true); }, "aria-label": "Table Settings", border: "1px solid ".concat(theme.colors.gray[300]) },
|
|
44
|
+
react_2.default.createElement(io5_1.IoSettingsOutline, { fontSize: 18 }))),
|
|
45
|
+
react_2.default.createElement(react_1.Modal, { isOpen: settingsOpen, onClose: function () { return setSettingsOpen(false); }, size: "md" },
|
|
46
|
+
react_2.default.createElement(react_1.ModalOverlay, null),
|
|
47
|
+
react_2.default.createElement(react_1.ModalContent, { minW: "700px", minH: "600px" },
|
|
48
|
+
react_2.default.createElement(react_1.ModalHeader, null, "Table Settings"),
|
|
49
|
+
react_2.default.createElement(react_1.ModalCloseButton, null),
|
|
50
|
+
react_2.default.createElement(react_1.ModalBody, null,
|
|
51
|
+
react_2.default.createElement(react_1.Tabs, { index: selectedIndex, onChange: setSelectedIndex, orientation: "vertical", variant: "unstyled" },
|
|
52
|
+
react_2.default.createElement(react_1.TabList, { whiteSpace: "nowrap", minWidth: 160, height: "fit-content" },
|
|
53
|
+
react_2.default.createElement(react_1.Tab, { _selected: {
|
|
54
|
+
borderLeft: "2px solid ".concat(theme.colors.primary[600]),
|
|
55
|
+
}, fontSize: "14px", justifyContent: "flex-start" }, "Manage columns")),
|
|
56
|
+
react_2.default.createElement(react_1.TabPanels, null,
|
|
57
|
+
react_2.default.createElement(react_1.TabPanel, null,
|
|
58
|
+
react_2.default.createElement(ManageColumns_1.default, { columns: columns, childInputMethodsRef: childInputMethodsRef })),
|
|
59
|
+
react_2.default.createElement(react_1.TabPanel, null,
|
|
60
|
+
react_2.default.createElement(react_1.Text, null, "Font size settings")),
|
|
61
|
+
react_2.default.createElement(react_1.TabPanel, null,
|
|
62
|
+
react_2.default.createElement(react_1.Text, null, "Density settings")),
|
|
63
|
+
react_2.default.createElement(react_1.TabPanel, null,
|
|
64
|
+
react_2.default.createElement(react_1.Text, null, "Scrollbar settings"))))),
|
|
65
|
+
react_2.default.createElement(react_1.ModalFooter, null,
|
|
66
|
+
react_2.default.createElement(Button_1.default, { label: "Close", size: "sm", onClick: function () { return setSettingsOpen(false); }, sx: { marginRight: "0.5rem" }, color: "gray" }),
|
|
67
|
+
react_2.default.createElement(Button_1.default, { label: "Save", size: "sm", onClick: function () {
|
|
68
|
+
var _a, _b, _c;
|
|
69
|
+
onSave((_c = (_b = (_a = childInputMethodsRef.current) === null || _a === void 0 ? void 0 : _a.getManageColumnsData) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : []);
|
|
70
|
+
setSettingsOpen(false);
|
|
71
|
+
} }))))));
|
|
72
|
+
};
|
|
73
|
+
exports.default = TableSettings;
|
|
@@ -46,6 +46,8 @@ var useSavePreferences = function (_a) {
|
|
|
46
46
|
var _h = (0, react_1.useState)(null), error = _h[0], setError = _h[1];
|
|
47
47
|
var savePreferences = function (data) {
|
|
48
48
|
if (data === void 0) { data = {}; }
|
|
49
|
+
if (!baseUrl)
|
|
50
|
+
return;
|
|
49
51
|
setLoading(true);
|
|
50
52
|
fetch(baseUrl, {
|
|
51
53
|
method: "POST",
|
package/dist/Utils/table.d.ts
CHANGED
|
@@ -9,3 +9,4 @@ export declare const getFieldType: (header: string, data: DataObject[]) => "stri
|
|
|
9
9
|
export declare const calculateLeftOffset: (columns: number[], index: number) => number;
|
|
10
10
|
export declare const searchAndSortData: (data: DataObject[], searchValues: Record<string, string>) => DataObject[];
|
|
11
11
|
export declare function debounce<T extends (...args: any[]) => void>(func: T, delay: number): (...args: Parameters<T>) => void;
|
|
12
|
+
export declare const pageSizeCalculation: (records: number) => number[];
|
package/dist/Utils/table.js
CHANGED
|
@@ -9,7 +9,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
9
9
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.debounce = exports.searchAndSortData = exports.calculateLeftOffset = exports.getFieldType = exports.getPreviousColumnWidth = exports.SortMultiColumnData = void 0;
|
|
12
|
+
exports.pageSizeCalculation = exports.debounce = exports.searchAndSortData = exports.calculateLeftOffset = exports.getFieldType = exports.getPreviousColumnWidth = exports.SortMultiColumnData = void 0;
|
|
13
13
|
function SortMultiColumnData(data, sortConfig) {
|
|
14
14
|
if (!sortConfig.length)
|
|
15
15
|
return data;
|
|
@@ -96,3 +96,14 @@ function debounce(func, delay) {
|
|
|
96
96
|
};
|
|
97
97
|
}
|
|
98
98
|
exports.debounce = debounce;
|
|
99
|
+
var pageSizeCalculation = function (records) {
|
|
100
|
+
var pageSize = [5, 10];
|
|
101
|
+
if (records > 100) {
|
|
102
|
+
return [25, 50, 100];
|
|
103
|
+
}
|
|
104
|
+
else if (records > 50) {
|
|
105
|
+
return [5, 10, 20];
|
|
106
|
+
}
|
|
107
|
+
return pageSize;
|
|
108
|
+
};
|
|
109
|
+
exports.pageSizeCalculation = pageSizeCalculation;
|