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.
Files changed (41) hide show
  1. package/dist/App.js +1 -1
  2. package/dist/Components/KaTable/CustomHeader.d.ts +12 -1
  3. package/dist/Components/KaTable/CustomHeader.js +38 -75
  4. package/dist/Components/KaTable/KaTable.d.ts +1 -1
  5. package/dist/Components/KaTable/KaTable.js +48 -13
  6. package/dist/Components/KaTable/KaTableProps.d.ts +4 -3
  7. package/dist/Components/KaTable/SelectionHeader.js +4 -2
  8. package/dist/Components/KaTable/ka-table.css +3 -9
  9. package/dist/Components/KaTable/useMergedChildComponents.d.ts +13 -1
  10. package/dist/Components/KaTable/useMergedChildComponents.js +53 -28
  11. package/dist/Components/SideBar/SideBar.js +58 -40
  12. package/dist/Components/Table/Components/Pagination.d.ts +15 -0
  13. package/dist/Components/Table/Components/Pagination.js +42 -0
  14. package/dist/Components/Table/Components/TableBody.d.ts +12 -0
  15. package/dist/Components/Table/Components/TableBody.js +35 -0
  16. package/dist/Components/Table/Components/TableHeader.d.ts +18 -0
  17. package/dist/Components/Table/Components/TableHeader.js +115 -0
  18. package/dist/Components/Table/Components/TableLoading.d.ts +3 -0
  19. package/dist/Components/Table/Components/TableLoading.js +31 -0
  20. package/dist/Components/Table/Table.css +29 -0
  21. package/dist/Components/Table/Table.d.ts +1 -1
  22. package/dist/Components/Table/Table.js +231 -217
  23. package/dist/Components/Table/TableProps.d.ts +20 -17
  24. package/dist/Constants/Sidebar.d.ts +15 -0
  25. package/dist/Constants/Sidebar.js +18 -0
  26. package/dist/Layout.js +5 -1
  27. package/dist/Pages/KaTableExample.js +19 -2
  28. package/dist/Pages/katable.d.ts +3 -0
  29. package/dist/Pages/katable.js +194 -0
  30. package/dist/Pages/table.d.ts +2 -0
  31. package/dist/Pages/table.js +59 -0
  32. package/dist/Theme/fonts.d.ts +1 -0
  33. package/dist/Theme/fonts.js +8 -3
  34. package/dist/Utils/common.d.ts +7 -0
  35. package/dist/Utils/common.js +64 -0
  36. package/dist/Utils/table.d.ts +9 -0
  37. package/dist/Utils/table.js +64 -0
  38. package/dist/bootstrap.js +1 -2
  39. package/package.json +2 -1
  40. package/dist/Theme/Default/fonts.d.ts +0 -35
  41. package/dist/Theme/Default/fonts.js +0 -37
@@ -1,54 +1,72 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
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 = __importDefault(require("react"));
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
- 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 },
14
- react_1.default.createElement(react_2.Flex, { pl: toggle ? "22%" : "8%", flexDir: "column", w: "100%", alignItems: "flex-start", as: "nav", h: "100vh" },
15
- logo ? (react_1.default.createElement(react_2.Flex, { mt: 5, align: "center" },
16
- react_1.default.createElement(react_2.Image, { borderRadius: "full", boxSize: "45px", src: logo, alt: "Company Logo", mr: 3 }),
17
- react_1.default.createElement(react_2.Text, { display: toggle ? "none" : "flex", fontWeight: 800 }, companyName))) : (react_1.default.createElement(react_2.Box, { ml: "-8px", mt: 5, width: "100%", display: "flex", justifyContent: "center", alignItems: "center" },
18
- react_1.default.createElement(react_2.Text, { fontWeight: 800, fontSize: "1.3rem", textAlign: "center" }, toggle ? companyName[0] : companyName))),
19
- react_1.default.createElement(react_2.Flex, { position: "absolute", left: toggle ? "55px" : "180px", top: "60px", background: theme.colors.primary[500], borderRadius: "23px" },
20
- react_1.default.createElement(react_2.IconButton, { background: "none", icon: toggle ? (react_1.default.createElement(fi_1.FiChevronRight, { color: "#ffffff" })) : (react_1.default.createElement(fi_1.FiChevronLeft, { color: "#ffffff" })), _hover: { background: "none" }, onClick: changeToggle, "aria-label": "Toggle Navigation" })),
21
- react_1.default.createElement(react_2.Flex, { mt: 30, flexDir: "column", w: "100%", alignItems: toggle ? "center" : "flex-start", h: "100vh", overflow: "scroll", css: {
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: "#ffffff",
45
- }, _active: { color: "#ffffff" }, 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 ? "80%" : "90%" },
46
- react_1.default.createElement(react_2.MenuButton, { w: "100%", p: "13px 12px 13px 13px" },
47
- react_1.default.createElement(react_2.Flex, null,
48
- react_1.default.createElement(react_2.Icon, { as: menu.icon, fontSize: "xl", color: activeMenu === menu.title ? "#ffff" : "" }),
49
- react_1.default.createElement(react_2.Text, { ml: 5, display: toggle ? "none" : "flex", color: activeMenu === menu.title ? "#ffff" : "" }, menu.title)))),
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,3 @@
1
+ import React from "react";
2
+ declare const TableLoading: () => React.JSX.Element;
3
+ export default TableLoading;
@@ -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, headers, tableHeaderBgColor, tableHeaderColor, handleExportChange, exportOptions, exportLabel, isLoading, loadingContaxt, loadingBoxStyle, isVisiblity, }: TableProps): React.JSX.Element;
3
+ export default function Table({ data, columns, handleExportChange, onSelection, exportOptions, exportLabel, isLoading, isVisiblity, isCheckbox, headerBgColor, freezedBgColor, headerTextColor, freezedTextColor, tableBorderColor, noBorders, }: TableProps): React.JSX.Element;