@symply.io/basic-components 1.0.0-alpha.8 → 1.0.0-bata.7
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/AlertDialog/index.d.ts +0 -1
- package/AlertDialog/index.js +2 -2
- package/Autocomplete/index.d.ts +4 -0
- package/Autocomplete/index.js +38 -0
- package/Autocomplete/types.d.ts +14 -0
- package/Autocomplete/types.js +1 -0
- package/Autocomplete/useInteractions.d.ts +5 -0
- package/Autocomplete/useInteractions.js +9 -0
- package/AutocompleteWithFilter/index.d.ts +4 -0
- package/AutocompleteWithFilter/index.js +52 -0
- package/AutocompleteWithFilter/types.d.ts +15 -0
- package/AutocompleteWithFilter/types.js +1 -0
- package/BasicModal/Content.d.ts +0 -1
- package/BasicModal/Content.js +6 -6
- package/BasicModal/index.d.ts +0 -1
- package/BasicModal/index.js +3 -6
- package/BasicTable/TableBody.d.ts +4 -0
- package/BasicTable/TableBody.js +51 -0
- package/BasicTable/TableBodyRow.d.ts +3 -0
- package/BasicTable/TableBodyRow.js +42 -0
- package/BasicTable/TableFooter.d.ts +3 -0
- package/BasicTable/TableFooter.js +44 -0
- package/BasicTable/TableHeader.d.ts +3 -0
- package/BasicTable/TableHeader.js +47 -0
- package/BasicTable/index.d.ts +5 -0
- package/BasicTable/index.js +88 -0
- package/BasicTable/types.d.ts +70 -0
- package/BasicTable/types.js +1 -0
- package/BasicTable/useScroll.d.ts +9 -0
- package/BasicTable/useScroll.js +76 -0
- package/BasicTable/useTable.d.ts +38 -0
- package/BasicTable/useTable.js +94 -0
- package/BreadCrumbs/index.d.ts +4 -0
- package/BreadCrumbs/index.js +37 -0
- package/BreadCrumbs/types.d.ts +9 -0
- package/BreadCrumbs/types.js +1 -0
- package/CheckBox/CheckBox.d.ts +3 -0
- package/CheckBox/CheckBox.js +36 -0
- package/CheckBox/CheckBoxGroup.d.ts +3 -0
- package/CheckBox/CheckBoxGroup.js +30 -0
- package/CheckBox/index.d.ts +3 -0
- package/CheckBox/index.js +3 -0
- package/CheckBox/types.d.ts +12 -0
- package/CheckBox/types.js +1 -0
- package/Copyright/index.d.ts +4 -0
- package/Copyright/index.js +25 -0
- package/Copyright/types.d.ts +5 -0
- package/Copyright/types.js +1 -0
- package/DateInput/FullDateInput/index.d.ts +5 -0
- package/DateInput/FullDateInput/index.js +79 -0
- package/DateInput/FullDateInput/types.d.ts +9 -0
- package/DateInput/FullDateInput/types.js +1 -0
- package/DateInput/FullDateInput/useInteractions.d.ts +8 -0
- package/DateInput/FullDateInput/useInteractions.js +20 -0
- package/DateInput/MonthDayInput/index.d.ts +5 -0
- package/DateInput/MonthDayInput/index.js +65 -0
- package/DateInput/MonthDayInput/types.d.ts +9 -0
- package/DateInput/MonthDayInput/types.js +1 -0
- package/DateInput/MonthDayInput/useInteractions.d.ts +8 -0
- package/DateInput/MonthDayInput/useInteractions.js +19 -0
- package/DateInput/MonthYearInput/index.d.ts +5 -0
- package/DateInput/MonthYearInput/index.js +66 -0
- package/DateInput/MonthYearInput/types.d.ts +9 -0
- package/DateInput/MonthYearInput/types.js +1 -0
- package/DateInput/MonthYearInput/useInteractions.d.ts +8 -0
- package/DateInput/MonthYearInput/useInteractions.js +19 -0
- package/DateInput/index.d.ts +6 -0
- package/DateInput/index.js +6 -0
- package/DigitInput/index.d.ts +1 -4
- package/DigitInput/index.js +3 -3
- package/DigitInput/types.d.ts +2 -1
- package/DynamicHeaderBar/HeaderBar.js +1 -1
- package/DynamicHeaderBar/HeaderButtons.d.ts +0 -1
- package/DynamicHeaderBar/HeaderButtons.js +6 -6
- package/DynamicHeaderBar/HeaderLine.js +1 -1
- package/DynamicHeaderBar/index.js +2 -2
- package/DynamicHeaderBar/types.d.ts +3 -0
- package/FeinInput/index.d.ts +6 -0
- package/FeinInput/index.js +75 -0
- package/FeinInput/types.d.ts +9 -0
- package/FeinInput/types.js +1 -0
- package/FeinInput/useInteractions.d.ts +8 -0
- package/FeinInput/useInteractions.js +16 -0
- package/FormRadioGroup/index.d.ts +0 -1
- package/FormRadioGroup/index.js +3 -3
- package/FormSelector/MultipleSelector.d.ts +0 -1
- package/FormSelector/MultipleSelector.js +14 -3
- package/FormSelector/SimpleSelector.d.ts +0 -1
- package/FormSelector/SimpleSelector.js +3 -3
- package/FormSelector/types.d.ts +2 -7
- package/HelpCaption/index.js +2 -2
- package/LoadingModal/index.d.ts +0 -1
- package/LoadingModal/index.js +1 -1
- package/MenuButtonGroup/MenuItem.d.ts +0 -1
- package/MenuButtonGroup/MenuItem.js +1 -1
- package/MenuButtonGroup/index.js +2 -2
- package/NumberInput/index.d.ts +2 -3
- package/NumberInput/index.js +1 -1
- package/PasswordInput/ConfirmPassword.d.ts +2 -3
- package/PasswordInput/ConfirmPassword.js +1 -1
- package/PasswordInput/Password.d.ts +5 -5
- package/PasswordInput/Password.js +9 -8
- package/PhoneNumberInput/index.d.ts +4 -3
- package/PhoneNumberInput/index.js +15 -4
- package/README.md +438 -15
- package/Sidebar/SidebarItem.d.ts +3 -0
- package/Sidebar/SidebarItem.js +62 -0
- package/Sidebar/SidebarItemsGroup.d.ts +5 -0
- package/Sidebar/SidebarItemsGroup.js +38 -0
- package/Sidebar/SidebarLink.d.ts +3 -0
- package/Sidebar/SidebarLink.js +37 -0
- package/Sidebar/index.d.ts +7 -0
- package/Sidebar/index.js +30 -0
- package/Sidebar/types.d.ts +31 -0
- package/Sidebar/types.js +1 -0
- package/SocialInput/index.d.ts +6 -0
- package/SocialInput/index.js +77 -0
- package/SocialInput/types.d.ts +9 -0
- package/SocialInput/types.js +1 -0
- package/SocialInput/useInteractions.d.ts +10 -0
- package/SocialInput/useInteractions.js +26 -0
- package/TabGroup/index.js +10 -5
- package/TablePagination/Actions.d.ts +3 -0
- package/TablePagination/Actions.js +27 -0
- package/TablePagination/index.d.ts +4 -0
- package/TablePagination/index.js +30 -0
- package/TablePagination/types.d.ts +14 -0
- package/TablePagination/types.js +1 -0
- package/TablePagination/useInteractions.d.ts +14 -0
- package/TablePagination/useInteractions.js +23 -0
- package/TextInput/index.d.ts +2 -3
- package/TextInput/index.js +13 -3
- package/ToastPrompt/Presentation.js +3 -3
- package/ToastPrompt/index.js +1 -1
- package/VideoPlayerModal/index.d.ts +1 -3
- package/VideoPlayerModal/index.js +2 -2
- package/VideoPlayerModal/types.d.ts +2 -1
- package/index.d.ts +20 -0
- package/index.js +20 -0
- package/package.json +8 -2
package/AlertDialog/index.d.ts
CHANGED
package/AlertDialog/index.js
CHANGED
@@ -32,7 +32,7 @@ import useMediaQuery from "@mui/material/useMediaQuery";
|
|
32
32
|
import Slide from "@mui/material/Slide";
|
33
33
|
import useCustomTheme from "../useCustomTheme";
|
34
34
|
var Transition = forwardRef(function Transition(props, ref) {
|
35
|
-
return _jsx(Slide, __assign({ direction: "up" }, props, { ref: ref })
|
35
|
+
return _jsx(Slide, __assign({ direction: "up" }, props, { ref: ref }));
|
36
36
|
});
|
37
37
|
var AlertDialog = function (props) {
|
38
38
|
var _a = props.title, title = _a === void 0 ? "Info" : _a, _b = props.maxWidth, maxWidth = _b === void 0 ? "md" : _b, children = props.children, open = props.open, onClose = props.onClose, DialogButtons = props.DialogButtons, primaryColor = props.primaryColor, secondaryColor = props.secondaryColor, rest = __rest(props, ["title", "maxWidth", "children", "open", "onClose", "DialogButtons", "primaryColor", "secondaryColor"]);
|
@@ -42,7 +42,7 @@ var AlertDialog = function (props) {
|
|
42
42
|
if (reason !== "backdropClick") {
|
43
43
|
onClose();
|
44
44
|
}
|
45
|
-
}, "aria-labelledby": "alert-dialog-title", "aria-describedby": "alert-dialog-description" }, rest, { children: [_jsx(DialogTitle, __assign({ id: "alert-dialog-title" }, { children: title })
|
45
|
+
}, "aria-labelledby": "alert-dialog-title", "aria-describedby": "alert-dialog-description" }, rest, { children: [_jsx(DialogTitle, __assign({ id: "alert-dialog-title" }, { children: title })), _jsx(DialogContent, { children: children }), _jsx(DialogActions, { children: DialogButtons ? (cloneElement(DialogButtons)) : (_jsx(Button, __assign({ onClick: onClose, color: "primary" }, { children: "OK" }))) })] })) })));
|
46
46
|
};
|
47
47
|
export default AlertDialog;
|
48
48
|
export * from "./types";
|
@@ -0,0 +1,38 @@
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
2
|
+
__assign = Object.assign || function(t) {
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
4
|
+
s = arguments[i];
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
6
|
+
t[p] = s[p];
|
7
|
+
}
|
8
|
+
return t;
|
9
|
+
};
|
10
|
+
return __assign.apply(this, arguments);
|
11
|
+
};
|
12
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
13
|
+
var t = {};
|
14
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
15
|
+
t[p] = s[p];
|
16
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
17
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
18
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
19
|
+
t[p[i]] = s[p[i]];
|
20
|
+
}
|
21
|
+
return t;
|
22
|
+
};
|
23
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
24
|
+
import ThemeProvider from "@mui/material/styles/ThemeProvider";
|
25
|
+
import Autocomplete from "@mui/material/Autocomplete";
|
26
|
+
import TextField from "@mui/material/TextField";
|
27
|
+
import useInteractions from "./useInteractions";
|
28
|
+
import useCustomTheme from "../useCustomTheme";
|
29
|
+
function CustomAutocomplete(props) {
|
30
|
+
var size = props.size, value = props.value, options = props.options, multiple = props.multiple, primaryColor = props.primaryColor, secondaryColor = props.secondaryColor, onChange = props.onChange, rest = __rest(props, ["size", "value", "options", "multiple", "primaryColor", "secondaryColor", "onChange"]);
|
31
|
+
var theme = useCustomTheme({ primaryColor: primaryColor, secondaryColor: secondaryColor });
|
32
|
+
var _a = useInteractions(), inputValue = _a.inputValue, onInputChange = _a.onInputChange;
|
33
|
+
return (_jsx(ThemeProvider, __assign({ theme: theme }, { children: _jsx(Autocomplete, { size: size, fullWidth: true, options: options, multiple: multiple, onChange: function (_, value) {
|
34
|
+
onChange(value);
|
35
|
+
}, inputValue: inputValue, onInputChange: onInputChange, renderInput: function (params) { return _jsx(TextField, __assign({}, params, rest, { size: size })); } }) })));
|
36
|
+
}
|
37
|
+
export default CustomAutocomplete;
|
38
|
+
export * from "./types";
|
@@ -0,0 +1,14 @@
|
|
1
|
+
import { CSSProperties } from "react";
|
2
|
+
import { TextFieldProps } from "@mui/material/TextField";
|
3
|
+
export declare type AutocompleteOptionType<T> = T & {
|
4
|
+
label: string;
|
5
|
+
};
|
6
|
+
export declare type AutocompleteValueType<T, multiple> = multiple extends false | undefined ? AutocompleteOptionType<T> | null : Array<AutocompleteOptionType<T>> | null;
|
7
|
+
export interface AutocompleteProps<T, multiple> extends Omit<TextFieldProps, "onChange"> {
|
8
|
+
multiple?: multiple;
|
9
|
+
options: Array<AutocompleteOptionType<T>>;
|
10
|
+
value: AutocompleteValueType<T, multiple>;
|
11
|
+
primaryColor?: CSSProperties["color"];
|
12
|
+
secondaryColor?: CSSProperties["color"];
|
13
|
+
onChange: (value: AutocompleteValueType<T, multiple>) => void;
|
14
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import { useState, useCallback } from "react";
|
2
|
+
function useInteractions() {
|
3
|
+
var _a = useState(""), inputValue = _a[0], setInputValue = _a[1];
|
4
|
+
var onInputChange = useCallback(function (_, value) {
|
5
|
+
setInputValue(value);
|
6
|
+
}, []);
|
7
|
+
return { inputValue: inputValue, onInputChange: onInputChange };
|
8
|
+
}
|
9
|
+
export default useInteractions;
|
@@ -0,0 +1,52 @@
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
2
|
+
__assign = Object.assign || function(t) {
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
4
|
+
s = arguments[i];
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
6
|
+
t[p] = s[p];
|
7
|
+
}
|
8
|
+
return t;
|
9
|
+
};
|
10
|
+
return __assign.apply(this, arguments);
|
11
|
+
};
|
12
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
13
|
+
var t = {};
|
14
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
15
|
+
t[p] = s[p];
|
16
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
17
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
18
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
19
|
+
t[p[i]] = s[p[i]];
|
20
|
+
}
|
21
|
+
return t;
|
22
|
+
};
|
23
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
24
|
+
import ThemeProvider from "@mui/material/styles/ThemeProvider";
|
25
|
+
import Checkbox from "@mui/material/Checkbox";
|
26
|
+
import TextField from "@mui/material/TextField";
|
27
|
+
import Autocomplete, { createFilterOptions } from "@mui/material/Autocomplete";
|
28
|
+
import CheckBoxOutlineBlankIcon from "@mui/icons-material/CheckBoxOutlineBlank";
|
29
|
+
import CheckBoxIcon from "@mui/icons-material/CheckBox";
|
30
|
+
import useCustomTheme from "../useCustomTheme";
|
31
|
+
var icon = _jsx(CheckBoxOutlineBlankIcon, { fontSize: "small" });
|
32
|
+
var checkedIcon = _jsx(CheckBoxIcon, { fontSize: "small" });
|
33
|
+
function AutocompleteWithFilter(props) {
|
34
|
+
var size = props.size, value = props.value, options = props.options, multiple = props.multiple, disableCloseOnSelect = props.disableCloseOnSelect, primaryColor = props.primaryColor, secondaryColor = props.secondaryColor, onChange = props.onChange, rest = __rest(props, ["size", "value", "options", "multiple", "disableCloseOnSelect", "primaryColor", "secondaryColor", "onChange"]);
|
35
|
+
var filter = createFilterOptions({
|
36
|
+
ignoreCase: true,
|
37
|
+
ignoreAccents: true,
|
38
|
+
trim: true,
|
39
|
+
stringify: function (option) { return option.label; }
|
40
|
+
});
|
41
|
+
var theme = useCustomTheme({ primaryColor: primaryColor, secondaryColor: secondaryColor });
|
42
|
+
return (_jsx(ThemeProvider, __assign({ theme: theme }, { children: _jsx(Autocomplete, { size: size, fullWidth: true, limitTags: 1, options: options, multiple: multiple, filterOptions: filter, onChange: function (_, value) {
|
43
|
+
onChange(value);
|
44
|
+
}, disableCloseOnSelect: disableCloseOnSelect || multiple, getOptionLabel: function (option) {
|
45
|
+
return option.label || "";
|
46
|
+
}, renderOption: function (props, option, _a) {
|
47
|
+
var selected = _a.selected;
|
48
|
+
return (_jsxs("li", __assign({}, props, { children: [_jsx(Checkbox, { icon: icon, color: "primary", checkedIcon: checkedIcon, style: { marginRight: 8 }, checked: selected }), option.label || ""] })));
|
49
|
+
}, renderInput: function (params) { return (_jsx(TextField, __assign({}, params, rest, { variant: "outlined" }))); } }) })));
|
50
|
+
}
|
51
|
+
export default AutocompleteWithFilter;
|
52
|
+
export * from "./types";
|
@@ -0,0 +1,15 @@
|
|
1
|
+
import { CSSProperties } from "react";
|
2
|
+
import { TextFieldProps } from "@mui/material/TextField";
|
3
|
+
export declare type AutocompleteWithFilterOptionType<T> = T & {
|
4
|
+
label: string;
|
5
|
+
};
|
6
|
+
export declare type AutocompleteWithFilterValueType<T, multiple> = multiple extends false | undefined ? AutocompleteWithFilterOptionType<T> | null : Array<AutocompleteWithFilterOptionType<T>> | null;
|
7
|
+
export interface AutocompleteWithFilterProps<T, multiple> extends Omit<TextFieldProps, "onChange"> {
|
8
|
+
value: AutocompleteWithFilterValueType<T, multiple>;
|
9
|
+
options: Array<AutocompleteWithFilterOptionType<T>>;
|
10
|
+
disableCloseOnSelect?: boolean;
|
11
|
+
multiple?: multiple;
|
12
|
+
primaryColor?: CSSProperties["color"];
|
13
|
+
secondaryColor?: CSSProperties["color"];
|
14
|
+
onChange: (value: AutocompleteWithFilterValueType<T, multiple>) => void;
|
15
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
package/BasicModal/Content.d.ts
CHANGED
package/BasicModal/Content.js
CHANGED
@@ -24,14 +24,14 @@ function Content(props) {
|
|
24
24
|
var children = props.children, title = props.title, desc = props.desc, _a = props.color, color = _a === void 0 ? "primary" : _a, loading = props.loading, disabled = props.disabled, buttons = props.buttons, _b = props.submitText, submitText = _b === void 0 ? "Save" : _b, _c = props.cancelText, cancelText = _c === void 0 ? "Cancel" : _c, _d = props.showTopRightCloseButton, showTopRightCloseButton = _d === void 0 ? false : _d, _e = props.hideBottomButtons, hideBottomButtons = _e === void 0 ? false : _e, _f = props.noForm, noForm = _f === void 0 ? false : _f, onClose = props.onClose, onSubmit = props.onSubmit;
|
25
25
|
var theme = useTheme();
|
26
26
|
return (_jsxs(_Fragment, { children: [_jsxs(DialogTitle, __assign({ id: "form-dialog-title", sx: {
|
27
|
-
"& >
|
28
|
-
fontWeight: "700"
|
29
|
-
}
|
30
|
-
} }, { children: [title, showTopRightCloseButton ? (_jsx(IconButton, __assign({ "aria-label": "close", onClick: onClose, sx: {
|
27
|
+
"& > span": {
|
28
|
+
fontWeight: "700!important"
|
29
|
+
}
|
30
|
+
} }, { children: [_jsx("span", { children: title }), showTopRightCloseButton ? (_jsx(IconButton, __assign({ "aria-label": "close", onClick: onClose, sx: {
|
31
31
|
position: "absolute",
|
32
32
|
right: 8,
|
33
33
|
top: 8,
|
34
|
-
color: theme.palette.grey[500]
|
35
|
-
} }, { children: _jsx(CloseIcon, {}
|
34
|
+
color: theme.palette.grey[500]
|
35
|
+
} }, { children: _jsx(CloseIcon, {}) }))) : null] })), _jsxs(DialogContent, __assign({ sx: { paddingTop: theme.spacing(1.25) } }, { children: [desc && _jsx(DialogContentText, { children: desc }), Boolean(children) && cloneElement(children)] })), !hideBottomButtons && (_jsx(DialogActions, __assign({ sx: { padding: theme.spacing(1.25) } }, { children: _jsx(Grid, __assign({ container: true, spacing: 2, justifyContent: "flex-end", alignItems: "center", sx: { margin: 0 } }, { children: buttons || (_jsxs(_Fragment, { children: [_jsx(Grid, __assign({ item: true, xs: 12, md: 3, xl: 2 }, { children: _jsx(Button, __assign({ onClick: onClose, variant: "outlined", color: color, disabled: loading, fullWidth: true }, { children: cancelText })) })), _jsx(Grid, __assign({ item: true, xs: 12, md: 3, xl: 2 }, { children: _jsx(Button, __assign({ type: noForm ? "button" : "submit", onClick: noForm ? onSubmit : undefined, variant: "contained", color: color, disabled: loading || disabled, fullWidth: true }, { children: submitText })) }))] })) })) })))] }));
|
36
36
|
}
|
37
37
|
export default Content;
|
package/BasicModal/index.d.ts
CHANGED
package/BasicModal/index.js
CHANGED
@@ -30,7 +30,7 @@ import ThemeProvider from "@mui/material/styles/ThemeProvider";
|
|
30
30
|
import Content from "./Content";
|
31
31
|
import useCustomTheme from "../useCustomTheme";
|
32
32
|
var Transition = forwardRef(function Transition(props, ref) {
|
33
|
-
return _jsx(Slide, __assign({ direction: "up" }, props, { ref: ref })
|
33
|
+
return _jsx(Slide, __assign({ direction: "up" }, props, { ref: ref }));
|
34
34
|
});
|
35
35
|
function BasicModal(props) {
|
36
36
|
var onClose = props.onClose, onSubmit = props.onSubmit, _a = props.maxWidth, maxWidth = _a === void 0 ? "sm" : _a, _b = props.open, open = _b === void 0 ? false : _b, _c = props.noForm, noForm = _c === void 0 ? false : _c, primaryColor = props.primaryColor, secondaryColor = props.secondaryColor, rest = __rest(props, ["onClose", "onSubmit", "maxWidth", "open", "noForm", "primaryColor", "secondaryColor"]);
|
@@ -40,16 +40,13 @@ function BasicModal(props) {
|
|
40
40
|
if (reason !== "backdropClick") {
|
41
41
|
onClose();
|
42
42
|
}
|
43
|
-
}, maxWidth: maxWidth, fullWidth: true, TransitionComponent: Transition, "aria-labelledby": "form-dialog-title", fullScreen: fullScreen, disableEscapeKeyDown: true }, { children: _jsx(Grid, __assign({
|
44
|
-
height: "100%",
|
45
|
-
overflowY: "hidden"
|
46
|
-
}, component: noForm ? "div" : "form", onSubmit: noForm
|
43
|
+
}, maxWidth: maxWidth, fullWidth: true, TransitionComponent: Transition, "aria-labelledby": "form-dialog-title", fullScreen: fullScreen, disableEscapeKeyDown: true }, { children: _jsx(Grid, __assign({ component: noForm ? "div" : "form", onSubmit: noForm
|
47
44
|
? undefined
|
48
45
|
: function (e) {
|
49
46
|
e.preventDefault();
|
50
47
|
e.stopPropagation();
|
51
48
|
onSubmit();
|
52
|
-
} }, { children: _jsx(Content, __assign({}, rest, { noForm: noForm, onClose: onClose, onSubmit: onSubmit })
|
49
|
+
} }, { children: _jsx(Content, __assign({}, rest, { noForm: noForm, onClose: onClose, onSubmit: onSubmit })) })) })) })));
|
53
50
|
}
|
54
51
|
export default BasicModal;
|
55
52
|
export * from "./types";
|
@@ -0,0 +1,51 @@
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
2
|
+
__assign = Object.assign || function(t) {
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
4
|
+
s = arguments[i];
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
6
|
+
t[p] = s[p];
|
7
|
+
}
|
8
|
+
return t;
|
9
|
+
};
|
10
|
+
return __assign.apply(this, arguments);
|
11
|
+
};
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
13
|
+
import { forwardRef } from "react";
|
14
|
+
import Grid from "@mui/material/Grid";
|
15
|
+
import useCustomTheme from "../useCustomTheme";
|
16
|
+
import TableBodyRow from "./TableBodyRow";
|
17
|
+
var BasicTableBody = forwardRef(function (props, ref) {
|
18
|
+
var rows = props.rows, columns = props.columns, forFrozen = props.forFrozen, noDataText = props.noDataText;
|
19
|
+
var theme = useCustomTheme();
|
20
|
+
return (_jsx(Grid, __assign({ item: true, sx: {
|
21
|
+
maxHeight: "41vh",
|
22
|
+
overflowY: "auto",
|
23
|
+
display: "block",
|
24
|
+
minWidth: "100%",
|
25
|
+
scrollbarWidth: forFrozen ? "none" : "inherit",
|
26
|
+
"&::-webkit-scrollbar": {
|
27
|
+
width: forFrozen ? 0 : "inherit"
|
28
|
+
}
|
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)));
|
31
|
+
})) : (_jsx(Grid, __assign({ container: true, justifyContent: "space-around", alignItems: "center", wrap: "nowrap", sx: {
|
32
|
+
height: "60px",
|
33
|
+
borderBottomWidth: "thin",
|
34
|
+
borderBottomColor: "#e5e5e5",
|
35
|
+
borderBottomStyle: "solid",
|
36
|
+
padding: theme.spacing(0.5, 0),
|
37
|
+
minHeight: theme.spacing(6),
|
38
|
+
"& :nth-of-last-type(1)": {
|
39
|
+
borderBottom: "none"
|
40
|
+
},
|
41
|
+
"& input": {
|
42
|
+
fontSize: "0.9rem",
|
43
|
+
fontWeight: 600
|
44
|
+
}
|
45
|
+
} }, { children: _jsx(Grid, __assign({ item: true, xs: 4, md: 3, lg: 2, textAlign: "center", sx: {
|
46
|
+
minWidth: "135px",
|
47
|
+
paddingLeft: theme.spacing(0.625),
|
48
|
+
paddingRight: theme.spacing(0.625)
|
49
|
+
} }, { children: noDataText })) }))) })) })));
|
50
|
+
});
|
51
|
+
export default BasicTableBody;
|
@@ -0,0 +1,42 @@
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
2
|
+
__assign = Object.assign || function(t) {
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
4
|
+
s = arguments[i];
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
6
|
+
t[p] = s[p];
|
7
|
+
}
|
8
|
+
return t;
|
9
|
+
};
|
10
|
+
return __assign.apply(this, arguments);
|
11
|
+
};
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
13
|
+
import { cloneElement } from "react";
|
14
|
+
import Grid from "@mui/material/Grid";
|
15
|
+
import useCustomTheme from "../useCustomTheme";
|
16
|
+
function BasicTableBodyRow(props) {
|
17
|
+
var row = props.row, rows = props.rows, columns = props.columns;
|
18
|
+
var theme = useCustomTheme();
|
19
|
+
return (_jsx(Grid, __assign({ container: true, justifyContent: "space-evenly", alignItems: "center", wrap: "nowrap", sx: {
|
20
|
+
height: "60px",
|
21
|
+
borderBottomWidth: "thin",
|
22
|
+
borderBottomColor: "#e5e5e5",
|
23
|
+
borderBottomStyle: "solid",
|
24
|
+
padding: theme.spacing(0.5, 0),
|
25
|
+
minHeight: theme.spacing(6),
|
26
|
+
"& :nth-of-last-type(1)": {
|
27
|
+
borderBottom: "none"
|
28
|
+
},
|
29
|
+
"& input": {
|
30
|
+
fontSize: "0.9rem",
|
31
|
+
fontWeight: 600
|
32
|
+
}
|
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;
|
35
|
+
return (_jsx(Grid, __assign({ item: true, xs: 4, md: 3, lg: 2, textAlign: align, sx: {
|
36
|
+
minWidth: canBeFrozen ? "112px!important" : "135px",
|
37
|
+
paddingLeft: theme.spacing(0.625),
|
38
|
+
paddingRight: theme.spacing(0.625)
|
39
|
+
} }, { children: cloneElement(Cell, { column: col, rows: rows, row: row }) }), accessor));
|
40
|
+
}) })));
|
41
|
+
}
|
42
|
+
export default BasicTableBodyRow;
|
@@ -0,0 +1,44 @@
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
2
|
+
__assign = Object.assign || function(t) {
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
4
|
+
s = arguments[i];
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
6
|
+
t[p] = s[p];
|
7
|
+
}
|
8
|
+
return t;
|
9
|
+
};
|
10
|
+
return __assign.apply(this, arguments);
|
11
|
+
};
|
12
|
+
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
13
|
+
import { cloneElement } from "react";
|
14
|
+
import Grid from "@mui/material/Grid";
|
15
|
+
import useCustomTheme from "../useCustomTheme";
|
16
|
+
function BasicTableFooter(props) {
|
17
|
+
var footers = props.footers;
|
18
|
+
var theme = useCustomTheme();
|
19
|
+
return footers && footers.length > 0 ? (_jsx(Grid, __assign({ item: true, sx: {
|
20
|
+
backgroundColor: "#eaf0f6",
|
21
|
+
padding: theme.spacing(1.5, 0),
|
22
|
+
height: "50px"
|
23
|
+
} }, { children: _jsx(Grid, __assign({ container: true, justifyContent: "space-evenly", alignItems: "center", wrap: "nowrap", sx: {
|
24
|
+
lineHeight: "24px",
|
25
|
+
minWidth: "100%",
|
26
|
+
"& span": {
|
27
|
+
color: "#172b4d",
|
28
|
+
fontSize: "1rem",
|
29
|
+
fontWeight: 600
|
30
|
+
}
|
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;
|
33
|
+
return (_jsx(Grid, __assign({ item: true, xs: 4, md: 3, lg: 2, textAlign: align, sx: {
|
34
|
+
minWidth: canBeFrozen ? "112px!important" : "135px",
|
35
|
+
paddingLeft: theme.spacing(0.625),
|
36
|
+
paddingRight: theme.spacing(0.625),
|
37
|
+
whiteSpace: "nowrap",
|
38
|
+
textOverflow: "ellipsis",
|
39
|
+
overflow: "hidden",
|
40
|
+
userSelect: "none"
|
41
|
+
} }, { children: cloneElement(Cell) }), accessor));
|
42
|
+
}) })) }))) : (_jsx(_Fragment, {}));
|
43
|
+
}
|
44
|
+
export default BasicTableFooter;
|
@@ -0,0 +1,47 @@
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
2
|
+
__assign = Object.assign || function(t) {
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
4
|
+
s = arguments[i];
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
6
|
+
t[p] = s[p];
|
7
|
+
}
|
8
|
+
return t;
|
9
|
+
};
|
10
|
+
return __assign.apply(this, arguments);
|
11
|
+
};
|
12
|
+
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
13
|
+
import { cloneElement } from "react";
|
14
|
+
import Grid from "@mui/material/Grid";
|
15
|
+
import useCustomTheme from "../useCustomTheme";
|
16
|
+
function BasicTableHeader(props) {
|
17
|
+
var headers = props.headers;
|
18
|
+
var theme = useCustomTheme();
|
19
|
+
return headers && headers.length > 0 ? (_jsx(Grid, __assign({ item: true, sx: {
|
20
|
+
backgroundColor: "#eaf0f6",
|
21
|
+
padding: theme.spacing(1.5, 0),
|
22
|
+
height: "50px"
|
23
|
+
} }, { children: _jsx(Grid, __assign({ container: true, justifyContent: "space-evenly", alignItems: "center", wrap: "nowrap", sx: {
|
24
|
+
lineHeight: "24px",
|
25
|
+
minWidth: "100%",
|
26
|
+
"& span": {
|
27
|
+
color: "#172b4d",
|
28
|
+
fontSize: "1rem",
|
29
|
+
fontWeight: 600
|
30
|
+
}
|
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;
|
33
|
+
return (_jsx(Grid, __assign({ item: true, xs: 4, md: 3, lg: 2, title: title, textAlign: align, sx: {
|
34
|
+
minWidth: canBeFrozen ? "112px!important" : "135px",
|
35
|
+
paddingLeft: theme.spacing(0.625),
|
36
|
+
paddingRight: theme.spacing(0.625),
|
37
|
+
whiteSpace: "nowrap",
|
38
|
+
textOverflow: "ellipsis",
|
39
|
+
overflow: "hidden",
|
40
|
+
userSelect: "none",
|
41
|
+
cursor: canSort ? "pointer" : "default"
|
42
|
+
}, onClick: function () {
|
43
|
+
onSort({ field: accessor });
|
44
|
+
} }, { children: cloneElement(Cell) }), accessor));
|
45
|
+
}) })) }))) : (_jsx(_Fragment, {}));
|
46
|
+
}
|
47
|
+
export default BasicTableHeader;
|
@@ -0,0 +1,88 @@
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
2
|
+
__assign = Object.assign || function(t) {
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
4
|
+
s = arguments[i];
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
6
|
+
t[p] = s[p];
|
7
|
+
}
|
8
|
+
return t;
|
9
|
+
};
|
10
|
+
return __assign.apply(this, arguments);
|
11
|
+
};
|
12
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
13
|
+
import { useMemo, useEffect } from "react";
|
14
|
+
import Grid from "@mui/material/Grid";
|
15
|
+
import TableContainer from "@mui/material/TableContainer";
|
16
|
+
import useMediaQuery from "@mui/material/useMediaQuery";
|
17
|
+
import ThemeProvider from "@mui/material/styles/ThemeProvider";
|
18
|
+
import useCustomTheme from "../useCustomTheme";
|
19
|
+
import useScroll from "./useScroll";
|
20
|
+
import TableBody from "./TableBody";
|
21
|
+
import TableHeader from "./TableHeader";
|
22
|
+
import TableFooter from "./TableFooter";
|
23
|
+
function BasicTable(props) {
|
24
|
+
var _a;
|
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;
|
27
|
+
var theme = useCustomTheme({ primaryColor: primaryColor, secondaryColor: secondaryColor });
|
28
|
+
var isUpMd = useMediaQuery(theme.breakpoints.up("md"));
|
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
|
+
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({
|
32
|
+
canFreeze: canFreeze
|
33
|
+
}), frozenWidth = _h.frozenWidth, setFrozenWidth = _h.setFrozenWidth, fixedRef = _h.fixedRef, dynamicRef = _h.dynamicRef;
|
34
|
+
useEffect(function () {
|
35
|
+
var _a, _b;
|
36
|
+
var initFrozenWidth = ((_a = document.getElementById("frozenContainer")) === null || _a === void 0 ? void 0 : _a.clientWidth) ||
|
37
|
+
((_b = fixedRef.current) === null || _b === void 0 ? void 0 : _b.clientWidth) ||
|
38
|
+
fronzenColsCount * 123 ||
|
39
|
+
370;
|
40
|
+
if (columns) {
|
41
|
+
setFrozenWidth(function (fw) {
|
42
|
+
if (fw !== initFrozenWidth) {
|
43
|
+
return initFrozenWidth;
|
44
|
+
}
|
45
|
+
return fw;
|
46
|
+
});
|
47
|
+
}
|
48
|
+
}, [columns, fixedRef, fronzenColsCount, setFrozenWidth]);
|
49
|
+
return (_jsx(ThemeProvider, __assign({ theme: theme }, { children: _jsx(TableContainer, __assign({ sx: (_a = {
|
50
|
+
borderWidth: "thin",
|
51
|
+
borderColor: "#e5e5e5",
|
52
|
+
borderStyle: "solid",
|
53
|
+
borderRadius: "4px",
|
54
|
+
borderCollapse: "unset !important",
|
55
|
+
margin: theme.spacing(2, 0, 3, 0),
|
56
|
+
width: "100%"
|
57
|
+
},
|
58
|
+
_a[theme.breakpoints.up("sm")] = {
|
59
|
+
minWidth: "600px"
|
60
|
+
},
|
61
|
+
_a.position = "relative",
|
62
|
+
_a.transition = "all 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms",
|
63
|
+
_a) }, { children: _jsxs(Grid, __assign({ container: true, direction: "row", justifyContent: "flex-start", alignItems: "center", wrap: "nowrap" }, { children: [canFreeze && (_jsx(Grid, __assign({ id: "frozenContainer", item: true, sx: {
|
64
|
+
top: 0,
|
65
|
+
left: 0,
|
66
|
+
position: "absolute",
|
67
|
+
zIndex: 999,
|
68
|
+
backgroundColor: "Menu",
|
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: {
|
71
|
+
width: "100%",
|
72
|
+
marginLeft: canFreeze
|
73
|
+
? ((_b = document.getElementById("frozenContainer")) === null || _b === void 0 ? void 0 : _b.clientWidth) ||
|
74
|
+
frozenWidth ||
|
75
|
+
0
|
76
|
+
: 0,
|
77
|
+
overflow: "auto"
|
78
|
+
} }, { children: _jsxs(Grid, __assign({ container: true, direction: "column", justifyContent: "center" }, { children: [_jsx(TableHeader, { headers: headers.filter(function (header) {
|
79
|
+
return isUpMd ? !header.canBeFrozen : true;
|
80
|
+
}) }), _jsx(TableBody, { rows: rows, ref: dynamicRef, noDataText: noDataText, columns: columns.filter(function (col) {
|
81
|
+
return isUpMd ? !col.canBeFrozen : true;
|
82
|
+
}) }), _jsx(TableFooter, { footers: footers.filter(function (footer) {
|
83
|
+
return isUpMd ? !footer.canBeFrozen : true;
|
84
|
+
}) })] })) }))] })) })) })));
|
85
|
+
}
|
86
|
+
export default BasicTable;
|
87
|
+
export * from "./types";
|
88
|
+
export { default as useTable } from "./useTable";
|
@@ -0,0 +1,70 @@
|
|
1
|
+
import { ReactElement, CSSProperties } from "react";
|
2
|
+
interface SortByProps {
|
3
|
+
id: string;
|
4
|
+
desc: boolean;
|
5
|
+
}
|
6
|
+
interface InitialStateProps {
|
7
|
+
sortBy?: SortByProps;
|
8
|
+
}
|
9
|
+
export interface IColumn {
|
10
|
+
Header: ReactElement;
|
11
|
+
Body: ReactElement;
|
12
|
+
Footer?: ReactElement;
|
13
|
+
align?: "left" | "center" | "right";
|
14
|
+
accessor: string;
|
15
|
+
canSort?: boolean;
|
16
|
+
canBeFrozen?: boolean;
|
17
|
+
[name: string]: unknown;
|
18
|
+
}
|
19
|
+
interface IHeader extends IColumn {
|
20
|
+
Cell: ReactElement;
|
21
|
+
title: string;
|
22
|
+
canSort?: boolean;
|
23
|
+
onSort: (props: SortingProps) => unknown;
|
24
|
+
}
|
25
|
+
interface IFooter extends IColumn {
|
26
|
+
Cell: ReactElement;
|
27
|
+
}
|
28
|
+
interface IBodyColumn extends IColumn {
|
29
|
+
Cell: ReactElement;
|
30
|
+
}
|
31
|
+
export interface IRow {
|
32
|
+
[name: string]: unknown;
|
33
|
+
}
|
34
|
+
export interface SortingProps {
|
35
|
+
field: string;
|
36
|
+
isSorted?: boolean;
|
37
|
+
descending?: boolean;
|
38
|
+
}
|
39
|
+
export interface UseTableProps {
|
40
|
+
data: Array<IRow>;
|
41
|
+
columns: Array<IColumn>;
|
42
|
+
initialState?: InitialStateProps;
|
43
|
+
disableSortBy?: boolean;
|
44
|
+
onSort?: (props: SortingProps) => unknown;
|
45
|
+
}
|
46
|
+
export interface UseScrollProps {
|
47
|
+
canFreeze?: boolean;
|
48
|
+
}
|
49
|
+
export interface BasicTableHeaderProps {
|
50
|
+
headers: Array<IHeader>;
|
51
|
+
}
|
52
|
+
export interface BasicTableFooterProps {
|
53
|
+
footers: Array<IFooter>;
|
54
|
+
}
|
55
|
+
export interface BasicTableBodyProps {
|
56
|
+
columns: Array<IBodyColumn>;
|
57
|
+
rows: Array<IRow>;
|
58
|
+
noDataText?: string;
|
59
|
+
forFrozen?: boolean;
|
60
|
+
}
|
61
|
+
export interface BasicTableBodyRowProps {
|
62
|
+
columns: Array<IBodyColumn>;
|
63
|
+
rows: Array<IRow>;
|
64
|
+
row: IRow;
|
65
|
+
}
|
66
|
+
export declare type BasicTableProps = BasicTableHeaderProps & Omit<BasicTableBodyProps, "forFrozen"> & Partial<BasicTableFooterProps> & {
|
67
|
+
primaryColor?: CSSProperties["color"];
|
68
|
+
secondaryColor?: CSSProperties["color"];
|
69
|
+
};
|
70
|
+
export {};
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|