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.
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
2
  import { ButtonProps } from "./ButtonProps";
3
- declare function Button({ label, width, onClick, color, variant, leftIcon, rightIcon, size, isDisabled, isLoading, loadingText, type, }: ButtonProps): React.JSX.Element;
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, _b = _a.width, width = _b === void 0 ? "100%" : _b, onClick = _a.onClick, color = _a.color, _c = _a.variant, variant = _c === void 0 ? "solid" : _c, leftIcon = _a.leftIcon, rightIcon = _a.rightIcon, size = _a.size, _d = _a.isDisabled, isDisabled = _d === void 0 ? false : _d, _e = _a.isLoading, isLoading = _e === void 0 ? false : _e, _f = _a.loadingText, loadingText = _f === void 0 ? "Loading" : _f, type = _a.type;
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: width, colorScheme: color, variant: variant, size: size, isLoading: isLoading, isDisabled: isDisabled, loadingText: loadingText, leftIcon: leftIcon, rightIcon: rightIcon }, appliedVariantStyle),
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?: "gray" | "red" | "orange" | "yellow" | "green" | "teal" | "blue" | "cyan" | "purple" | "pink" | "whiteAlpha" | "blackAlpha";
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
- 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 }, label));
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, 'spacing' | 'isInvalid' | 'size' | 'iconColor' | 'iconSize' | 'isChecked' | 'isIndeterminate' | 'onChange' | 'isDisabled' | 'value' | 'defaultChecked'> & {
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: ({ isVisiblity, columns, visibleColumns, paginationText, handlePageSizeChange, rowsPerPage, currentPage, pages, handleColumnVisibilityChange, setCurrentPage, dataLength, isServerPagination, }: PaginationProps) => React.JSX.Element;
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 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, isServerPagination = _a.isServerPagination;
12
- var pageSizeOptions = [1, 2, 3, 4, 5, 10, 20, 30, 40, 50, 75, 100].filter(function (size) { return size <= dataLength; });
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, visibleColumns, startRow, endRow, columnWidths, freezedBgColor, freezedTextColor, noBorders, handleCheckbox, selections, isLoading, onRowClick, isContent, isLink, isActionFreeze, }: TableBodyPageProps) => React.JSX.Element;
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, 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, isLoading = _a.isLoading, onRowClick = _a.onRowClick, isContent = _a.isContent, isLink = _a.isLink, isActionFreeze = _a.isActionFreeze;
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 (visibleColumns[header.label] && (react_2.default.createElement(react_1.Td, { maxWidth: 500, minWidth: 120, key: headerIndex + 1, onClick: function () {
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, visibleColumns, handleSort, headerRefs, columnWidths, columnsSort, headerBgColor, headerTextColor, freezedBgColor, freezedTextColor, noBorders, handleCheckbox, checked, isLoading, isContent, isLink, isActionFreeze, setColumnsSearch, columnsSearch, }: TableHeaderPageProps) => React.JSX.Element>;
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, visibleColumns = _a.visibleColumns, 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;
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) { return (react_2.default.createElement(ColumnHeader, { header: header, index: index, key: header.label, columnWidths: columnWidths, handleSort: handleSort, isCheckbox: isCheckbox, visibleColumns: visibleColumns, headerBgColor: headerBgColor, headerTextColor: headerTextColor, freezedBgColor: freezedBgColor, freezedTextColor: freezedTextColor, noBorders: noBorders, columnsSort: columnsSort, headerRefs: headerRefs, columnsSearch: columnsSearch, setColumnsSearch: setColumnsSearch })); }),
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, visibleColumns = _a.visibleColumns, 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;
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 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, 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); } },
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 })))) : (react_2.default.createElement(react_2.default.Fragment, null));
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, columns, onSelection, tablePreferences, savePreferences, noOfRowsPerPage, isServerPagination, totalRecords, }: UseTableProps) => {
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, columns = _a.columns, onSelection = _a.onSelection, tablePreferences = _a.tablePreferences, savePreferences = _a.savePreferences, noOfRowsPerPage = _a.noOfRowsPerPage, isServerPagination = _a.isServerPagination, totalRecords = _a.totalRecords;
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 _h = (0, react_1.useState)(tableData), filteredData = _h[0], setFilteredData = _h[1];
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 handleColumnVisibilityChange = function (header) {
137
- var _a;
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), { nonVisibility: Object.keys(visibility)
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 ? "https://pixelize.memron.net:5001/api/UserPreference" : _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;
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 _s = (0, react_1.useState)({}), columnsSearch = _s[0], setColumnsSearch = _s[1];
45
+ var _t = (0, react_1.useState)({}), columnsSearch = _t[0], setColumnsSearch = _t[1];
45
46
  var isServerPagination = paginationMode === "server";
46
- var _t = (0, usePreferences_1.useGetPreferences)({
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 = _t.preferences, loading = _t.loading;
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 _u = (0, useTable_1.default)({
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 = _u.tableData, tableContainerStyles = _u.tableContainerStyles, isContent = _u.isContent, isLink = _u.isLink, headerRefs = _u.headerRefs, columnWidths = _u.columnWidths, visibleColumns = _u.visibleColumns, handleSort = _u.handleSort, handleCheckbox = _u.handleCheckbox, filteredData = _u.filteredData, startRow = _u.startRow, endRow = _u.endRow, selection = _u.selection, columnsSort = _u.columnsSort, currentPage = _u.currentPage, pages = _u.pages, rowsPerPage = _u.rowsPerPage, handleColumnVisibilityChange = _u.handleColumnVisibilityChange, handlePageSizeChange = _u.handlePageSizeChange, setCurrentPage = _u.setCurrentPage;
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: columns, isCheckbox: isCheckbox, headerBgColor: headerBgColor !== null && headerBgColor !== void 0 ? headerBgColor : theme.colors.backgroundColor.muted, headerTextColor: headerTextColor !== null && headerTextColor !== void 0 ? headerTextColor : (_b = theme.colors) === null || _b === void 0 ? void 0 : _b.gray[600], freezedBgColor: freezedBgColor !== null && freezedBgColor !== void 0 ? freezedBgColor : theme.colors.backgroundColor.secondary, freezedTextColor: freezedTextColor !== null && freezedTextColor !== void 0 ? freezedTextColor : (_c = theme.colors) === null || _c === void 0 ? void 0 : _c.gray[600], visibleColumns: visibleColumns, handleSort: handleSort, headerRefs: headerRefs, columnWidths: columnWidths, columnsSort: columnsSort, noBorders: noBorders, handleCheckbox: handleCheckbox, isLoading: isTableLoading, checked: tableData.length !== 0 && selection.length === tableData.length
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: columns, startRow: startRow, endRow: endRow, visibleColumns: visibleColumns, isCheckbox: isCheckbox, columnWidths: columnWidths, noBorders: noBorders, freezedBgColor: freezedBgColor !== null && freezedBgColor !== void 0 ? freezedBgColor : theme.colors.backgroundColor.secondary, freezedTextColor: freezedTextColor !== null && freezedTextColor !== void 0 ? freezedTextColor : (_d = theme.colors) === null || _d === void 0 ? void 0 : _d.gray[600], handleCheckbox: handleCheckbox, selections: selection, isLoading: isTableLoading, onRowClick: onRowClick, isContent: isContent, isLink: isLink, isActionFreeze: isActionFreeze })))),
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, visibleColumns: visibleColumns, handleColumnVisibilityChange: handleColumnVisibilityChange, isVisiblity: true }))));
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" | "visibleColumns" | "columnsSort"> & {
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",
@@ -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[];
@@ -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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pixelize-design-library",
3
- "version": "1.1.59",
3
+ "version": "1.1.61",
4
4
  "private": false,
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",