pixelize-design-library 1.1.33 → 1.1.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/App.js CHANGED
@@ -91,7 +91,7 @@ function App() {
91
91
  react_1.default.createElement(Loading_1.default, { text: "PIXELIZE CRM", isLoading: false, onlytext: true }),
92
92
  react_1.default.createElement(react_2.Flex, null,
93
93
  react_1.default.createElement(react_2.Box, null,
94
- react_1.default.createElement(SideBar_1.default, { menus: menu, activeMenu: activeMenu, handleMenuClick: handleMenuClick, toggle: toggle, changeToggle: function () { return changeToggle(!toggle); }, logo: "https://bit.ly/dan-abramov", companyName: "PIXELIZE" })),
94
+ react_1.default.createElement(SideBar_1.default, { menus: menu, activeMenu: activeMenu, handleMenuClick: handleMenuClick, toggle: toggle, changeToggle: function () { return changeToggle(!toggle); }, logo: "https://play-lh.googleusercontent.com/Fro4e_osoDhhrjgiZ_Y2C5FNXBMWvrb4rGpmkM1PDAcUPXeiAlPCq7NeaT4Q6NRUxRqo", companyName: "PIXELIZE" })),
95
95
  react_1.default.createElement(react_2.Box, { flex: "1", maxWidth: width, overflow: "hidden" },
96
96
  react_1.default.createElement(NavigationBar_1.default, { userAvathar: "https://bit.ly/dan-abramo", userName: "PIXELIZE", navMenu: navmenus, handleNavOnClick: handleNavOnClick, handleLogout: handleLogout, logoutText: "Logout", key: "navbar", moreIcon: react_1.default.createElement(fi_1.FiCalendar, null) }),
97
97
  react_1.default.createElement("br", null),
@@ -1,3 +1,14 @@
1
1
  import React from "react";
2
- declare const CustomHeader: ({ column, onSortChange, onMenuItemClick, menuItems, columnVisibility, }: any) => React.JSX.Element;
2
+ type CustomHeaderProps = {
3
+ column: any;
4
+ onSortChange?: (sortState: string, columnName: string) => void;
5
+ menuItems?: Array<{
6
+ label: string;
7
+ onClick: () => void;
8
+ submenu?: any[];
9
+ }>;
10
+ isSort?: boolean;
11
+ sortDirection: string;
12
+ };
13
+ declare const CustomHeader: React.MemoExoticComponent<({ column, onSortChange, menuItems, isSort, sortDirection, }: CustomHeaderProps) => React.JSX.Element>;
3
14
  export default CustomHeader;
@@ -27,80 +27,43 @@ var react_1 = __importStar(require("react"));
27
27
  var react_2 = require("@chakra-ui/react");
28
28
  var bs_1 = require("react-icons/bs");
29
29
  var fa_1 = require("react-icons/fa");
30
- var CustomHeader = function (_a) {
31
- var column = _a.column, onSortChange = _a.onSortChange, onMenuItemClick = _a.onMenuItemClick, menuItems = _a.menuItems, columnVisibility = _a.columnVisibility;
32
- var _b = (0, react_1.useState)(false), isSubmenuOpen = _b[0], setSubmenuOpen = _b[1];
33
- var _c = (0, react_1.useState)(null), submenuPosition = _c[0], setSubmenuPosition = _c[1];
34
- var _d = (0, react_1.useState)("none"), sortState = _d[0], setSortState = _d[1];
35
- var _e = (0, react_2.useDisclosure)(), isOpen = _e.isOpen, onOpen = _e.onOpen, onClose = _e.onClose;
36
- var filterButtonRef = (0, react_1.useRef)(null);
37
- var handleSubmenuToggle = function (e) {
38
- e.stopPropagation();
39
- setSubmenuOpen(function (prev) { return !prev; });
40
- if (filterButtonRef.current) {
41
- var rect = filterButtonRef.current.getBoundingClientRect();
42
- setSubmenuPosition({
43
- top: rect.bottom -
44
- ((rect.bottom - rect.top) * (rect.bottom - 35)) /
45
- (rect.bottom - rect.top),
46
- left: rect.x - (rect.x - 220) * (rect.width / rect.width),
47
- });
48
- }
49
- };
50
- var handleMenuItemClick = function (action) {
51
- if (onMenuItemClick) {
52
- onMenuItemClick(action, column);
53
- }
54
- setSubmenuOpen(false);
55
- };
56
- var handleSortClick = function () {
57
- setSortState(function (prevState) {
58
- var newState = prevState === "none" ? "asc" : prevState === "asc" ? "desc" : "none";
59
- if (onSortChange) {
60
- onSortChange(newState, column.title);
61
- }
62
- return newState;
63
- });
64
- };
65
- return (react_1.default.createElement("div", { onMouseEnter: onOpen, onMouseLeave: onClose },
66
- react_1.default.createElement(react_2.Box, { style: {
67
- display: "flex",
68
- justifyContent: "space-between",
69
- alignItems: "center",
70
- } },
71
- react_1.default.createElement(react_2.Box, { sx: { fontWeight: "bold" } }, column.title),
72
- react_1.default.createElement(react_2.Box, { style: {
73
- display: "flex",
74
- justifyContent: "space-between",
75
- alignItems: "center",
76
- } }, menuItems && (react_1.default.createElement(react_2.Menu, null,
77
- isOpen && (react_1.default.createElement(react_2.MenuButton, { ref: filterButtonRef, as: react_2.IconButton, "aria-label": "More options", icon: react_1.default.createElement(bs_1.BsThreeDots, null), size: "sm", variant: "ghost", sx: {
78
- _hover: {
79
- background: "none",
80
- },
81
- _active: {
82
- background: "none",
83
- },
84
- } })),
30
+ var useCustomTheme_1 = require("../../Theme/useCustomTheme");
31
+ var CustomHeader = (0, react_1.memo)(function (_a) {
32
+ var column = _a.column, onSortChange = _a.onSortChange, menuItems = _a.menuItems, isSort = _a.isSort, sortDirection = _a.sortDirection;
33
+ var handleSortClick = (0, react_1.useCallback)(function () {
34
+ var sortOrder = "none";
35
+ if (sortDirection === "none")
36
+ sortOrder = "asc";
37
+ else if (sortDirection === "asc")
38
+ sortOrder = "desc";
39
+ onSortChange === null || onSortChange === void 0 ? void 0 : onSortChange(sortOrder, column.key);
40
+ }, [sortDirection, column.key, onSortChange]);
41
+ return (react_1.default.createElement(react_2.Box, { display: "flex", justifyContent: "space-between", alignItems: "center" },
42
+ react_1.default.createElement(react_2.Box, { fontWeight: "bold" }, column.title),
43
+ react_1.default.createElement(react_2.Flex, { alignItems: "center" },
44
+ isSort && (react_1.default.createElement(SortingIcon, { sortState: sortDirection, handleSortClick: handleSortClick })),
45
+ menuItems && (menuItems === null || menuItems === void 0 ? void 0 : menuItems.length) ? (react_1.default.createElement(react_2.Menu, null,
46
+ react_1.default.createElement(react_2.MenuButton, { as: react_2.IconButton, "aria-label": "Options", icon: react_1.default.createElement(bs_1.BsThreeDots, null), size: "sm", variant: "ghost", _hover: { bg: "none" }, _active: { bg: "none" } }),
85
47
  react_1.default.createElement(react_2.Portal, null,
86
- react_1.default.createElement(react_2.MenuList, { sx: {
87
- boxShadow: "0px 0px 20px 11px rgba(0, 0, 0, 0.1)",
88
- borderRadius: "8px",
89
- padding: "8px",
90
- backgroundColor: "white",
91
- }, onMouseLeave: onClose }, menuItems === null || menuItems === void 0 ? void 0 : menuItems.map(function (item, index) { return (react_1.default.createElement(react_1.default.Fragment, { key: index },
92
- item.submenu ? (react_1.default.createElement(react_2.MenuItem, { closeOnSelect: false, onClick: handleSubmenuToggle }, item.label)) : (react_1.default.createElement(react_2.MenuItem, { onClick: function () { return handleMenuItemClick(item.action); } }, item.label)),
93
- isSubmenuOpen && item.submenu && submenuPosition && (react_1.default.createElement(react_2.Box, { position: "absolute", top: submenuPosition.top, left: submenuPosition.left, zIndex: 1, boxShadow: "0px 0px 20px 11px rgba(0, 0, 0, 0.1)", borderRadius: "8px", backgroundColor: "white", padding: "8px", width: "200px" },
94
- react_1.default.createElement(react_2.MenuGroup, { onMouseLeave: onClose }, item.submenu.map(function (subItem, subIndex) { return (react_1.default.createElement(react_2.MenuItem, { key: subIndex, closeOnSelect: true, onClick: function () {
95
- return handleMenuItemClick(subItem.action);
96
- } }, subItem.label)); })))))); }))))))),
97
- react_1.default.createElement(react_2.Box, { sx: { position: "absolute", right: 20, top: 0 } }, isOpen && (react_1.default.createElement(react_2.Flex, { alignItems: "center" },
98
- react_1.default.createElement(react_2.Box, { display: "flex", alignItems: "center", backgroundColor: "white", padding: sortState === "asc" ? "1px" : "2px", borderRadius: "10px", flexDirection: "column", width: "20px", height: "20px", onClick: handleSortClick, cursor: "pointer", boxShadow: "0px 0px 20px 11px rgba(0, 0, 0, 0.1)", transition: "transform 0.2s ease-in-out", _hover: { transform: "scale(1.1)" } },
99
- react_1.default.createElement(react_2.Box, { transition: "opacity 0.2s ease-in-out", opacity: sortState === "none" ? 1 : 0, position: "absolute" },
100
- react_1.default.createElement(fa_1.FaSort, { color: "black", size: 16 })),
101
- react_1.default.createElement(react_2.Box, { transition: "opacity 0.2s ease-in-out", opacity: sortState === "asc" ? 1 : 0, position: "absolute" },
102
- react_1.default.createElement(fa_1.FaCaretUp, { color: "black", size: 16 })),
103
- react_1.default.createElement(react_2.Box, { transition: "opacity 0.2s ease-in-out", opacity: sortState === "desc" ? 1 : 0, position: "absolute" },
104
- react_1.default.createElement(fa_1.FaCaretDown, { color: "black", size: 16 }))))))));
105
- };
48
+ react_1.default.createElement(react_2.MenuList, null, menuItems.map(function (item, index) { return (react_1.default.createElement(react_1.default.Fragment, { key: index },
49
+ react_1.default.createElement(react_2.MenuItem, { onClick: function () { return item === null || item === void 0 ? void 0 : item.onClick(); } }, item.label),
50
+ item.submenu && react_1.default.createElement(Submenu, { items: item.submenu }))); }))))) : null)));
51
+ });
52
+ var SortingIcon = (0, react_1.memo)(function (_a) {
53
+ var sortState = _a.sortState, handleSortClick = _a.handleSortClick;
54
+ var theme = (0, useCustomTheme_1.useCustomTheme)();
55
+ return (react_1.default.createElement(react_2.Box, { display: "flex", alignItems: "center", justifyContent: "center", bg: theme.colors.white, borderRadius: "full", cursor: "pointer", w: "24px", h: "24px", onClick: handleSortClick, transition: "transform 0.2s ease-in-out", _hover: { transform: "scale(1.1)" } },
56
+ sortState === "none" && react_1.default.createElement(fa_1.FaSort, { size: 14 }),
57
+ sortState === "asc" && react_1.default.createElement(fa_1.FaCaretUp, { size: 14 }),
58
+ sortState === "desc" && react_1.default.createElement(fa_1.FaCaretDown, { size: 14 })));
59
+ });
60
+ var Submenu = (0, react_1.memo)(function (_a) {
61
+ var items = _a.items;
62
+ return (react_1.default.createElement(react_2.MenuGroup, null, items.map(function (subItem, index) { return (react_1.default.createElement(react_2.MenuItem, { key: index, onClick: function () { return (subItem === null || subItem === void 0 ? void 0 : subItem.onClick) && (subItem === null || subItem === void 0 ? void 0 : subItem.onClick()); }, sx: {
63
+ pl: 6,
64
+ fontSize: "sm",
65
+ color: "gray.600",
66
+ _hover: { bg: "gray.100", color: "gray.800" }, // Hover styles
67
+ } }, subItem.label)); })));
68
+ });
106
69
  exports.default = CustomHeader;
@@ -8,6 +8,6 @@ import * as TableFun from "ka-table";
8
8
  import "ka-table/style.css";
9
9
  import "./ka-table.css";
10
10
  import { KaTableProps } from "./KaTableProps";
11
- declare const _default: React.MemoExoticComponent<({ columns, data, rowKey, Edit, format, filter, childComponents, columnReorder, columnResizing, editableCells, validation, loading, checkSelect, onRowClick, onSelectionChange, onSortChange, onMenuItemClick, menuItems, selected, columnVisibility, }: KaTableProps) => React.JSX.Element>;
11
+ declare const _default: React.MemoExoticComponent<({ columns, data, rowKey, Edit, format, filter, childComponents, columnReorder, columnResizing, editableCells, validation, loading, checkSelect, onRowClick, onSelectionChange, selected, columnVisibility, headerBgColor, freezedBgColor, headerTextColor, freezedTextColor, }: KaTableProps) => React.JSX.Element>;
12
12
  export default _default;
13
13
  export { TableEnums, TableActionCreator, TableProps, TableModel, TableUtils, TableFun, };
@@ -22,12 +22,21 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
22
  __setModuleDefault(result, mod);
23
23
  return result;
24
24
  };
25
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
26
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
27
+ if (ar || !(i in from)) {
28
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
29
+ ar[i] = from[i];
30
+ }
31
+ }
32
+ return to.concat(ar || Array.prototype.slice.call(from));
33
+ };
25
34
  var __importDefault = (this && this.__importDefault) || function (mod) {
26
35
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
36
  };
28
37
  Object.defineProperty(exports, "__esModule", { value: true });
29
38
  exports.TableFun = exports.TableUtils = exports.TableModel = exports.TableProps = exports.TableActionCreator = exports.TableEnums = void 0;
30
- var react_1 = __importDefault(require("react"));
39
+ var react_1 = __importStar(require("react"));
31
40
  var ka_table_1 = require("ka-table");
32
41
  var TableEnums = __importStar(require("ka-table/enums"));
33
42
  exports.TableEnums = TableEnums;
@@ -44,6 +53,8 @@ exports.TableFun = TableFun;
44
53
  require("ka-table/style.css");
45
54
  require("./ka-table.css");
46
55
  var useMergedChildComponents_1 = __importDefault(require("./useMergedChildComponents"));
56
+ var useCustomTheme_1 = require("../../Theme/useCustomTheme");
57
+ var common_1 = require("../../Utils/common");
47
58
  var selectionCellColumn = {
48
59
  key: "select-cell",
49
60
  width: 50,
@@ -52,25 +63,49 @@ var selectionCellColumn = {
52
63
  className: "select-cell",
53
64
  };
54
65
  var KaTable = function (_a) {
55
- var _b;
56
- var columns = _a.columns, data = _a.data, _c = _a.rowKey, rowKey = _c === void 0 ? "id" : _c, Edit = _a.Edit,
66
+ var _b, _c;
67
+ var columns = _a.columns, data = _a.data, _d = _a.rowKey, rowKey = _d === void 0 ? "id" : _d, Edit = _a.Edit,
57
68
  // sorting,
58
69
  format = _a.format,
59
70
  // paging,
60
- filter = _a.filter, childComponents = _a.childComponents, columnReorder = _a.columnReorder, columnResizing = _a.columnResizing, editableCells = _a.editableCells, validation = _a.validation, loading = _a.loading, checkSelect = _a.checkSelect, onRowClick = _a.onRowClick, onSelectionChange = _a.onSelectionChange, onSortChange = _a.onSortChange, onMenuItemClick = _a.onMenuItemClick, menuItems = _a.menuItems, selected = _a.selected, columnVisibility = _a.columnVisibility;
71
+ filter = _a.filter, childComponents = _a.childComponents, columnReorder = _a.columnReorder, columnResizing = _a.columnResizing, editableCells = _a.editableCells, validation = _a.validation, loading = _a.loading, checkSelect = _a.checkSelect, onRowClick = _a.onRowClick, onSelectionChange = _a.onSelectionChange, selected = _a.selected, columnVisibility = _a.columnVisibility, headerBgColor = _a.headerBgColor, freezedBgColor = _a.freezedBgColor, headerTextColor = _a.headerTextColor, freezedTextColor = _a.freezedTextColor;
72
+ var theme = (0, useCustomTheme_1.useCustomTheme)();
73
+ var _e = (0, react_1.useState)([]), sortState = _e[0], setSortState = _e[1];
61
74
  if (checkSelect &&
62
75
  !columns.some(function (column) { return column.key === "select-cell"; })) {
63
76
  columns.unshift(selectionCellColumn);
64
77
  }
65
78
  var dataLength = (_b = data === null || data === void 0 ? void 0 : data.length) !== null && _b !== void 0 ? _b : 0;
66
- var columnVisibilitys = columnVisibility !== null && columnVisibility !== void 0 ? columnVisibility : false;
67
- var mergedChildComponents = (0, useMergedChildComponents_1.default)(childComponents, onSortChange, onMenuItemClick, menuItems, onSelectionChange, rowKey, onRowClick, selected, dataLength, columns, columnVisibilitys);
68
- return (react_1.default.createElement(ka_table_1.Table, { columns: columns, data: data, rowKeyField: rowKey, editingMode: Edit, key: columns,
69
- // sortingMode={sorting}
70
- format: format,
71
- // paging={paging}
72
- filteringMode: filter, childComponents: mergedChildComponents, columnReordering: columnReorder, columnResizing: columnResizing, editableCells: editableCells, validation: validation, loading: loading, virtualScrolling: {
73
- enabled: true,
74
- } }));
79
+ // const columnVisibilitys = columnVisibility ?? false;
80
+ var handleSort = function (sort) {
81
+ setSortState(sort);
82
+ };
83
+ var sortedData = (0, react_1.useMemo)(function () { return (0, common_1.SortMultiColumnData)(__spreadArray([], data, true), sortState); }, [sortState, data]);
84
+ var mergedChildComponents = (0, useMergedChildComponents_1.default)({
85
+ childComponents: childComponents,
86
+ onSortChange: handleSort,
87
+ handleSelection: onSelectionChange,
88
+ rowKey: rowKey,
89
+ onRowClick: onRowClick,
90
+ selected: selected,
91
+ dataLength: dataLength,
92
+ columns: columns,
93
+ headerBgColor: headerBgColor,
94
+ freezedBgColor: freezedBgColor,
95
+ headerTextColor: headerTextColor,
96
+ freezedTextColor: freezedTextColor,
97
+ sortState: sortState,
98
+ });
99
+ return (react_1.default.createElement("div", { style: {
100
+ borderRadius: "10px 0 0 10px",
101
+ borderWidth: "0px 0px 0px 5px",
102
+ borderColor: (_c = theme.colors) === null || _c === void 0 ? void 0 : _c.gray[500],
103
+ boxShadow: theme.shadows.lg,
104
+ } },
105
+ react_1.default.createElement(ka_table_1.Table, { columns: columns, data: sortedData, rowKeyField: rowKey, editingMode: Edit, key: columns, sortingMode: TableEnums.SortingMode.MultipleRemote, format: format,
106
+ // paging={paging}
107
+ filteringMode: undefined, childComponents: mergedChildComponents, columnReordering: columnReorder, columnResizing: columnResizing, editableCells: editableCells, validation: validation, loading: loading, virtualScrolling: {
108
+ enabled: true,
109
+ } })));
75
110
  };
76
111
  exports.default = react_1.default.memo(KaTable);
@@ -14,9 +14,10 @@ export type KaTableProps = {
14
14
  checkSelect?: any;
15
15
  onRowClick?: (rowData: any, column: any) => void;
16
16
  onSelectionChange?: (selectedIds: any[]) => void;
17
- onSortChange?: (newSortState: string, columnName: string) => void;
18
- onMenuItemClick?: (action: string, columnName: string) => void;
19
- menuItems?: any;
20
17
  selected?: any;
21
18
  columnVisibility?: boolean;
19
+ headerBgColor?: string;
20
+ headerTextColor?: string;
21
+ freezedBgColor?: string;
22
+ freezedTextColor?: string;
22
23
  };
@@ -40,8 +40,10 @@ var SelectionHeader = function (_a) {
40
40
  return (react_1.default.createElement("input", { ref: selectAllRef, type: "checkbox", checked: selected === null || selected === void 0 ? void 0 : selected.checked, onChange: function (event) {
41
41
  var _a, _b;
42
42
  var isChecked = event.currentTarget.checked;
43
- var action = isChecked ? "add" : "remove";
44
- var totalIds = isChecked ? (_b = (_a = table === null || table === void 0 ? void 0 : table.props) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.map(function (row) { return row[rowKey]; }) : [];
43
+ // const action = isChecked ? "add" : "remove";
44
+ var totalIds = isChecked
45
+ ? (_b = (_a = table === null || table === void 0 ? void 0 : table.props) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.map(function (row) { return row[rowKey]; })
46
+ : [];
45
47
  handleSelectionChange(totalIds);
46
48
  if (isChecked) {
47
49
  table.selectAllFilteredRows();
@@ -1,10 +1,4 @@
1
- .ka {
2
- border-radius: 10px 0 0 10px;
3
- border-width: 0px 0px 0px 5px;
4
- border-color: #2caa3d;
5
- }
6
-
7
- .ka-thead-cell {
1
+ .ka-thead-cell {
8
2
  padding: 7px 7px;
9
3
  }
10
4
  .ka-cell {
@@ -20,7 +14,7 @@
20
14
  overflow: hidden;
21
15
  text-overflow: ellipsis;
22
16
  white-space: nowrap;
23
- padding-left:5%;
17
+ padding-left: 5%;
24
18
  }
25
19
  .ka-row {
26
20
  box-sizing: unset;
@@ -30,4 +24,4 @@
30
24
  .ka-table-wrapper {
31
25
  border-bottom: 2px solid #d8d9db;
32
26
  border-right: 2px solid #d8d9db;
33
- } /**/
27
+ }
@@ -1,2 +1,14 @@
1
- declare const useMergedChildComponents: (childComponents: any, onSortChange: any, onMenuItemClick: any, menuItems: any, handleSelection: any, rowKey: any, onRowClick: any, selected: any, dataLength: number, columns: any, columnVisibility: boolean) => any;
1
+ import { KaTableProps } from "./KaTableProps";
2
+ type MergedChildComponentsProps = Pick<KaTableProps, "headerBgColor" | "headerTextColor" | "freezedBgColor" | "freezedTextColor"> & {
3
+ childComponents: any;
4
+ onSortChange: any;
5
+ handleSelection: any;
6
+ rowKey: any;
7
+ onRowClick: any;
8
+ selected: any;
9
+ dataLength: number;
10
+ columns: any;
11
+ sortState: any;
12
+ };
13
+ declare const useMergedChildComponents: ({ childComponents, onSortChange, handleSelection, rowKey, onRowClick, selected, dataLength, columns, headerBgColor, freezedBgColor, headerTextColor, freezedTextColor, sortState, }: MergedChildComponentsProps) => any;
2
14
  export default useMergedChildComponents;
@@ -51,19 +51,31 @@ var CustomHeader_1 = __importDefault(require("./CustomHeader"));
51
51
  var SelectionHeader_1 = __importDefault(require("./SelectionHeader"));
52
52
  var SelectionCell_1 = __importDefault(require("./SelectionCell"));
53
53
  var useCustomTheme_1 = require("../../Theme/useCustomTheme");
54
- var getPreviousColumnWidth = function (columns, key) {
55
- var index = columns === null || columns === void 0 ? void 0 : columns.findIndex(function (column) { return column.key === key; });
56
- if (index > 0) {
57
- return columns[index - 1].width;
58
- }
59
- return 0;
60
- };
61
- var useMergedChildComponents = function (childComponents, onSortChange, onMenuItemClick, menuItems, handleSelection, rowKey, onRowClick, selected, dataLength, columns, columnVisibility) {
62
- var _a = react_1.default.useState(selected), selections = _a[0], setSelections = _a[1];
54
+ var common_1 = require("../../Utils/common");
55
+ var useMergedChildComponents = function (_a) {
56
+ var childComponents = _a.childComponents, onSortChange = _a.onSortChange, handleSelection = _a.handleSelection, rowKey = _a.rowKey, onRowClick = _a.onRowClick, selected = _a.selected, dataLength = _a.dataLength, columns = _a.columns, headerBgColor = _a.headerBgColor, freezedBgColor = _a.freezedBgColor, headerTextColor = _a.headerTextColor, freezedTextColor = _a.freezedTextColor, sortState = _a.sortState;
57
+ var theme = (0, useCustomTheme_1.useCustomTheme)();
58
+ var handleSortChange = (0, react_1.useCallback)(function (newState, columnKey) {
59
+ var newSortState = __spreadArray([], sortState, true);
60
+ var existingIndex = newSortState.findIndex(function (sort) { return sort.column === columnKey; });
61
+ if (existingIndex === -1) {
62
+ newSortState.push({
63
+ column: columnKey,
64
+ direction: newState, // Default to ascending when adding a column
65
+ });
66
+ }
67
+ else {
68
+ var existingSort = newSortState[existingIndex];
69
+ existingSort.direction = newState;
70
+ }
71
+ var column = columns.find(function (col) { return col.key === columnKey; });
72
+ column.sortDirection = newState;
73
+ onSortChange(newSortState);
74
+ }, [sortState, onSortChange, columns]);
75
+ var _b = react_1.default.useState(selected), selections = _b[0], setSelections = _b[1];
63
76
  (0, react_1.useEffect)(function () {
64
77
  setSelections(selected);
65
78
  }, [selected]);
66
- var theme = (0, useCustomTheme_1.useCustomTheme)();
67
79
  var isAllSelected = (0, react_1.useMemo)(function () {
68
80
  return {
69
81
  checked: (selections === null || selections === void 0 ? void 0 : selections.length) === (dataLength || -1),
@@ -90,7 +102,7 @@ var useMergedChildComponents = function (childComponents, onSortChange, onMenuIt
90
102
  return (0, react_1.useMemo)(function () {
91
103
  return __assign(__assign({}, childComponents), { dataRow: {
92
104
  elementAttributes: function (props) {
93
- var _a;
105
+ var _a, _b;
94
106
  var existingElementAttributes = (_a = childComponents.dataRow) === null || _a === void 0 ? void 0 : _a.elementAttributes;
95
107
  var attributes = existingElementAttributes
96
108
  ? existingElementAttributes(props)
@@ -101,11 +113,11 @@ var useMergedChildComponents = function (childComponents, onSortChange, onMenuIt
101
113
  // `${attributes.className || ""} ${isSelected ? "ka-row-selected" : ""}`.trim();
102
114
  return __assign(__assign({}, attributes), { className: className, style: __assign(__assign({}, (attributes.style || {})), { backgroundColor: isSelected
103
115
  ? theme.colors.backgroundColor.subtle
104
- : undefined }) });
116
+ : undefined, border: "1px solid ".concat((_b = theme.colors) === null || _b === void 0 ? void 0 : _b.gray[200]) }) });
105
117
  },
106
118
  }, headCell: {
107
119
  content: function (props) {
108
- var _a;
120
+ var _a, _b, _c;
109
121
  var existingContent = (_a = childComponents.headCell) === null || _a === void 0 ? void 0 : _a.content;
110
122
  if (existingContent) {
111
123
  var result = existingContent(props);
@@ -113,16 +125,17 @@ var useMergedChildComponents = function (childComponents, onSortChange, onMenuIt
113
125
  return result;
114
126
  }
115
127
  }
116
- if (props.column.customHeader === undefined ||
117
- props.column.customHeader === true) {
118
- return (react_1.default.createElement(CustomHeader_1.default, __assign({}, props, { onSortChange: onSortChange, onMenuItemClick: onMenuItemClick, menuItems: menuItems, columnVisibility: columnVisibility })));
128
+ var column = props.column;
129
+ if (column.sortable || column.filter) {
130
+ return (react_1.default.createElement(CustomHeader_1.default, __assign({}, props, { onSortChange: handleSortChange, menuItems: (_b = column === null || column === void 0 ? void 0 : column.menu) !== null && _b !== void 0 ? _b : [], isSort: props.column.sortable, sortDirection: (_c = props.column.sortDirection) !== null && _c !== void 0 ? _c : "none" })));
119
131
  }
120
132
  if (props.column.key === "select-cell") {
121
133
  return (react_1.default.createElement(SelectionHeader_1.default, { onSelectionChange: headerSelectionHandle, rowKey: rowKey, selected: isAllSelected }));
122
134
  }
135
+ return null;
123
136
  },
124
137
  elementAttributes: function (props) {
125
- var _a;
138
+ var _a, _b, _c, _d, _e, _f;
126
139
  var existingElementAttributes = (_a = childComponents.headCell) === null || _a === void 0 ? void 0 : _a.elementAttributes;
127
140
  if (existingElementAttributes) {
128
141
  var result = existingElementAttributes(props);
@@ -131,15 +144,22 @@ var useMergedChildComponents = function (childComponents, onSortChange, onMenuIt
131
144
  }
132
145
  }
133
146
  if (props.column.columnFreeze) {
134
- var stickyLeft = getPreviousColumnWidth(columns, props.column.key);
147
+ var stickyLeft = (0, common_1.getPreviousColumnWidth)(columns, props.column.key);
135
148
  return {
136
- style: __assign(__assign({}, props.column.style), { position: "sticky", left: stickyLeft, zIndex: 3, backgroundColor: "#d9d9db" }),
149
+ style: __assign(__assign({}, props.column.style), { position: "sticky", left: stickyLeft, zIndex: 3, backgroundColor: freezedBgColor !== null && freezedBgColor !== void 0 ? freezedBgColor : (_b = theme.colors) === null || _b === void 0 ? void 0 : _b.backgroundColor.subtle, color: freezedTextColor !== null && freezedTextColor !== void 0 ? freezedTextColor : (_c = theme.colors) === null || _c === void 0 ? void 0 : _c.gray[600] }),
137
150
  };
138
151
  }
152
+ return {
153
+ style: {
154
+ backgroundColor: headerBgColor !== null && headerBgColor !== void 0 ? headerBgColor : (_d = theme.colors.backgroundColor) === null || _d === void 0 ? void 0 : _d.subtle,
155
+ color: headerTextColor !== null && headerTextColor !== void 0 ? headerTextColor : (_e = theme.colors) === null || _e === void 0 ? void 0 : _e.gray[600],
156
+ border: "1px solid ".concat((_f = theme.colors) === null || _f === void 0 ? void 0 : _f.gray[200]),
157
+ },
158
+ };
139
159
  },
140
160
  }, cell: {
141
161
  elementAttributes: function (props) {
142
- var _a;
162
+ var _a, _b, _c, _d, _e;
143
163
  var existingElementAttributes = (_a = childComponents.cell) === null || _a === void 0 ? void 0 : _a.elementAttributes;
144
164
  if (existingElementAttributes) {
145
165
  var result = existingElementAttributes(props);
@@ -148,12 +168,17 @@ var useMergedChildComponents = function (childComponents, onSortChange, onMenuIt
148
168
  }
149
169
  }
150
170
  if (props.column.columnFreeze) {
151
- var stickyLeft = getPreviousColumnWidth(columns, props.column.key);
171
+ var stickyLeft = (0, common_1.getPreviousColumnWidth)(columns, props.column.key);
152
172
  return {
153
- style: __assign(__assign({}, props.column.style), { position: "sticky", left: stickyLeft, zIndex: 2, backgroundColor: "#d9d9db" }),
173
+ style: __assign(__assign({}, props.column.style), { position: "sticky", left: stickyLeft, zIndex: 2, backgroundColor: freezedBgColor !== null && freezedBgColor !== void 0 ? freezedBgColor : (_b = theme.colors) === null || _b === void 0 ? void 0 : _b.backgroundColor.subtle, color: freezedTextColor !== null && freezedTextColor !== void 0 ? freezedTextColor : (_c = theme.colors) === null || _c === void 0 ? void 0 : _c.gray[600], fontWeight: 600 }),
154
174
  };
155
175
  }
156
176
  return {
177
+ style: {
178
+ color: (_d = theme.colors) === null || _d === void 0 ? void 0 : _d.gray[600],
179
+ fontWeight: 500,
180
+ border: "1px solid ".concat((_e = theme.colors) === null || _e === void 0 ? void 0 : _e.gray[200]),
181
+ },
157
182
  onClick: function () {
158
183
  if (onRowClick) {
159
184
  onRowClick(props.rowData, props.column.key);
@@ -174,7 +199,6 @@ var useMergedChildComponents = function (childComponents, onSortChange, onMenuIt
174
199
  }
175
200
  }
176
201
  if (props.column.key === "select-cell") {
177
- // console.log("CELLL", selections, props.rowData[rowKey]);
178
202
  var isSelected = selections === null || selections === void 0 ? void 0 : selections.includes(props.rowData[rowKey]);
179
203
  return (react_1.default.createElement(SelectionCell_1.default, __assign({}, props, { selected: isSelected, onSelectionChange: cellSelectionHandle })));
180
204
  }
@@ -182,18 +206,19 @@ var useMergedChildComponents = function (childComponents, onSortChange, onMenuIt
182
206
  } });
183
207
  }, [
184
208
  childComponents,
185
- onSortChange,
186
- onMenuItemClick,
187
- menuItems,
188
209
  rowKey,
189
210
  onRowClick,
190
211
  selections,
191
- columnVisibility,
192
212
  columns,
193
213
  cellSelectionHandle,
194
214
  headerSelectionHandle,
195
215
  isAllSelected,
196
- theme.colors.backgroundColor.subtle,
216
+ theme.colors,
217
+ headerBgColor,
218
+ headerTextColor,
219
+ freezedBgColor,
220
+ freezedTextColor,
221
+ handleSortChange,
197
222
  ]);
198
223
  };
199
224
  exports.default = useMergedChildComponents;
@@ -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
+ export declare const FlexCss: {
2
+ "&::-webkit-scrollbar": {
3
+ width: string;
4
+ };
5
+ "&::-webkit-scrollbar-track": {
6
+ background: string;
7
+ };
8
+ "&::-webkit-scrollbar-thumb": {
9
+ background: string;
10
+ transition: string;
11
+ };
12
+ "&:hover::-webkit-scrollbar-thumb": {
13
+ background: string;
14
+ };
15
+ };
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FlexCss = void 0;
4
+ exports.FlexCss = {
5
+ "&::-webkit-scrollbar": {
6
+ width: "3px",
7
+ },
8
+ "&::-webkit-scrollbar-track": {
9
+ background: "transparent",
10
+ },
11
+ "&::-webkit-scrollbar-thumb": {
12
+ background: "transparent",
13
+ transition: "background 0.5s",
14
+ },
15
+ "&:hover::-webkit-scrollbar-thumb": {
16
+ background: "#888",
17
+ },
18
+ };
@@ -87,7 +87,7 @@ var columns = [
87
87
  key: "column2",
88
88
  title: "Column 2",
89
89
  dataType: DataType.String,
90
- width: 150,
90
+ width: 250,
91
91
  // visible: false,
92
92
  },
93
93
  {
@@ -95,12 +95,28 @@ var columns = [
95
95
  title: "Column 3",
96
96
  dataType: DataType.Number,
97
97
  width: 150,
98
+ filter: true,
99
+ menu: [
100
+ {
101
+ label: "Filter",
102
+ onClick: function () { return console.log("MENU Filter clicks"); },
103
+ submenu: [
104
+ {
105
+ label: "Filter by Date",
106
+ onClick: function () { return console.log("SUBMENU Date clicks"); },
107
+ },
108
+ { label: "Filter by Name" },
109
+ // { label: "Filter by Status", action: "Filter by Status" },
110
+ ],
111
+ },
112
+ ],
98
113
  },
99
114
  {
100
115
  key: "column4",
101
116
  title: "Column 4",
102
117
  dataType: DataType.Number,
103
118
  width: 150,
119
+ sortable: true,
104
120
  },
105
121
  {
106
122
  key: "column5",
@@ -119,6 +135,7 @@ var columns = [
119
135
  title: "Column 7",
120
136
  dataType: DataType.Number,
121
137
  width: 150,
138
+ sortable: true,
122
139
  },
123
140
  {
124
141
  key: "column8",
@@ -222,7 +239,7 @@ var KaTableExample = function () {
222
239
  console.log("Row clicked", rowKeyValue);
223
240
  }, selected: selectedRows, onSelectionChange: function (selectedRows) {
224
241
  handleCheckSelect(selectedRows);
225
- }, columnVisibility: true, menuItems: menuItems,
242
+ }, columnVisibility: true,
226
243
  // onSortChange={handleSortChange}
227
244
  // onMenuItemClick={handleMenuItemClick}
228
245
  // format={kaTableFormat}
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ declare const katable: () => React.JSX.Element;
3
+ export default katable;
@@ -0,0 +1,194 @@
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 __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ var react_1 = __importDefault(require("react"));
18
+ var KaTable_1 = __importDefault(require("../Components/KaTable/KaTable"));
19
+ var KaTable_2 = require("../Components/KaTable/KaTable");
20
+ var icons_1 = require("@chakra-ui/icons");
21
+ var katable = function () {
22
+ var DataType = KaTable_2.TableEnums.DataType;
23
+ var dataArray = Array(50)
24
+ .fill(undefined)
25
+ .map(function (_, index) { return ({
26
+ column1: index % 2 === 0,
27
+ column2: "column:2 row:".concat(index + 1),
28
+ column3: index + 5,
29
+ column4: index + 10,
30
+ column5: index + 15,
31
+ column6: index + 20,
32
+ column7: index + 25,
33
+ column8: index + 30,
34
+ column9: index + 35,
35
+ column10: index + 40,
36
+ column11: index + 45,
37
+ column12: index + 50,
38
+ column13: index + 55,
39
+ column14: index + 60,
40
+ column15: new Date(2022, 11, index),
41
+ id: index + 1,
42
+ }); });
43
+ var columns = [
44
+ {
45
+ key: "column1",
46
+ title: "Column 1",
47
+ dataType: DataType.Boolean,
48
+ width: 150,
49
+ columnFreeze: true,
50
+ customHeader: false,
51
+ },
52
+ {
53
+ key: "column2",
54
+ title: "Column 2",
55
+ dataType: DataType.String,
56
+ width: 150,
57
+ },
58
+ {
59
+ key: "column3",
60
+ title: "Column 3",
61
+ dataType: DataType.Number,
62
+ width: 150,
63
+ },
64
+ {
65
+ key: "column4",
66
+ title: "Column 4",
67
+ dataType: DataType.Number,
68
+ width: 150,
69
+ },
70
+ {
71
+ key: "column5",
72
+ title: "Column 5",
73
+ dataType: DataType.Number,
74
+ width: 150,
75
+ },
76
+ {
77
+ key: "column6",
78
+ title: "Column 6",
79
+ dataType: DataType.Number,
80
+ width: 150,
81
+ },
82
+ {
83
+ key: "column7",
84
+ title: "Column 7",
85
+ dataType: DataType.Number,
86
+ width: 150,
87
+ },
88
+ {
89
+ key: "column8",
90
+ title: "Column 8",
91
+ dataType: DataType.Number,
92
+ width: 150,
93
+ },
94
+ {
95
+ key: "column9",
96
+ title: "Column 9",
97
+ dataType: DataType.Number,
98
+ width: 150,
99
+ },
100
+ {
101
+ key: "column10",
102
+ title: "Column 10",
103
+ dataType: DataType.Number,
104
+ width: 150,
105
+ },
106
+ {
107
+ key: "column11",
108
+ title: "Column 11",
109
+ dataType: DataType.Number,
110
+ width: 150,
111
+ },
112
+ {
113
+ key: "column12",
114
+ title: "Column 12",
115
+ dataType: DataType.Number,
116
+ width: 150,
117
+ },
118
+ {
119
+ key: "column13",
120
+ title: "Column 13",
121
+ dataType: DataType.Number,
122
+ width: 150,
123
+ },
124
+ {
125
+ key: "column14",
126
+ title: "Column 14",
127
+ dataType: DataType.Number,
128
+ width: 150,
129
+ },
130
+ {
131
+ key: "column15",
132
+ title: "Column 15",
133
+ dataType: DataType.Date,
134
+ width: 150,
135
+ },
136
+ {
137
+ key: "editColumn",
138
+ width: 80,
139
+ customHeader: false,
140
+ },
141
+ ];
142
+ var kaTableFormat = function (props) {
143
+ if (props.column.dataType === DataType.Date) {
144
+ return (props.value &&
145
+ props.value.toLocaleDateString("en", {
146
+ month: "2-digit",
147
+ day: "2-digit",
148
+ year: "numeric",
149
+ }));
150
+ }
151
+ };
152
+ var EditButton = function (_a) {
153
+ var dispatch = _a.dispatch, rowKeyValue = _a.rowKeyValue;
154
+ return (react_1.default.createElement("div", { className: "edit-cell-button" },
155
+ react_1.default.createElement(icons_1.EditIcon, null),
156
+ react_1.default.createElement(icons_1.DeleteIcon, null)));
157
+ };
158
+ var handleSortChange = function (newSortState, columnName) {
159
+ console.log("Sort state for ".concat(columnName, " changed to:"), newSortState);
160
+ };
161
+ var handleMenuItemClick = function (action, columnName) {
162
+ console.log("Menu item clicked for ".concat(columnName, ":"), action);
163
+ };
164
+ var menuItems = [
165
+ { label: "Sort", action: "Sort" },
166
+ { label: "Hide column", action: "Hide column" },
167
+ {
168
+ label: "Filter",
169
+ submenu: [
170
+ { label: "Filter by Date", action: "Filter by Date" },
171
+ { label: "Filter by Name", action: "Filter by Name" },
172
+ { label: "Filter by Status", action: "Filter by Status" },
173
+ ],
174
+ },
175
+ ];
176
+ return (react_1.default.createElement("div", null,
177
+ react_1.default.createElement(KaTable_1.default, { data: dataArray, columns: columns, checkSelect: true, onRowClick: function (rowKeyValue) {
178
+ console.log("Row clicked", rowKeyValue);
179
+ }, onSelectionChange: function (selectedRows) {
180
+ console.log("Selected rows:", selectedRows);
181
+ }, menuItems: menuItems, onSortChange: handleSortChange, onMenuItemClick: handleMenuItemClick, format: kaTableFormat, childComponents: {
182
+ cellText: {
183
+ content: function (props) {
184
+ if (props.column.key === "editColumn") {
185
+ return react_1.default.createElement(EditButton, __assign({}, props));
186
+ }
187
+ },
188
+ },
189
+ }, loading: {
190
+ enabled: false,
191
+ text: "Loading data",
192
+ } })));
193
+ };
194
+ exports.default = katable;
@@ -1,4 +1,5 @@
1
1
  import "@fontsource/ubuntu-sans";
2
+ import "@fontsource-variable/inter";
2
3
  declare const fonts: {
3
4
  fonts: {
4
5
  body: string;
@@ -1,11 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  require("@fontsource/ubuntu-sans");
4
+ // Supports weights 100-900
5
+ require("@fontsource-variable/inter");
4
6
  var fonts = {
5
7
  fonts: {
6
- body: "Ubuntu Sans, serif",
7
- heading: "Ubuntu Sans, serif",
8
- mono: "Ubuntu Sans, monospace",
8
+ body: "Inter Variable, sans-serif",
9
+ heading: "Inter Variable, sans-serif",
10
+ mono: "Inter Variable, sans-serif",
11
+ // body: "Ubuntu Sans, serif",
12
+ // heading: "Ubuntu Sans, serif",
13
+ // mono: "Ubuntu Sans, monospace",
9
14
  },
10
15
  fontSizes: {
11
16
  xs: "0.75rem",
@@ -0,0 +1,5 @@
1
+ export declare function SortMultiColumnData(data: Record<string, any>[], sortConfig: {
2
+ column: string;
3
+ direction: string;
4
+ }[]): Record<string, any>[];
5
+ export declare const getPreviousColumnWidth: (columns: any, key: any) => any;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
+ if (ar || !(i in from)) {
5
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
6
+ ar[i] = from[i];
7
+ }
8
+ }
9
+ return to.concat(ar || Array.prototype.slice.call(from));
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.getPreviousColumnWidth = exports.SortMultiColumnData = void 0;
13
+ function SortMultiColumnData(data, sortConfig) {
14
+ if (!sortConfig.length)
15
+ return data;
16
+ return __spreadArray([], data, true).sort(function (a, b) {
17
+ for (var _i = 0, sortConfig_1 = sortConfig; _i < sortConfig_1.length; _i++) {
18
+ var _a = sortConfig_1[_i], column = _a.column, direction = _a.direction;
19
+ if (direction === "none") {
20
+ continue;
21
+ }
22
+ var dirMultiplier = direction === "asc" ? 1 : -1;
23
+ // Compare values for the current column
24
+ if (a[column] < b[column])
25
+ return -1 * dirMultiplier;
26
+ if (a[column] > b[column])
27
+ return 1 * dirMultiplier;
28
+ // If values are equal, continue to the next sorting rule
29
+ }
30
+ return 0; // Return 0 if all sort conditions are equal
31
+ });
32
+ }
33
+ exports.SortMultiColumnData = SortMultiColumnData;
34
+ var getPreviousColumnWidth = function (columns, key) {
35
+ var index = columns === null || columns === void 0 ? void 0 : columns.findIndex(function (column) { return column.key === key; });
36
+ if (index > 0) {
37
+ return columns[index - 1].width;
38
+ }
39
+ return 0;
40
+ };
41
+ exports.getPreviousColumnWidth = getPreviousColumnWidth;
package/dist/bootstrap.js CHANGED
@@ -7,8 +7,7 @@ var react_1 = __importDefault(require("react"));
7
7
  var client_1 = __importDefault(require("react-dom/client"));
8
8
  var App_1 = __importDefault(require("./App"));
9
9
  var withTheme_1 = __importDefault(require("./withTheme"));
10
- var Theme_1 = require("./Theme");
11
10
  var root = client_1.default.createRoot(document.getElementById("root"));
12
- var ThemeApp = (0, withTheme_1.default)(App_1.default, Theme_1.meadow);
11
+ var ThemeApp = (0, withTheme_1.default)(App_1.default);
13
12
  root.render(react_1.default.createElement(react_1.default.StrictMode, null,
14
13
  react_1.default.createElement(ThemeApp, null)));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pixelize-design-library",
3
- "version": "1.1.33",
3
+ "version": "1.1.34",
4
4
  "private": false,
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -11,6 +11,7 @@
11
11
  "@chakra-ui/react": "^2.8.2",
12
12
  "@emotion/react": "^11.11.4",
13
13
  "@emotion/styled": "^11.11.5",
14
+ "@fontsource-variable/inter": "^5.1.0",
14
15
  "@fontsource/ubuntu-sans": "^5.1.0",
15
16
  "@testing-library/jest-dom": "^5.17.0",
16
17
  "@testing-library/react": "^13.4.0",
@@ -1,35 +0,0 @@
1
- import "@fontsource/ubuntu-sans";
2
- declare const fontOptions: {
3
- fonts: {
4
- body: string;
5
- heading: string;
6
- mono: string;
7
- };
8
- fontSizes: {
9
- xs: string;
10
- sm: string;
11
- md: string;
12
- lg: string;
13
- xl: string;
14
- "2xl": string;
15
- "3xl": string;
16
- "4xl": string;
17
- "5xl": string;
18
- "6xl": string;
19
- "7xl": string;
20
- "8xl": string;
21
- "9xl": string;
22
- };
23
- fontWeights: {
24
- hairline: number;
25
- thin: number;
26
- light: number;
27
- normal: number;
28
- medium: number;
29
- semibold: number;
30
- bold: number;
31
- extrabold: number;
32
- black: number;
33
- };
34
- };
35
- export default fontOptions;
@@ -1,37 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- require("@fontsource/ubuntu-sans");
4
- var fontOptions = {
5
- fonts: {
6
- body: "Ubuntu Sans, serif",
7
- heading: "Ubuntu Sans, serif",
8
- mono: "Ubuntu Sans, monospace",
9
- },
10
- fontSizes: {
11
- xs: "0.75rem",
12
- sm: "0.875rem",
13
- md: "1rem",
14
- lg: "1.125rem",
15
- xl: "1.25rem",
16
- "2xl": "1.5rem",
17
- "3xl": "1.875rem",
18
- "4xl": "2.25rem",
19
- "5xl": "3rem",
20
- "6xl": "3.75rem",
21
- "7xl": "4.5rem",
22
- "8xl": "6rem",
23
- "9xl": "8rem",
24
- },
25
- fontWeights: {
26
- hairline: 100,
27
- thin: 200,
28
- light: 300,
29
- normal: 400,
30
- medium: 500,
31
- semibold: 600,
32
- bold: 700,
33
- extrabold: 800,
34
- black: 900,
35
- },
36
- };
37
- exports.default = fontOptions;