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
|
@@ -1,54 +1,72 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
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;
|
|
4
24
|
};
|
|
5
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
var react_1 =
|
|
26
|
+
var react_1 = __importStar(require("react"));
|
|
7
27
|
var react_2 = require("@chakra-ui/react");
|
|
8
28
|
var fi_1 = require("react-icons/fi");
|
|
9
29
|
var useCustomTheme_1 = require("../../Theme/useCustomTheme");
|
|
30
|
+
var Sidebar_1 = require("../../Constants/Sidebar");
|
|
10
31
|
function Sidebar(_a) {
|
|
32
|
+
var _b, _c;
|
|
11
33
|
var menus = _a.menus, activeMenu = _a.activeMenu, handleMenuClick = _a.handleMenuClick, toggle = _a.toggle, changeToggle = _a.changeToggle, logo = _a.logo, companyName = _a.companyName;
|
|
12
34
|
var theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
13
|
-
|
|
14
|
-
react_1.default.createElement(
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
react_1.default.createElement(react_2.
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
"&::-webkit-scrollbar": {
|
|
23
|
-
width: "3px",
|
|
24
|
-
},
|
|
25
|
-
"&::-webkit-scrollbar-track": {
|
|
26
|
-
background: "transparent",
|
|
27
|
-
},
|
|
28
|
-
"&::-webkit-scrollbar-thumb": {
|
|
29
|
-
background: "transparent",
|
|
30
|
-
transition: "background 0.5s",
|
|
31
|
-
},
|
|
32
|
-
"&:hover::-webkit-scrollbar-thumb": {
|
|
33
|
-
background: "#888",
|
|
34
|
-
},
|
|
35
|
-
// scrollbarWidth: "thin",
|
|
36
|
-
// scrollbarColor: "transparent transparent",
|
|
37
|
-
// "&:hover": {
|
|
38
|
-
// scrollbarColor: "#888 transparent",
|
|
39
|
-
// },
|
|
40
|
-
}, ml: toggle ? "-8px" : "0px" }, menus.map(function (menu) { return (react_1.default.createElement(react_2.Menu, { key: menu.title, placement: "right" },
|
|
41
|
-
react_1.default.createElement(react_2.Link, { backgroundColor: activeMenu === menu.title ? theme.colors.primary[500] : "none", borderRadius: 8, _hover: {
|
|
35
|
+
var RenderMenuItems = (0, react_1.useCallback)(function () {
|
|
36
|
+
return (react_1.default.createElement(react_1.default.Fragment, null, menus.map(function (menu) {
|
|
37
|
+
var _a, _b;
|
|
38
|
+
return (react_1.default.createElement(react_2.Menu, { key: menu.title, placement: "right" },
|
|
39
|
+
react_1.default.createElement(react_2.Link, { backgroundColor: activeMenu === menu.title && !toggle
|
|
40
|
+
? theme.colors.primary[500]
|
|
41
|
+
: "none",
|
|
42
|
+
// borderRadius={8}
|
|
43
|
+
_hover: {
|
|
42
44
|
textDecor: "none",
|
|
43
|
-
backgroundColor: theme.colors.primary[500],
|
|
44
|
-
color:
|
|
45
|
-
}, _active: { color:
|
|
46
|
-
react_1.default.createElement(react_2.MenuButton, { w: "100%", p: "
|
|
47
|
-
react_1.default.createElement(react_2.Flex,
|
|
48
|
-
react_1.default.createElement(react_2.Icon, { as: menu.icon, fontSize: "xl", color: activeMenu === menu.title
|
|
49
|
-
|
|
45
|
+
backgroundColor: !toggle && theme.colors.primary[500],
|
|
46
|
+
color: toggle ? (_a = theme.colors) === null || _a === void 0 ? void 0 : _a.primary[500] : theme.colors.white,
|
|
47
|
+
}, _active: { color: theme.colors.white }, w: "98%", onClick: function () { return handleMenuClick(menu === null || menu === void 0 ? void 0 : menu.title, menu === null || menu === void 0 ? void 0 : menu.url); }, mt: "5px", className: "custom-link", width: toggle ? "none" : "100%" },
|
|
48
|
+
react_1.default.createElement(react_2.MenuButton, { w: "100%", p: "12px", fontWeight: 700 },
|
|
49
|
+
react_1.default.createElement(react_2.Flex, { gap: "10px" },
|
|
50
|
+
react_1.default.createElement(react_2.Icon, { as: menu.icon, fontSize: "xl", color: activeMenu === menu.title
|
|
51
|
+
? toggle
|
|
52
|
+
? theme.colors.primary["500"]
|
|
53
|
+
: "white"
|
|
54
|
+
: "" }),
|
|
55
|
+
react_1.default.createElement(react_2.Text, { display: toggle ? "none" : "flex", color: activeMenu === menu.title ? (_b = theme.colors) === null || _b === void 0 ? void 0 : _b.white : "" }, menu.title)))),
|
|
50
56
|
menu.subMenu && (react_1.default.createElement(react_2.MenuList, { py: 0, border: "none", ml: toggle ? 3 : 6, boxShadow: "0 4px 12px 0 rgba(0, 0, 0, 0.05)" },
|
|
51
57
|
react_1.default.createElement(react_2.Flex, { pos: "absolute", mt: "calc(100px - 70px)", ml: "-10px", width: 0, height: 0, borderTop: "10px solid transparent", borderBottom: "10px solid transparent", borderRight: "10px solid #3182CE" }),
|
|
52
|
-
menu.subMenu.map(function (subMenuItem) { return (react_1.default.createElement(react_2.MenuItem, { key: subMenuItem.title }, subMenuItem.title)); })))));
|
|
58
|
+
menu.subMenu.map(function (subMenuItem) { return (react_1.default.createElement(react_2.MenuItem, { key: subMenuItem.title }, subMenuItem.title)); })))));
|
|
59
|
+
})));
|
|
60
|
+
}, [activeMenu, menus, handleMenuClick, toggle, theme.colors]);
|
|
61
|
+
return (react_1.default.createElement(react_2.Flex, { pos: "sticky", h: "100vh", boxShadow: theme.shadows.lg, w: toggle ? "75px" : "200px", flexDir: "column", justifyContent: "space-between", background: theme.colors.backgroundColor.light },
|
|
62
|
+
react_1.default.createElement(react_2.Flex, { flexDir: "column", w: "100%", alignItems: "center", as: "nav", h: "100vh" },
|
|
63
|
+
logo ? (react_1.default.createElement(react_2.Flex, { mt: 5, alignItems: "center", gap: 5 },
|
|
64
|
+
react_1.default.createElement(react_2.Image, { borderRadius: "full", boxSize: "45px", src: logo, alt: "Company Logo" }),
|
|
65
|
+
react_1.default.createElement(react_2.Text, { display: toggle ? "none" : "flex", fontSize: 20, fontWeight: 800 }, companyName))) : (react_1.default.createElement(react_2.Box, { ml: "-8px", mt: 5, width: "100%", display: "flex", justifyContent: "center", alignItems: "center" },
|
|
66
|
+
react_1.default.createElement(react_2.Text, { fontWeight: 800, fontSize: "1.3rem", textAlign: "center" }, toggle ? companyName[0] : companyName))),
|
|
67
|
+
react_1.default.createElement(react_2.Flex, { position: "absolute", left: toggle ? "55px" : "180px", top: "60px", background: theme.colors.primary[500], borderRadius: "23px" },
|
|
68
|
+
react_1.default.createElement(react_2.IconButton, { background: "none", icon: toggle ? (react_1.default.createElement(fi_1.FiChevronRight, { color: (_b = theme.colors) === null || _b === void 0 ? void 0 : _b.white })) : (react_1.default.createElement(fi_1.FiChevronLeft, { color: (_c = theme.colors) === null || _c === void 0 ? void 0 : _c.white })), _hover: { background: "none" }, onClick: changeToggle, "aria-label": "Toggle Navigation" })),
|
|
69
|
+
react_1.default.createElement(react_2.Flex, { mt: 35, flexDir: "column", w: "100%", alignItems: toggle ? "center" : "flex-start", h: "100vh", overflow: "auto", css: Sidebar_1.FlexCss },
|
|
70
|
+
react_1.default.createElement(RenderMenuItems, null)))));
|
|
53
71
|
}
|
|
54
72
|
exports.default = Sidebar;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { TableProps } from "../TableProps";
|
|
3
|
+
type PaginationProps = Pick<TableProps, "isVisiblity" | "columns"> & {
|
|
4
|
+
visibleColumns: Record<string, boolean>;
|
|
5
|
+
paginationText: string;
|
|
6
|
+
handlePageSizeChange: (event: React.ChangeEvent<HTMLSelectElement>) => void;
|
|
7
|
+
rowsPerPage: number;
|
|
8
|
+
currentPage: number;
|
|
9
|
+
pages: number;
|
|
10
|
+
handleColumnVisibilityChange: (header: string) => void;
|
|
11
|
+
setCurrentPage: React.Dispatch<React.SetStateAction<number>>;
|
|
12
|
+
dataLength: number;
|
|
13
|
+
};
|
|
14
|
+
declare const Pagination: ({ isVisiblity, columns, visibleColumns, paginationText, handlePageSizeChange, rowsPerPage, currentPage, pages, handleColumnVisibilityChange, setCurrentPage, dataLength, }: PaginationProps) => React.JSX.Element;
|
|
15
|
+
export default Pagination;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
var react_1 = __importDefault(require("react"));
|
|
7
|
+
var icons_1 = require("@chakra-ui/icons");
|
|
8
|
+
var react_2 = require("@chakra-ui/react");
|
|
9
|
+
var fa_1 = require("react-icons/fa");
|
|
10
|
+
var Pagination = function (_a) {
|
|
11
|
+
var isVisiblity = _a.isVisiblity, columns = _a.columns, visibleColumns = _a.visibleColumns, paginationText = _a.paginationText, handlePageSizeChange = _a.handlePageSizeChange, rowsPerPage = _a.rowsPerPage, currentPage = _a.currentPage, pages = _a.pages, handleColumnVisibilityChange = _a.handleColumnVisibilityChange, setCurrentPage = _a.setCurrentPage, dataLength = _a.dataLength;
|
|
12
|
+
var pageSizeOptions = [1, 2, 3, 4, 5, 10, 20, 30, 40, 50, 75, 100].filter(function (size) { return size <= dataLength; });
|
|
13
|
+
var isLeftDisabled = currentPage === 0;
|
|
14
|
+
var isRightDisabled = currentPage >= pages - 1;
|
|
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
|
+
react_1.default.createElement(react_2.Text, { mr: 4, fontSize: 12 }, paginationText),
|
|
22
|
+
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 }),
|
|
24
|
+
pageSizeOptions.map(function (size, index) { return (react_1.default.createElement("option", { key: index, value: size }, size)); })),
|
|
25
|
+
react_1.default.createElement(react_2.Flex, null,
|
|
26
|
+
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); } },
|
|
27
|
+
react_1.default.createElement(fa_1.FaAngleDoubleLeft, null)),
|
|
28
|
+
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 currentPage > 0 && setCurrentPage(currentPage - 1); } },
|
|
29
|
+
react_1.default.createElement(fa_1.FaAngleLeft, null)),
|
|
30
|
+
react_1.default.createElement(react_2.Text, { mx: 1, mt: 3, fontSize: 12 },
|
|
31
|
+
"Page ",
|
|
32
|
+
currentPage + 1,
|
|
33
|
+
" of ",
|
|
34
|
+
pages),
|
|
35
|
+
react_1.default.createElement(react_2.IconButton, { mx: 1, "aria-label": "left-icon", color: isRightDisabled ? "gray" : "black", rounded: "full", variant: isRightDisabled ? "plain" : "ghost", onClick: function () {
|
|
36
|
+
return currentPage < pages - 1 && setCurrentPage(currentPage + 1);
|
|
37
|
+
} },
|
|
38
|
+
react_1.default.createElement(fa_1.FaAngleRight, null)),
|
|
39
|
+
react_1.default.createElement(react_2.IconButton, { mx: 1, "aria-label": "left-icon", color: isRightDisabled ? "gray" : "black", rounded: "full", variant: isRightDisabled ? "plain" : "ghost", onClick: function () { return setCurrentPage(pages - 1); } },
|
|
40
|
+
react_1.default.createElement(fa_1.FaAngleDoubleRight, null)))));
|
|
41
|
+
};
|
|
42
|
+
exports.default = Pagination;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { TableProps } from "../TableProps";
|
|
3
|
+
type TableBodyProps = Pick<TableProps, "columns" | "isCheckbox" | "data" | "freezedBgColor" | "freezedTextColor" | "noBorders"> & {
|
|
4
|
+
visibleColumns: Record<string, boolean>;
|
|
5
|
+
startRow: number;
|
|
6
|
+
endRow: number;
|
|
7
|
+
columnWidths: number[];
|
|
8
|
+
handleCheckbox: (selection: string | number) => void;
|
|
9
|
+
selections: (string | number)[];
|
|
10
|
+
};
|
|
11
|
+
declare const TableBody: ({ data, isCheckbox, columns, visibleColumns, startRow, endRow, columnWidths, freezedBgColor, freezedTextColor, noBorders, handleCheckbox, selections, }: TableBodyProps) => React.JSX.Element;
|
|
12
|
+
export default TableBody;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
var react_1 = require("@chakra-ui/react");
|
|
7
|
+
var react_2 = __importDefault(require("react"));
|
|
8
|
+
var table_1 = require("../../../Utils/table");
|
|
9
|
+
var useCustomTheme_1 = require("../../../Theme/useCustomTheme");
|
|
10
|
+
var TableBody = function (_a) {
|
|
11
|
+
var data = _a.data, isCheckbox = _a.isCheckbox, columns = _a.columns, visibleColumns = _a.visibleColumns, startRow = _a.startRow, endRow = _a.endRow, columnWidths = _a.columnWidths, freezedBgColor = _a.freezedBgColor, freezedTextColor = _a.freezedTextColor, noBorders = _a.noBorders, handleCheckbox = _a.handleCheckbox, selections = _a.selections;
|
|
12
|
+
var theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
13
|
+
return (react_2.default.createElement(react_2.default.Fragment, null, data.slice(startRow, endRow).map(function (row, index) {
|
|
14
|
+
var _a;
|
|
15
|
+
return (react_2.default.createElement(react_1.Tr, { key: index + 1 },
|
|
16
|
+
isCheckbox && (react_2.default.createElement(react_1.Td, { w: "6", fontSize: 14, fontWeight: 600, color: freezedTextColor, textTransform: "capitalize", backgroundColor: freezedBgColor, position: "sticky", border: noBorders ? "none" : "1px solid ".concat((_a = theme.colors) === null || _a === void 0 ? void 0 : _a.gray[300]), boxSizing: "border-box", left: 0, zIndex: 1, className: "columns sticky-columns" },
|
|
17
|
+
react_2.default.createElement(react_1.Checkbox, { "aria-label": "Select all rows", colorScheme: "gray", backgroundColor: theme.colors.gray[50], borderColor: theme.colors.gray[500], variant: "subtle", onChange: function () { return handleCheckbox(row.id); }, isChecked: selections.includes(row.id) }))),
|
|
18
|
+
columns.map(function (header, headerIndex) {
|
|
19
|
+
var _a;
|
|
20
|
+
var isFrozen = header.isFreeze;
|
|
21
|
+
var leftOffset = isFrozen
|
|
22
|
+
? (0, table_1.calculateLeftOffset)(columnWidths, headerIndex) +
|
|
23
|
+
(isCheckbox ? 50 : 0)
|
|
24
|
+
: 0;
|
|
25
|
+
return (visibleColumns[header.label] && (react_2.default.createElement(react_1.Td, { key: headerIndex + 1, fontSize: 14, fontWeight: 400, position: isFrozen ? "sticky" : undefined, left: isFrozen ? leftOffset : undefined, zIndex: isFrozen ? 1 : 0, backgroundColor: isFrozen
|
|
26
|
+
? freezedBgColor
|
|
27
|
+
: index % 2 === 1
|
|
28
|
+
? theme.colors.backgroundColor.light
|
|
29
|
+
: "white", textOverflow: "ellipsis", border: noBorders
|
|
30
|
+
? "none"
|
|
31
|
+
: "1px solid ".concat((_a = theme.colors) === null || _a === void 0 ? void 0 : _a.gray[isFrozen ? 300 : 200]), className: "columns ".concat(isFrozen ? "sticky-columns" : "scrollable-columns"), boxSizing: "border-box", color: isFrozen ? freezedTextColor : undefined }, header.node ? header.node(row) : row[header.id])));
|
|
32
|
+
})));
|
|
33
|
+
})));
|
|
34
|
+
};
|
|
35
|
+
exports.default = TableBody;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { ColumnSortingProps, TableProps } from "../TableProps";
|
|
3
|
+
type TableHeaderProps = Pick<TableProps, "columns" | "isCheckbox" | "headerBgColor" | "headerTextColor" | "freezedBgColor" | "freezedTextColor" | "noBorders"> & {
|
|
4
|
+
visibleColumns: Record<string, boolean>;
|
|
5
|
+
handleSort: (label: string, type: "asc" | "desc" | "none") => void;
|
|
6
|
+
activeHeader: string | null;
|
|
7
|
+
isPopoverOpen: boolean;
|
|
8
|
+
closePopover: () => void;
|
|
9
|
+
searchFeatures: (header: string) => React.ReactNode;
|
|
10
|
+
handleHeaderClick: (header: string, search: boolean) => void;
|
|
11
|
+
headerRefs: React.MutableRefObject<(HTMLTableCellElement | null)[]>;
|
|
12
|
+
columnWidths: number[];
|
|
13
|
+
columnsSort: ColumnSortingProps[];
|
|
14
|
+
handleCheckbox: (selection: string | number) => void;
|
|
15
|
+
checked: boolean | "indeterminate";
|
|
16
|
+
};
|
|
17
|
+
declare const TableHeader: ({ columns, isCheckbox, visibleColumns, handleSort, activeHeader, isPopoverOpen, closePopover, searchFeatures, handleHeaderClick, headerRefs, columnWidths, columnsSort, headerBgColor, headerTextColor, freezedBgColor, freezedTextColor, noBorders, handleCheckbox, checked, }: TableHeaderProps) => React.JSX.Element;
|
|
18
|
+
export default TableHeader;
|
|
@@ -0,0 +1,115 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
var react_1 = require("@chakra-ui/react");
|
|
27
|
+
var react_2 = __importStar(require("react"));
|
|
28
|
+
var table_1 = require("../../../Utils/table");
|
|
29
|
+
var useCustomTheme_1 = require("../../../Theme/useCustomTheme");
|
|
30
|
+
var fa_1 = require("react-icons/fa");
|
|
31
|
+
var TableHeader = function (_a) {
|
|
32
|
+
var _b;
|
|
33
|
+
var columns = _a.columns, isCheckbox = _a.isCheckbox, visibleColumns = _a.visibleColumns, handleSort = _a.handleSort, activeHeader = _a.activeHeader, isPopoverOpen = _a.isPopoverOpen, closePopover = _a.closePopover, searchFeatures = _a.searchFeatures,
|
|
34
|
+
// hoveredHeaderIndex,
|
|
35
|
+
handleHeaderClick = _a.handleHeaderClick, 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;
|
|
36
|
+
var theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
37
|
+
return (react_2.default.createElement(react_1.Tr, null,
|
|
38
|
+
isCheckbox && (react_2.default.createElement(react_1.Th, { w: "6", fontSize: 14, fontWeight: 600, color: freezedTextColor, textTransform: "capitalize", backgroundColor: freezedBgColor, border: noBorders ? "none" : "1px solid ".concat((_b = theme.colors) === null || _b === void 0 ? void 0 : _b.gray[300]), position: "sticky", className: "columns sticky-columns", left: "0px", zIndex: 1, boxShadow: "2px 0 5px rgba(0, 0, 0, 0.1)" },
|
|
39
|
+
react_2.default.createElement(react_1.Checkbox, { "aria-label": "Select all rows", colorScheme: "gray", backgroundColor: theme.colors.gray[50], borderColor: theme.colors.gray[500], variant: "subtle", onChange: function () { return handleCheckbox(0); }, isChecked: checked === true, isIndeterminate: checked === "indeterminate" }))),
|
|
40
|
+
columns.map(function (header, index) {
|
|
41
|
+
var _a, _b;
|
|
42
|
+
var isFrozen = header.isFreeze;
|
|
43
|
+
var leftOffset = isFrozen
|
|
44
|
+
? (0, table_1.calculateLeftOffset)(columnWidths, index) + (isCheckbox ? 50 : 0)
|
|
45
|
+
: undefined;
|
|
46
|
+
var isSorting = header.isSort
|
|
47
|
+
? columnsSort.find(function (o) { return o.column === header.id; })
|
|
48
|
+
: undefined;
|
|
49
|
+
var BgColor = isFrozen ? freezedBgColor : headerBgColor;
|
|
50
|
+
var TextColor = isFrozen ? freezedTextColor : headerTextColor;
|
|
51
|
+
return (visibleColumns[header.label] && (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, border: noBorders ? "none" : "1px solid ".concat((_a = theme.colors) === null || _a === void 0 ? void 0 : _a.gray[300]), className: "columns ".concat(isFrozen ? "sticky-columns" : "scrollable-columns") },
|
|
52
|
+
react_2.default.createElement(react_1.Box, { display: "flex", color: TextColor, justifyContent: "space-between", alignItems: "center" },
|
|
53
|
+
react_2.default.createElement(react_1.Box, { textOverflow: "ellipsis", whiteSpace: "nowrap", display: "block", overflow: "hidden" }, header.label),
|
|
54
|
+
react_2.default.createElement("span", null, header.isSort && (react_2.default.createElement(SortingIcon, { sortState: (_b = isSorting === null || isSorting === void 0 ? void 0 : isSorting.direction) !== null && _b !== void 0 ? _b : "none", handleSortClick: function () {
|
|
55
|
+
var direction = "asc";
|
|
56
|
+
if ((isSorting === null || isSorting === void 0 ? void 0 : isSorting.direction) === "asc") {
|
|
57
|
+
direction = "desc";
|
|
58
|
+
}
|
|
59
|
+
else if ((isSorting === null || isSorting === void 0 ? void 0 : isSorting.direction) === "desc") {
|
|
60
|
+
direction = "none";
|
|
61
|
+
}
|
|
62
|
+
handleSort(header.id, direction);
|
|
63
|
+
} })))))));
|
|
64
|
+
})));
|
|
65
|
+
};
|
|
66
|
+
exports.default = TableHeader;
|
|
67
|
+
var SortingIcon = (0, react_2.memo)(function (_a) {
|
|
68
|
+
var sortState = _a.sortState, handleSortClick = _a.handleSortClick;
|
|
69
|
+
var theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
70
|
+
return (react_2.default.createElement(react_1.Box, { display: "flex", alignItems: "center", justifyContent: "center", bg: theme.colors.white, borderRadius: "full", cursor: "pointer", w: "24px", h: "24px", ml: 2, onClick: handleSortClick, transition: "transform 0.2s ease-in-out", _hover: { transform: "scale(1.1)" } },
|
|
71
|
+
sortState === "none" && react_2.default.createElement(fa_1.FaSort, { color: "black", size: 14 }),
|
|
72
|
+
sortState === "asc" && react_2.default.createElement(fa_1.FaCaretUp, { color: "black", size: 14 }),
|
|
73
|
+
sortState === "desc" && react_2.default.createElement(fa_1.FaCaretDown, { color: "black", size: 14 })));
|
|
74
|
+
});
|
|
75
|
+
// const Popover = () => {
|
|
76
|
+
// return (
|
|
77
|
+
// <div style={{ background: "red" }}>
|
|
78
|
+
// <Popover
|
|
79
|
+
// isOpen={
|
|
80
|
+
// activeHeader === header.label && isPopoverOpen && header.isSearch
|
|
81
|
+
// }
|
|
82
|
+
// onClose={closePopover}
|
|
83
|
+
// placement="bottom-start"
|
|
84
|
+
// closeOnBlur={false}
|
|
85
|
+
// >
|
|
86
|
+
// <PopoverTrigger>
|
|
87
|
+
// <span>
|
|
88
|
+
// <HamburgerIcon
|
|
89
|
+
// w={15}
|
|
90
|
+
// h={15}
|
|
91
|
+
// onClick={() =>
|
|
92
|
+
// handleHeaderClick(
|
|
93
|
+
// header.label,
|
|
94
|
+
// header.isSearch ? header.isSearch : false
|
|
95
|
+
// )
|
|
96
|
+
// }
|
|
97
|
+
// style={{
|
|
98
|
+
// cursor: "pointer",
|
|
99
|
+
// display:
|
|
100
|
+
// hoveredHeaderIndex === index && header.isSearch
|
|
101
|
+
// ? "inline"
|
|
102
|
+
// : "none",
|
|
103
|
+
// }}
|
|
104
|
+
// />
|
|
105
|
+
// </span>
|
|
106
|
+
// </PopoverTrigger>
|
|
107
|
+
// <PopoverContent width={200} zIndex={3}>
|
|
108
|
+
// <PopoverBody background={"#deeefd"}>
|
|
109
|
+
// {searchFeatures(header.label)}
|
|
110
|
+
// </PopoverBody>
|
|
111
|
+
// </PopoverContent>
|
|
112
|
+
// </Popover>
|
|
113
|
+
// </div>
|
|
114
|
+
// );
|
|
115
|
+
// };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
var react_1 = __importDefault(require("react"));
|
|
7
|
+
var react_2 = require("@chakra-ui/react");
|
|
8
|
+
var TableLoading = function () {
|
|
9
|
+
return (react_1.default.createElement(react_2.Box, { overflowX: "auto", p: 4 },
|
|
10
|
+
react_1.default.createElement(react_2.Table, { variant: "simple", width: "full" },
|
|
11
|
+
react_1.default.createElement(react_2.Thead, null,
|
|
12
|
+
react_1.default.createElement(react_2.Tr, null,
|
|
13
|
+
react_1.default.createElement(react_2.Th, { p: 2 },
|
|
14
|
+
react_1.default.createElement(react_2.Skeleton, { height: "20px" })),
|
|
15
|
+
react_1.default.createElement(react_2.Th, { p: 2 },
|
|
16
|
+
react_1.default.createElement(react_2.Skeleton, { height: "20px" })),
|
|
17
|
+
react_1.default.createElement(react_2.Th, { p: 2 },
|
|
18
|
+
react_1.default.createElement(react_2.Skeleton, { height: "20px" })),
|
|
19
|
+
react_1.default.createElement(react_2.Th, { p: 2 },
|
|
20
|
+
react_1.default.createElement(react_2.Skeleton, { height: "20px" })))),
|
|
21
|
+
react_1.default.createElement(react_2.Tbody, null, Array.from({ length: 5 }).map(function (_, rowIndex) { return (react_1.default.createElement(react_2.Tr, { key: rowIndex },
|
|
22
|
+
react_1.default.createElement(react_2.Td, { p: 2 },
|
|
23
|
+
react_1.default.createElement(react_2.SkeletonText, { noOfLines: 1, skeletonHeight: "2" })),
|
|
24
|
+
react_1.default.createElement(react_2.Td, { p: 2 },
|
|
25
|
+
react_1.default.createElement(react_2.SkeletonText, { noOfLines: 1, skeletonHeight: "2" })),
|
|
26
|
+
react_1.default.createElement(react_2.Td, { p: 2 },
|
|
27
|
+
react_1.default.createElement(react_2.SkeletonText, { noOfLines: 1, skeletonHeight: "2" })),
|
|
28
|
+
react_1.default.createElement(react_2.Td, { p: 2 },
|
|
29
|
+
react_1.default.createElement(react_2.SkeletonText, { noOfLines: 1, skeletonHeight: "2" })))); })))));
|
|
30
|
+
};
|
|
31
|
+
exports.default = TableLoading;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
.table-container {
|
|
2
|
+
display: flex;
|
|
3
|
+
overflow: hidden; /* Prevent extra scrollbars */
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.sticky-columns {
|
|
7
|
+
position: relative;
|
|
8
|
+
z-index: 2;
|
|
9
|
+
background-color: white;
|
|
10
|
+
box-shadow: 2px 0 0 #e2e8f0; /* Optional for visual separation */
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.scrollable-columns {
|
|
14
|
+
overflow-x: auto;
|
|
15
|
+
overflow-y: hidden; /* Only horizontal scrolling */
|
|
16
|
+
white-space: nowrap; /* Prevent wrapping */
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
th,
|
|
20
|
+
td {
|
|
21
|
+
border: 1px solid #e2e8f0;
|
|
22
|
+
padding: 8px;
|
|
23
|
+
box-sizing: border-box;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.scrollable-columns th,
|
|
27
|
+
.scrollable-columns td {
|
|
28
|
+
background-color: white;
|
|
29
|
+
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { TableProps } from "./TableProps";
|
|
3
|
-
export default function Table({ data,
|
|
3
|
+
export default function Table({ data, columns, handleExportChange, onSelection, exportOptions, exportLabel, isLoading, isVisiblity, isCheckbox, headerBgColor, freezedBgColor, headerTextColor, freezedTextColor, tableBorderColor, noBorders, }: TableProps): React.JSX.Element;
|