@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.
- package/BasicTable/TableBody.js +5 -5
- package/BasicTable/TableBodyRow.js +3 -3
- package/BasicTable/TableFooter.js +3 -3
- package/BasicTable/TableHeader.js +3 -3
- package/BasicTable/index.js +7 -7
- package/BasicTable/types.d.ts +8 -4
- package/BasicTable/useTable.d.ts +3 -0
- package/BasicTable/useTable.js +2 -2
- package/package.json +1 -1
package/BasicTable/TableBody.js
CHANGED
@@ -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" : "
|
25
|
+
scrollbarWidth: forFrozen ? "none" : "initial",
|
26
26
|
"&::-webkit-scrollbar": {
|
27
|
-
width: forFrozen ? 0 : "
|
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:
|
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,
|
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:
|
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
|
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:
|
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,
|
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:
|
34
|
+
minWidth: cellMinWidth,
|
35
35
|
paddingLeft: theme.spacing(0.625),
|
36
36
|
paddingRight: theme.spacing(0.625),
|
37
37
|
whiteSpace: "nowrap",
|
package/BasicTable/index.js
CHANGED
@@ -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
|
31
|
+
var _j = useScroll({
|
32
32
|
canFreeze: canFreeze
|
33
|
-
}), frozenWidth =
|
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";
|
package/BasicTable/types.d.ts
CHANGED
@@ -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
|
-
|
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;
|
package/BasicTable/useTable.d.ts
CHANGED
@@ -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;
|
package/BasicTable/useTable.js
CHANGED
@@ -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 () {
|