@symply.io/basic-components 1.0.0-beta.8 → 1.0.0-beta.9

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.
@@ -15,19 +15,19 @@ import Grid from "@mui/material/Grid";
15
15
  import useCustomTheme from "../useCustomTheme";
16
16
  import TableBodyRow from "./TableBodyRow";
17
17
  var BasicTableBody = forwardRef(function (props, ref) {
18
- var rows = props.rows, columns = props.columns, forFrozen = props.forFrozen, noDataText = props.noDataText;
18
+ var rows = props.rows, columns = props.columns, forFrozen = props.forFrozen, noDataText = props.noDataText, cellMinWidth = props.cellMinWidth;
19
19
  var theme = useCustomTheme();
20
20
  return (_jsx(Grid, __assign({ item: true, sx: {
21
21
  maxHeight: "41vh",
22
22
  overflowY: "auto",
23
23
  display: "block",
24
24
  minWidth: "100%",
25
- scrollbarWidth: forFrozen ? "none" : "inherit",
25
+ scrollbarWidth: forFrozen ? "none" : "initial",
26
26
  "&::-webkit-scrollbar": {
27
- width: forFrozen ? 0 : "inherit"
27
+ width: forFrozen ? 0 : "initial"
28
28
  }
29
29
  } }, { children: _jsx("div", __assign({ ref: ref }, { children: rows && rows.length > 0 ? (rows.map(function (row, index) {
30
- return (_jsx(TableBodyRow, { row: row, rows: rows, columns: columns }, "BasicTable_".concat(index)));
30
+ return (_jsx(TableBodyRow, { row: row, rows: rows, columns: columns, cellMinWidth: cellMinWidth }, "BasicTable_".concat(index)));
31
31
  })) : (_jsx(Grid, __assign({ container: true, justifyContent: "space-around", alignItems: "center", wrap: "nowrap", sx: {
32
32
  height: "60px",
33
33
  borderBottomWidth: "thin",
@@ -43,7 +43,7 @@ var BasicTableBody = forwardRef(function (props, ref) {
43
43
  fontWeight: 600
44
44
  }
45
45
  } }, { children: _jsx(Grid, __assign({ item: true, xs: 4, md: 3, lg: 2, textAlign: "center", sx: {
46
- minWidth: "135px",
46
+ minWidth: cellMinWidth,
47
47
  paddingLeft: theme.spacing(0.625),
48
48
  paddingRight: theme.spacing(0.625)
49
49
  } }, { children: noDataText })) }))) })) })));
@@ -14,7 +14,7 @@ import { cloneElement } from "react";
14
14
  import Grid from "@mui/material/Grid";
15
15
  import useCustomTheme from "../useCustomTheme";
16
16
  function BasicTableBodyRow(props) {
17
- var row = props.row, rows = props.rows, columns = props.columns;
17
+ var row = props.row, rows = props.rows, columns = props.columns, cellMinWidth = props.cellMinWidth;
18
18
  var theme = useCustomTheme();
19
19
  return (_jsx(Grid, __assign({ container: true, justifyContent: "space-evenly", alignItems: "center", wrap: "nowrap", sx: {
20
20
  height: "60px",
@@ -31,9 +31,9 @@ function BasicTableBodyRow(props) {
31
31
  fontWeight: 600
32
32
  }
33
33
  } }, { children: columns.map(function (col) {
34
- var accessor = col.accessor, Cell = col.Cell, canBeFrozen = col.canBeFrozen, _a = col.align, align = _a === void 0 ? "center" : _a;
34
+ var accessor = col.accessor, Cell = col.Cell, _a = col.align, align = _a === void 0 ? "center" : _a;
35
35
  return (_jsx(Grid, __assign({ item: true, xs: 4, md: 3, lg: 2, textAlign: align, sx: {
36
- minWidth: canBeFrozen ? "112px!important" : "135px",
36
+ minWidth: cellMinWidth,
37
37
  paddingLeft: theme.spacing(0.625),
38
38
  paddingRight: theme.spacing(0.625)
39
39
  } }, { children: cloneElement(Cell, { column: col, rows: rows, row: row }) }), accessor));
@@ -14,7 +14,7 @@ import { cloneElement } from "react";
14
14
  import Grid from "@mui/material/Grid";
15
15
  import useCustomTheme from "../useCustomTheme";
16
16
  function BasicTableFooter(props) {
17
- var footers = props.footers;
17
+ var footers = props.footers, cellMinWidth = props.cellMinWidth;
18
18
  var theme = useCustomTheme();
19
19
  return footers && footers.length > 0 ? (_jsx(Grid, __assign({ item: true, sx: {
20
20
  backgroundColor: "#eaf0f6",
@@ -29,9 +29,9 @@ function BasicTableFooter(props) {
29
29
  fontWeight: 600
30
30
  }
31
31
  } }, { children: footers.map(function (footer) {
32
- var accessor = footer.accessor, Cell = footer.Cell, _a = footer.align, align = _a === void 0 ? "center" : _a, canBeFrozen = footer.canBeFrozen;
32
+ var accessor = footer.accessor, Cell = footer.Cell, _a = footer.align, align = _a === void 0 ? "center" : _a;
33
33
  return (_jsx(Grid, __assign({ item: true, xs: 4, md: 3, lg: 2, textAlign: align, sx: {
34
- minWidth: canBeFrozen ? "112px!important" : "135px",
34
+ minWidth: cellMinWidth,
35
35
  paddingLeft: theme.spacing(0.625),
36
36
  paddingRight: theme.spacing(0.625),
37
37
  whiteSpace: "nowrap",
@@ -14,7 +14,7 @@ import { cloneElement } from "react";
14
14
  import Grid from "@mui/material/Grid";
15
15
  import useCustomTheme from "../useCustomTheme";
16
16
  function BasicTableHeader(props) {
17
- var headers = props.headers;
17
+ var headers = props.headers, cellMinWidth = props.cellMinWidth;
18
18
  var theme = useCustomTheme();
19
19
  return headers && headers.length > 0 ? (_jsx(Grid, __assign({ item: true, sx: {
20
20
  backgroundColor: "#eaf0f6",
@@ -29,9 +29,9 @@ function BasicTableHeader(props) {
29
29
  fontWeight: 600
30
30
  }
31
31
  } }, { children: headers.map(function (header) {
32
- var accessor = header.accessor, Cell = header.Cell, _a = header.align, align = _a === void 0 ? "center" : _a, title = header.title, onSort = header.onSort, canBeFrozen = header.canBeFrozen, _b = header.canSort, canSort = _b === void 0 ? false : _b;
32
+ var accessor = header.accessor, Cell = header.Cell, _a = header.align, align = _a === void 0 ? "center" : _a, title = header.title, onSort = header.onSort, _b = header.canSort, canSort = _b === void 0 ? false : _b;
33
33
  return (_jsx(Grid, __assign({ item: true, xs: 4, md: 3, lg: 2, title: title, textAlign: align, sx: {
34
- minWidth: canBeFrozen ? "112px!important" : "135px",
34
+ minWidth: cellMinWidth,
35
35
  paddingLeft: theme.spacing(0.625),
36
36
  paddingRight: theme.spacing(0.625),
37
37
  whiteSpace: "nowrap",
@@ -23,14 +23,14 @@ import TableFooter from "./TableFooter";
23
23
  function BasicTable(props) {
24
24
  var _a;
25
25
  var _b;
26
- var _c = props.columns, columns = _c === void 0 ? [] : _c, _d = props.rows, rows = _d === void 0 ? [] : _d, _e = props.headers, headers = _e === void 0 ? [] : _e, _f = props.footers, footers = _f === void 0 ? [] : _f, _g = props.noDataText, noDataText = _g === void 0 ? "No Data!" : _g, primaryColor = props.primaryColor, secondaryColor = props.secondaryColor;
26
+ var _c = props.columns, columns = _c === void 0 ? [] : _c, _d = props.rows, rows = _d === void 0 ? [] : _d, _e = props.headers, headers = _e === void 0 ? [] : _e, _f = props.footers, footers = _f === void 0 ? [] : _f, _g = props.noDataText, noDataText = _g === void 0 ? "No Data!" : _g, primaryColor = props.primaryColor, secondaryColor = props.secondaryColor, _h = props.cellMinWidth, cellMinWidth = _h === void 0 ? "initial" : _h;
27
27
  var theme = useCustomTheme({ primaryColor: primaryColor, secondaryColor: secondaryColor });
28
28
  var isUpMd = useMediaQuery(theme.breakpoints.up("md"));
29
29
  var fronzenColsCount = useMemo(function () { var _a; return (_a = columns.filter(function (col) { return col.canBeFrozen; })) === null || _a === void 0 ? void 0 : _a.length; }, [columns]);
30
30
  var canFreeze = useMemo(function () { return isUpMd && (rows === null || rows === void 0 ? void 0 : rows.length) > 0 && fronzenColsCount > 0; }, [fronzenColsCount, isUpMd, rows.length]);
31
- var _h = useScroll({
31
+ var _j = useScroll({
32
32
  canFreeze: canFreeze
33
- }), frozenWidth = _h.frozenWidth, setFrozenWidth = _h.setFrozenWidth, fixedRef = _h.fixedRef, dynamicRef = _h.dynamicRef;
33
+ }), frozenWidth = _j.frozenWidth, setFrozenWidth = _j.setFrozenWidth, fixedRef = _j.fixedRef, dynamicRef = _j.dynamicRef;
34
34
  useEffect(function () {
35
35
  var _a, _b;
36
36
  var initFrozenWidth = ((_a = document.getElementById("frozenContainer")) === null || _a === void 0 ? void 0 : _a.clientWidth) ||
@@ -67,7 +67,7 @@ function BasicTable(props) {
67
67
  zIndex: 999,
68
68
  backgroundColor: "Menu",
69
69
  boxShadow: "6px 0 6px -4px rgba(0,0,0,0.15)"
70
- } }, { children: _jsxs(Grid, __assign({ container: true, direction: "column", justifyContent: "center" }, { children: [_jsx(TableHeader, { headers: headers.filter(function (header) { return header.canBeFrozen; }) }), _jsx(TableBody, { forFrozen: true, rows: rows, ref: fixedRef, columns: columns.filter(function (col) { return col.canBeFrozen; }) }), _jsx(TableFooter, { footers: footers.filter(function (footer) { return footer.canBeFrozen; }) })] })) }))), _jsx(Grid, __assign({ item: true, style: {
70
+ } }, { children: _jsxs(Grid, __assign({ container: true, direction: "column", justifyContent: "center" }, { children: [_jsx(TableHeader, { cellMinWidth: cellMinWidth, headers: headers.filter(function (header) { return header.canBeFrozen; }) }), _jsx(TableBody, { forFrozen: true, rows: rows, ref: fixedRef, cellMinWidth: cellMinWidth, columns: columns.filter(function (col) { return col.canBeFrozen; }) }), _jsx(TableFooter, { cellMinWidth: cellMinWidth, footers: footers.filter(function (footer) { return footer.canBeFrozen; }) })] })) }))), _jsx(Grid, __assign({ item: true, style: {
71
71
  width: "100%",
72
72
  marginLeft: canFreeze
73
73
  ? ((_b = document.getElementById("frozenContainer")) === null || _b === void 0 ? void 0 : _b.clientWidth) ||
@@ -75,13 +75,13 @@ function BasicTable(props) {
75
75
  0
76
76
  : 0,
77
77
  overflow: "auto"
78
- } }, { children: _jsxs(Grid, __assign({ container: true, direction: "column", justifyContent: "center" }, { children: [_jsx(TableHeader, { headers: headers.filter(function (header) {
78
+ } }, { children: _jsxs(Grid, __assign({ container: true, direction: "column", justifyContent: "center" }, { children: [_jsx(TableHeader, { cellMinWidth: cellMinWidth, headers: headers.filter(function (header) {
79
79
  return isUpMd ? !header.canBeFrozen : true;
80
80
  }) }), _jsx(TableBody, { rows: rows, ref: dynamicRef, noDataText: noDataText, columns: columns.filter(function (col) {
81
81
  return isUpMd ? !col.canBeFrozen : true;
82
- }) }), _jsx(TableFooter, { footers: footers.filter(function (footer) {
82
+ }), cellMinWidth: cellMinWidth }), _jsx(TableFooter, { footers: footers.filter(function (footer) {
83
83
  return isUpMd ? !footer.canBeFrozen : true;
84
- }) })] })) }))] })) })) })));
84
+ }), cellMinWidth: cellMinWidth })] })) }))] })) })) })));
85
85
  }
86
86
  export default BasicTable;
87
87
  export * from "./types";
@@ -8,6 +8,7 @@ interface InitialStateProps {
8
8
  }
9
9
  export interface IColumn {
10
10
  Header: ReactElement;
11
+ headerTip?: string;
11
12
  Body: ReactElement;
12
13
  Footer?: ReactElement;
13
14
  align?: "left" | "center" | "right";
@@ -46,19 +47,22 @@ export interface UseTableProps {
46
47
  export interface UseScrollProps {
47
48
  canFreeze?: boolean;
48
49
  }
49
- export interface BasicTableHeaderProps {
50
+ interface BasicTableBaseProps {
51
+ cellMinWidth?: CSSProperties["minWidth"];
52
+ }
53
+ export interface BasicTableHeaderProps extends BasicTableBaseProps {
50
54
  headers: Array<IHeader>;
51
55
  }
52
- export interface BasicTableFooterProps {
56
+ export interface BasicTableFooterProps extends BasicTableBaseProps {
53
57
  footers: Array<IFooter>;
54
58
  }
55
- export interface BasicTableBodyProps {
59
+ export interface BasicTableBodyProps extends BasicTableBaseProps {
56
60
  columns: Array<IBodyColumn>;
57
61
  rows: Array<IRow>;
58
62
  noDataText?: string;
59
63
  forFrozen?: boolean;
60
64
  }
61
- export interface BasicTableBodyRowProps {
65
+ export interface BasicTableBodyRowProps extends BasicTableBaseProps {
62
66
  columns: Array<IBodyColumn>;
63
67
  rows: Array<IRow>;
64
68
  row: IRow;
@@ -3,6 +3,7 @@ import { UseTableProps, SortingProps } from "./types";
3
3
  declare function useTable(props: UseTableProps): {
4
4
  headers: {
5
5
  Header: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
6
+ headerTip?: string | undefined;
6
7
  Body: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
7
8
  Footer?: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | undefined;
8
9
  align?: "left" | "right" | "center" | undefined;
@@ -15,6 +16,7 @@ declare function useTable(props: UseTableProps): {
15
16
  }[];
16
17
  footers: {
17
18
  Header: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
19
+ headerTip?: string | undefined;
18
20
  Body: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
19
21
  Footer?: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | undefined;
20
22
  align?: "left" | "right" | "center" | undefined;
@@ -25,6 +27,7 @@ declare function useTable(props: UseTableProps): {
25
27
  }[];
26
28
  columns: {
27
29
  Header: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
30
+ headerTip?: string | undefined;
28
31
  Body: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
29
32
  Footer?: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | undefined;
30
33
  align?: "left" | "right" | "center" | undefined;
@@ -75,9 +75,9 @@ function useTable(props) {
75
75
  }, [columns, rest]);
76
76
  var headers = useMemo(function () {
77
77
  return columns.map(function (col) {
78
- var Header = col.Header, accessor = col.accessor, canSort = col.canSort;
78
+ var Header = col.Header, accessor = col.accessor, canSort = col.canSort, headerTip = col.headerTip;
79
79
  var canSortBy = canSort && !disableSortBy;
80
- return __assign(__assign({ Cell: (_jsxs(_Fragment, { children: [cloneElement(Header || _jsx(_Fragment, {}), { column: col }), canSortBy && renderSortingSymbol(accessor)] })), title: "".concat(canSortBy ? " (Click to sort)" : ""), canSort: canSortBy, onSort: canSortBy ? handleSort : function () { } }, col), rest);
80
+ return __assign(__assign({ Cell: (_jsxs(_Fragment, { children: [cloneElement(Header || _jsx(_Fragment, {}), { column: col }), canSortBy && renderSortingSymbol(accessor)] })), title: "".concat(headerTip || "").concat(canSortBy ? " (Click to sort)" : ""), canSort: canSortBy, onSort: canSortBy ? handleSort : function () { } }, col), rest);
81
81
  });
82
82
  }, [columns, disableSortBy, handleSort, renderSortingSymbol, rest]);
83
83
  var footers = useMemo(function () {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@symply.io/basic-components",
3
- "version": "1.0.0-beta.8",
3
+ "version": "1.0.0-beta.9",
4
4
  "description": "Basic and reusable components for all frontend of Symply apps",
5
5
  "keywords": [
6
6
  "react",