@symply.io/basic-components 1.0.0-alpha.1
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/.gitignore +15 -0
- package/AlertDialog/index.d.ts +5 -0
- package/AlertDialog/index.js +47 -0
- package/AlertDialog/types.d.ts +11 -0
- package/AlertDialog/types.js +1 -0
- package/BasicModal/Content.d.ts +4 -0
- package/BasicModal/Content.js +37 -0
- package/BasicModal/index.d.ts +5 -0
- package/BasicModal/index.js +54 -0
- package/BasicModal/types.d.ts +22 -0
- package/BasicModal/types.js +1 -0
- package/DigitInput/index.d.ts +7 -0
- package/DigitInput/index.js +35 -0
- package/DigitInput/types.d.ts +9 -0
- package/DigitInput/types.js +1 -0
- package/DigitInput/useInteractions.d.ts +11 -0
- package/DigitInput/useInteractions.js +24 -0
- package/DynamicHeaderBar/HeaderBar.d.ts +13 -0
- package/DynamicHeaderBar/HeaderBar.js +31 -0
- package/DynamicHeaderBar/HeaderButtons.d.ts +7 -0
- package/DynamicHeaderBar/HeaderButtons.js +43 -0
- package/DynamicHeaderBar/HeaderLine.d.ts +6 -0
- package/DynamicHeaderBar/HeaderLine.js +12 -0
- package/DynamicHeaderBar/index.d.ts +21 -0
- package/DynamicHeaderBar/index.js +57 -0
- package/DynamicHeaderBar/types.d.ts +33 -0
- package/DynamicHeaderBar/types.js +6 -0
- package/FormRadioGroup/index.d.ts +5 -0
- package/FormRadioGroup/index.js +35 -0
- package/FormRadioGroup/types.d.ts +16 -0
- package/FormRadioGroup/types.js +1 -0
- package/FormSelector/MultipleSelector.d.ts +4 -0
- package/FormSelector/MultipleSelector.js +34 -0
- package/FormSelector/SimpleSelector.d.ts +4 -0
- package/FormSelector/SimpleSelector.js +34 -0
- package/FormSelector/index.d.ts +3 -0
- package/FormSelector/index.js +3 -0
- package/FormSelector/types.d.ts +27 -0
- package/FormSelector/types.js +1 -0
- package/FormSelector/useInteractions.d.ts +6 -0
- package/FormSelector/useInteractions.js +12 -0
- package/HelpCaption/index.d.ts +10 -0
- package/HelpCaption/index.js +34 -0
- package/HelpCaption/useInteractions.d.ts +6 -0
- package/HelpCaption/useInteractions.js +12 -0
- package/LICENSE +21 -0
- package/LoadingModal/index.d.ts +5 -0
- package/LoadingModal/index.js +27 -0
- package/LoadingModal/types.d.ts +8 -0
- package/LoadingModal/types.js +1 -0
- package/MenuButtonGroup/MenuItem.d.ts +12 -0
- package/MenuButtonGroup/MenuItem.js +21 -0
- package/MenuButtonGroup/index.d.ts +13 -0
- package/MenuButtonGroup/index.js +100 -0
- package/NumberInput/index.d.ts +13 -0
- package/NumberInput/index.js +38 -0
- package/NumberInput/useInteractions.d.ts +17 -0
- package/NumberInput/useInteractions.js +54 -0
- package/PasswordInput/ConfirmPassword.d.ts +10 -0
- package/PasswordInput/ConfirmPassword.js +38 -0
- package/PasswordInput/Password.d.ts +18 -0
- package/PasswordInput/Password.js +68 -0
- package/PasswordInput/index.d.ts +4 -0
- package/PasswordInput/index.js +4 -0
- package/PhoneNumberInput/index.d.ts +11 -0
- package/PhoneNumberInput/index.js +44 -0
- package/PhoneNumberInput/useInteractions.d.ts +9 -0
- package/PhoneNumberInput/useInteractions.js +30 -0
- package/README.md +499 -0
- package/TabGroup/index.d.ts +5 -0
- package/TabGroup/index.js +46 -0
- package/TabGroup/types.d.ts +11 -0
- package/TabGroup/types.js +1 -0
- package/TextInput/index.d.ts +12 -0
- package/TextInput/index.js +35 -0
- package/TextInput/useInteractions.d.ts +6 -0
- package/TextInput/useInteractions.js +12 -0
- package/ToastPrompt/Logics.d.ts +12 -0
- package/ToastPrompt/Logics.js +37 -0
- package/ToastPrompt/Presentation.d.ts +16 -0
- package/ToastPrompt/Presentation.js +80 -0
- package/ToastPrompt/index.d.ts +13 -0
- package/ToastPrompt/index.js +29 -0
- package/VideoPlayerModal/index.d.ts +6 -0
- package/VideoPlayerModal/index.js +42 -0
- package/VideoPlayerModal/types.d.ts +8 -0
- package/VideoPlayerModal/types.js +1 -0
- package/index.d.ts +29 -0
- package/index.js +29 -0
- package/package.json +74 -0
@@ -0,0 +1,34 @@
|
|
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 Select from "@mui/material/Select";
|
14
|
+
import Tooltip from "@mui/material/Tooltip";
|
15
|
+
import MenuItem from "@mui/material/MenuItem";
|
16
|
+
import InputLabel from "@mui/material/InputLabel";
|
17
|
+
import FormControl from "@mui/material/FormControl";
|
18
|
+
import FormHelperText from "@mui/material/FormHelperText";
|
19
|
+
import useInteractions from "./useInteractions";
|
20
|
+
function MultipleSelector(props) {
|
21
|
+
var name = props.name, label = props.label, _a = props.variant, variant = _a === void 0 ? "outlined" : _a, value = props.value, tooltip = props.tooltip, _b = props.disabled, disabled = _b === void 0 ? false : _b, _c = props.multiple, multiple = _c === void 0 ? false : _c, _d = props.showHelperText, showHelperText = _d === void 0 ? false : _d, helperText = props.helperText, _e = props.error, error = _e === void 0 ? false : _e, _f = props.options, options = _f === void 0 ? [] : _f, onChange = props.onChange;
|
22
|
+
var _g = useInteractions(), tooltipOpen = _g.tooltipOpen, onOpenTooltip = _g.onOpenTooltip, onCloseTooltip = _g.onCloseTooltip;
|
23
|
+
return (_jsx(Tooltip, __assign({ title: tooltip !== null && tooltip !== void 0 ? tooltip : "", open: !!tooltip && tooltipOpen }, { children: _jsxs(FormControl, __assign({ variant: variant, disabled: disabled, error: error }, { children: [label && _jsx(InputLabel, __assign({ id: "symply-multiple-select" }, { children: label }), void 0), _jsx(Select, __assign({ value: value, name: name, disabled: disabled, multiple: true, onChange: function (event) {
|
24
|
+
var _a;
|
25
|
+
onChange((_a = event === null || event === void 0 ? void 0 : event.target) === null || _a === void 0 ? void 0 : _a.value);
|
26
|
+
}, inputProps: {
|
27
|
+
onFocus: onOpenTooltip,
|
28
|
+
onBlur: onCloseTooltip,
|
29
|
+
}, label: label, renderValue: multiple ? function (selected) { return selected.join("; "); } : undefined }, { children: (options === null || options === void 0 ? void 0 : options.length) > 0 ? (options.map(function (option) {
|
30
|
+
var _a = option, label = _a.label, value = _a.value;
|
31
|
+
return (_jsx(MenuItem, __assign({ value: value }, { children: label }), value));
|
32
|
+
})) : (_jsx(MenuItem, __assign({ value: "", disabled: true }, { children: "No Options" }), void 0)) }), void 0), !!helperText && showHelperText && (_jsx(FormHelperText, { children: showHelperText }, void 0))] }), void 0) }), void 0));
|
33
|
+
}
|
34
|
+
export default MultipleSelector;
|
@@ -0,0 +1,34 @@
|
|
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 Select from "@mui/material/Select";
|
14
|
+
import Tooltip from "@mui/material/Tooltip";
|
15
|
+
import MenuItem from "@mui/material/MenuItem";
|
16
|
+
import InputLabel from "@mui/material/InputLabel";
|
17
|
+
import FormControl from "@mui/material/FormControl";
|
18
|
+
import FormHelperText from "@mui/material/FormHelperText";
|
19
|
+
import useInteractions from "./useInteractions";
|
20
|
+
function SimpleSelector(props) {
|
21
|
+
var name = props.name, label = props.label, _a = props.variant, variant = _a === void 0 ? "outlined" : _a, value = props.value, tooltip = props.tooltip, _b = props.disabled, disabled = _b === void 0 ? false : _b, _c = props.showHelperText, showHelperText = _c === void 0 ? false : _c, helperText = props.helperText, _d = props.error, error = _d === void 0 ? false : _d, _e = props.options, options = _e === void 0 ? [] : _e, onChange = props.onChange;
|
22
|
+
var _f = useInteractions(), tooltipOpen = _f.tooltipOpen, onOpenTooltip = _f.onOpenTooltip, onCloseTooltip = _f.onCloseTooltip;
|
23
|
+
return (_jsx(Tooltip, __assign({ title: tooltip !== null && tooltip !== void 0 ? tooltip : "", open: !!tooltip && tooltipOpen }, { children: _jsxs(FormControl, __assign({ variant: variant, disabled: disabled, error: error }, { children: [label && _jsx(InputLabel, __assign({ id: "symply-simple-selector" }, { children: label }), void 0), _jsx(Select, __assign({ value: value, name: name, disabled: disabled, onChange: function (event) {
|
24
|
+
var _a;
|
25
|
+
onChange((_a = event === null || event === void 0 ? void 0 : event.target) === null || _a === void 0 ? void 0 : _a.value);
|
26
|
+
}, inputProps: {
|
27
|
+
onFocus: onOpenTooltip,
|
28
|
+
onBlur: onCloseTooltip,
|
29
|
+
}, label: label }, { children: (options === null || options === void 0 ? void 0 : options.length) > 0 ? (options.map(function (option) {
|
30
|
+
var label = option.label, value = option.value, disabled = option.disabled;
|
31
|
+
return (_jsx(MenuItem, __assign({ value: value, disabled: disabled }, { children: label }), value));
|
32
|
+
})) : (_jsx(MenuItem, __assign({ value: "", disabled: true }, { children: "No Options" }), void 0)) }), void 0), !!helperText && showHelperText && (_jsx(FormHelperText, { children: showHelperText }, void 0))] }), void 0) }), void 0));
|
33
|
+
}
|
34
|
+
export default SimpleSelector;
|
@@ -0,0 +1,27 @@
|
|
1
|
+
import { ReactNode } from "react";
|
2
|
+
import { SelectProps } from "@mui/material/Select";
|
3
|
+
interface SelectorBaseProps {
|
4
|
+
name?: string;
|
5
|
+
label?: string;
|
6
|
+
tooltip?: ReactNode;
|
7
|
+
variant?: SelectProps["variant"];
|
8
|
+
disabled?: SelectProps["disabled"];
|
9
|
+
showHelperText?: boolean;
|
10
|
+
helperText?: string;
|
11
|
+
error?: boolean;
|
12
|
+
multiple?: SelectProps["multiple"];
|
13
|
+
options: Array<{
|
14
|
+
label: string;
|
15
|
+
value: string | number;
|
16
|
+
disabled?: boolean;
|
17
|
+
}>;
|
18
|
+
}
|
19
|
+
export interface SimpleSelectorProps extends SelectorBaseProps {
|
20
|
+
value: number | string;
|
21
|
+
onChange: (value: string | number) => void;
|
22
|
+
}
|
23
|
+
export interface MultipleSelectorProps extends SelectorBaseProps {
|
24
|
+
value: Array<number> | Array<string>;
|
25
|
+
onChange: (value: string | Array<number> | Array<string>) => void;
|
26
|
+
}
|
27
|
+
export {};
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import { useState, useCallback } from 'react';
|
2
|
+
function useInteractions() {
|
3
|
+
var _a = useState(false), tooltipOpen = _a[0], setTooltipOpen = _a[1];
|
4
|
+
var onOpenTooltip = useCallback(function () {
|
5
|
+
setTooltipOpen(true);
|
6
|
+
}, []);
|
7
|
+
var onCloseTooltip = useCallback(function () {
|
8
|
+
setTooltipOpen(false);
|
9
|
+
}, []);
|
10
|
+
return { tooltipOpen: tooltipOpen, onOpenTooltip: onOpenTooltip, onCloseTooltip: onCloseTooltip };
|
11
|
+
}
|
12
|
+
export default useInteractions;
|
@@ -0,0 +1,10 @@
|
|
1
|
+
/// <reference types="react" />
|
2
|
+
export interface HelpCaptionProps {
|
3
|
+
mainCaption: string;
|
4
|
+
subCaption?: string;
|
5
|
+
linkUrl?: string;
|
6
|
+
linkText?: string;
|
7
|
+
linkType?: "WEBPAGE" | "VIDEO";
|
8
|
+
}
|
9
|
+
declare function HelpCaption(props: HelpCaptionProps): JSX.Element;
|
10
|
+
export default HelpCaption;
|
@@ -0,0 +1,34 @@
|
|
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, jsxs as _jsxs } from "react/jsx-runtime";
|
13
|
+
import Grid from "@mui/material/Grid";
|
14
|
+
import Typography from "@mui/material/Typography";
|
15
|
+
import useTheme from "@mui/material/styles/useTheme";
|
16
|
+
import VideoPlayerModal from "../VideoPlayerModal";
|
17
|
+
import useInteractions from "./useInteractions";
|
18
|
+
function HelpCaption(props) {
|
19
|
+
var mainCaption = props.mainCaption, subCaption = props.subCaption, linkUrl = props.linkUrl, _a = props.linkText, linkText = _a === void 0 ? "Watch Demo" : _a, _b = props.linkType, linkType = _b === void 0 ? "WEBPAGE" : _b;
|
20
|
+
var theme = useTheme();
|
21
|
+
var _c = useInteractions(), videoModalOpen = _c.videoModalOpen, onOpenVideoModal = _c.onOpenVideoModal, onCloseVideoModal = _c.onCloseVideoModal;
|
22
|
+
return (_jsxs(Grid, __assign({ container: true, spacing: 1, direction: subCaption ? "column" : "row" }, { children: [_jsx(Grid, __assign({ item: true }, { children: _jsx(Typography, __assign({ align: "left", component: "span" }, { children: mainCaption }), void 0) }), void 0), _jsxs(Grid, __assign({ item: true }, { children: [subCaption && (_jsxs(_Fragment, { children: [_jsx(Typography, __assign({ align: "left", component: "span" }, { children: subCaption }), void 0), "\u00A0"] }, void 0)), linkUrl && (_jsx(Typography, __assign({ onClick: linkType === "WEBPAGE"
|
23
|
+
? function () {
|
24
|
+
window.open(linkUrl);
|
25
|
+
}
|
26
|
+
: onOpenVideoModal, align: "left", color: "primary", component: "span", sx: {
|
27
|
+
cursor: "pointer",
|
28
|
+
"&:hover": {
|
29
|
+
color: theme.palette.primary.dark,
|
30
|
+
textDecoration: "underline",
|
31
|
+
},
|
32
|
+
} }, { children: _jsx("b", { children: linkText }, void 0) }), void 0))] }), void 0), linkUrl && (_jsx(VideoPlayerModal, { open: videoModalOpen, url: linkUrl, onClose: onCloseVideoModal }, void 0))] }), void 0));
|
33
|
+
}
|
34
|
+
export default HelpCaption;
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import { useState } from 'react';
|
2
|
+
function useInteractions() {
|
3
|
+
var _a = useState(false), videoModalOpen = _a[0], setVideoModalOpen = _a[1];
|
4
|
+
function onOpenVideoModal() {
|
5
|
+
setVideoModalOpen(true);
|
6
|
+
}
|
7
|
+
function onCloseVideoModal() {
|
8
|
+
setVideoModalOpen(false);
|
9
|
+
}
|
10
|
+
return { videoModalOpen: videoModalOpen, onOpenVideoModal: onOpenVideoModal, onCloseVideoModal: onCloseVideoModal };
|
11
|
+
}
|
12
|
+
export default useInteractions;
|
package/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2022 Symply Software Inc.
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
@@ -0,0 +1,27 @@
|
|
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 Box from "@mui/material/Box";
|
14
|
+
import Grid from "@mui/material/Grid";
|
15
|
+
import Dialog from "@mui/material/Dialog";
|
16
|
+
import DialogContent from "@mui/material/DialogContent";
|
17
|
+
import Typography from "@mui/material/Typography";
|
18
|
+
import CircularProgress from "@mui/material/CircularProgress";
|
19
|
+
function LoadingModal(props) {
|
20
|
+
var open = props.open, _a = props.text, text = _a === void 0 ? "Loading..." : _a, _b = props.direction, direction = _b === void 0 ? "column" : _b, _c = props.showProgess, showProgess = _c === void 0 ? false : _c, _d = props.percent, percent = _d === void 0 ? 0 : _d;
|
21
|
+
return (_jsx(Dialog, __assign({ maxWidth: "xs", open: open, sx: { backgroundColor: "#7A7A7A97" }, PaperProps: { sx: { backgroundColor: "#F2F2F2CF" } }, onClose: function (_, reason) {
|
22
|
+
if (reason === "backdropClick")
|
23
|
+
return;
|
24
|
+
}, disableEscapeKeyDown: true }, { children: _jsx(DialogContent, { children: _jsxs(Grid, __assign({ container: true, direction: direction, justifyContent: "space-between", alignItems: "center", "data-testid": "loading-grid" }, { children: [_jsxs(Box, __assign({ position: "relative", display: "inline-flex", sx: { mt: 1.25 } }, { children: [_jsx(CircularProgress, { size: showProgess ? 56 : 40, value: percent, variant: showProgess ? "determinate" : "indeterminate" }, void 0), showProgess && percent >= 0 && (_jsx(Box, __assign({ top: 0, left: 0, bottom: 0, right: 0, position: "absolute", display: "flex", alignItems: "center", justifyContent: "center" }, { children: _jsxs(Typography, __assign({ variant: "caption" }, { children: [Math.round(percent), "%"] }), void 0) }), void 0))] }), void 0), _jsx(Typography, __assign({ variant: "subtitle1", component: "span", sx: { mt: 1 } }, { children: text }), void 0)] }), void 0) }, void 0) }), void 0));
|
25
|
+
}
|
26
|
+
export default LoadingModal;
|
27
|
+
export * from "./types";
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1,12 @@
|
|
1
|
+
/// <reference types="react" />
|
2
|
+
import { MenuItemProps } from "@mui/material/MenuItem";
|
3
|
+
import { ListItemIconProps } from "@mui/material/ListItemIcon";
|
4
|
+
export interface ButtonItemProps {
|
5
|
+
buttonText: string;
|
6
|
+
buttonIcon?: ListItemIconProps["children"];
|
7
|
+
disabled?: boolean;
|
8
|
+
onClick: MenuItemProps["onClick"];
|
9
|
+
}
|
10
|
+
declare function ButtonMenuItem(props: ButtonItemProps): JSX.Element;
|
11
|
+
declare const _default: import("react").MemoExoticComponent<typeof ButtonMenuItem>;
|
12
|
+
export default _default;
|
@@ -0,0 +1,21 @@
|
|
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 { memo } from "react";
|
14
|
+
import MenuItem from "@mui/material/MenuItem";
|
15
|
+
import ListItemIcon from "@mui/material/ListItemIcon";
|
16
|
+
import ListItemText from "@mui/material/ListItemText";
|
17
|
+
function ButtonMenuItem(props) {
|
18
|
+
var buttonText = props.buttonText, buttonIcon = props.buttonIcon, _a = props.disabled, disabled = _a === void 0 ? false : _a, onClick = props.onClick;
|
19
|
+
return (_jsxs(MenuItem, __assign({ onClick: onClick, disabled: disabled }, { children: [buttonIcon && _jsx(ListItemIcon, { children: buttonIcon }, void 0), _jsx(ListItemText, { primary: buttonText }, void 0)] }), void 0));
|
20
|
+
}
|
21
|
+
export default memo(ButtonMenuItem);
|
@@ -0,0 +1,13 @@
|
|
1
|
+
/// <reference types="react" />
|
2
|
+
import { ButtonProps } from "@mui/material/Button";
|
3
|
+
import { ButtonItemProps } from "./MenuItem";
|
4
|
+
export interface MenuButtonGroupProps {
|
5
|
+
buttonText: string;
|
6
|
+
disabled?: boolean;
|
7
|
+
size?: ButtonProps["size"];
|
8
|
+
variant?: ButtonProps["variant"];
|
9
|
+
color?: ButtonProps["color"];
|
10
|
+
buttons: Array<ButtonItemProps>;
|
11
|
+
}
|
12
|
+
declare function MenuButtonGroup(props: MenuButtonGroupProps): JSX.Element;
|
13
|
+
export default MenuButtonGroup;
|
@@ -0,0 +1,100 @@
|
|
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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
13
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
14
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
15
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
16
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
17
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
18
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
19
|
+
});
|
20
|
+
};
|
21
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
22
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
23
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
24
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
25
|
+
function step(op) {
|
26
|
+
if (f) throw new TypeError("Generator is already executing.");
|
27
|
+
while (_) try {
|
28
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
29
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
30
|
+
switch (op[0]) {
|
31
|
+
case 0: case 1: t = op; break;
|
32
|
+
case 4: _.label++; return { value: op[1], done: false };
|
33
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
34
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
35
|
+
default:
|
36
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
37
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
38
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
39
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
40
|
+
if (t[2]) _.ops.pop();
|
41
|
+
_.trys.pop(); continue;
|
42
|
+
}
|
43
|
+
op = body.call(thisArg, _);
|
44
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
45
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
46
|
+
}
|
47
|
+
};
|
48
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
49
|
+
var t = {};
|
50
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
51
|
+
t[p] = s[p];
|
52
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
53
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
54
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
55
|
+
t[p[i]] = s[p[i]];
|
56
|
+
}
|
57
|
+
return t;
|
58
|
+
};
|
59
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
60
|
+
import { useState } from "react";
|
61
|
+
import Menu from "@mui/material/Menu";
|
62
|
+
import Button from "@mui/material/Button";
|
63
|
+
import ArrowDropDownIcon from "@mui/icons-material/ArrowDropDown";
|
64
|
+
import ButtonItem from "./MenuItem";
|
65
|
+
function MenuButtonGroup(props) {
|
66
|
+
var _this = this;
|
67
|
+
var buttonText = props.buttonText, buttons = props.buttons, size = props.size, _a = props.color, color = _a === void 0 ? "primary" : _a, _b = props.disabled, disabled = _b === void 0 ? false : _b, _c = props.variant, variant = _c === void 0 ? "outlined" : _c;
|
68
|
+
var _d = useState(null), anchorEl = _d[0], setAnchorEl = _d[1];
|
69
|
+
function onClick(event) {
|
70
|
+
setAnchorEl(event.currentTarget);
|
71
|
+
}
|
72
|
+
var onClose = function () {
|
73
|
+
setAnchorEl(null);
|
74
|
+
};
|
75
|
+
return (_jsxs(_Fragment, { children: [_jsx(Button, __assign({ "aria-controls": "customized-menu", "data-nw": "download-button", "aria-haspopup": "true", variant: variant, color: color, onClick: onClick, fullWidth: true, size: size, endIcon: _jsx(ArrowDropDownIcon, { fontSize: "small" }, void 0), disabled: disabled }, { children: buttonText }), void 0), _jsx(Menu, __assign({ id: "button-menu", anchorEl: anchorEl, keepMounted: true, elevation: 2, anchorOrigin: {
|
76
|
+
vertical: "bottom",
|
77
|
+
horizontal: "center",
|
78
|
+
}, transformOrigin: {
|
79
|
+
vertical: "top",
|
80
|
+
horizontal: "center",
|
81
|
+
}, open: Boolean(anchorEl), onClose: onClose }, { children: buttons.map(function (button) {
|
82
|
+
var onClick = button.onClick, buttonText = button.buttonText, rest = __rest(button, ["onClick", "buttonText"]);
|
83
|
+
return (_jsx(ButtonItem, __assign({ buttonText: buttonText }, rest, { onClick: function (event) { return __awaiter(_this, void 0, void 0, function () {
|
84
|
+
return __generator(this, function (_a) {
|
85
|
+
switch (_a.label) {
|
86
|
+
case 0:
|
87
|
+
if (!onClick) return [3, 2];
|
88
|
+
return [4, onClick(event)];
|
89
|
+
case 1:
|
90
|
+
_a.sent();
|
91
|
+
_a.label = 2;
|
92
|
+
case 2:
|
93
|
+
onClose();
|
94
|
+
return [2];
|
95
|
+
}
|
96
|
+
});
|
97
|
+
}); } }), buttonText));
|
98
|
+
}) }), void 0)] }, void 0));
|
99
|
+
}
|
100
|
+
export default MenuButtonGroup;
|
@@ -0,0 +1,13 @@
|
|
1
|
+
/// <reference types="react" />
|
2
|
+
import { TextFieldProps } from "@mui/material/TextField";
|
3
|
+
declare type TextProps = Omit<TextFieldProps, "onChange">;
|
4
|
+
export interface NumberInputProps {
|
5
|
+
onChange: (value: string) => void;
|
6
|
+
value: string;
|
7
|
+
integerOnly?: boolean;
|
8
|
+
tooltip?: string;
|
9
|
+
maxValue?: number;
|
10
|
+
minValue?: number;
|
11
|
+
}
|
12
|
+
declare function NumberInput(props: NumberInputProps & TextProps): JSX.Element;
|
13
|
+
export default NumberInput;
|
@@ -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 Tooltip from "@mui/material/Tooltip";
|
25
|
+
import Field from "@mui/material/TextField";
|
26
|
+
import useInteractions from "./useInteractions";
|
27
|
+
function NumberInput(props) {
|
28
|
+
var onChange = props.onChange, value = props.value, _a = props.size, size = _a === void 0 ? "small" : _a, tooltip = props.tooltip, _b = props.integerOnly, integerOnly = _b === void 0 ? false : _b, _c = props.minValue, minValue = _c === void 0 ? Number.MIN_SAFE_INTEGER : _c, _d = props.maxValue, maxValue = _d === void 0 ? Number.MAX_SAFE_INTEGER : _d, error = props.error, helperText = props.helperText, rest = __rest(props, ["onChange", "value", "size", "tooltip", "integerOnly", "minValue", "maxValue", "error", "helperText"]);
|
29
|
+
var EXCEED_ERROR = "Your value exceeds the exceptable input range";
|
30
|
+
if (maxValue < minValue)
|
31
|
+
throw new Error("Max should be bigger than min!");
|
32
|
+
var _e = useInteractions({ maxValue: maxValue, minValue: minValue, value: value, onChange: onChange }), exceedError = _e.exceedError, tooltipOpen = _e.tooltipOpen, handleBlur = _e.handleBlur, handleChange = _e.handleChange, onOpenTooltip = _e.onOpenTooltip, onCloseTooltip = _e.onCloseTooltip;
|
33
|
+
return (_jsx(Tooltip, __assign({ title: tooltip !== null && tooltip !== void 0 ? tooltip : "", open: !!tooltip && tooltipOpen }, { children: _jsx(Field, __assign({ size: size, margin: "dense", type: "number", value: value === undefined || value === null ? "" : value, onFocus: onOpenTooltip, onBlur: function () {
|
34
|
+
onCloseTooltip();
|
35
|
+
handleBlur();
|
36
|
+
}, onChange: handleChange, error: error || exceedError, helperText: helperText || (exceedError ? EXCEED_ERROR : "") }, rest), void 0) }), void 0));
|
37
|
+
}
|
38
|
+
export default NumberInput;
|
@@ -0,0 +1,17 @@
|
|
1
|
+
import { ChangeEvent } from "react";
|
2
|
+
interface InteractionProps {
|
3
|
+
value: string;
|
4
|
+
integerOnly?: boolean;
|
5
|
+
maxValue?: number;
|
6
|
+
minValue?: number;
|
7
|
+
onChange: (value: string) => void;
|
8
|
+
}
|
9
|
+
declare function useInteractions(props: InteractionProps): {
|
10
|
+
exceedError: boolean;
|
11
|
+
tooltipOpen: boolean;
|
12
|
+
handleBlur: () => void;
|
13
|
+
handleChange: (event: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => void;
|
14
|
+
onOpenTooltip: () => void;
|
15
|
+
onCloseTooltip: () => void;
|
16
|
+
};
|
17
|
+
export default useInteractions;
|
@@ -0,0 +1,54 @@
|
|
1
|
+
import { useState, useCallback, useMemo } from "react";
|
2
|
+
function useInteractions(props) {
|
3
|
+
var value = props.value, integerOnly = props.integerOnly, _a = props.minValue, minValue = _a === void 0 ? Number.MIN_SAFE_INTEGER : _a, _b = props.maxValue, maxValue = _b === void 0 ? Number.MAX_SAFE_INTEGER : _b, onChange = props.onChange;
|
4
|
+
var _c = useState(false), tooltipOpen = _c[0], setTooltipOpen = _c[1];
|
5
|
+
var exceedError = useMemo(function () { return !!value && (Number(value) < minValue || Number(value) > maxValue); }, []);
|
6
|
+
var handleChange = useCallback(function (event) {
|
7
|
+
event.preventDefault();
|
8
|
+
var val = event.currentTarget.value;
|
9
|
+
if (val !== "" && minValue >= 0 && val.includes("-"))
|
10
|
+
return;
|
11
|
+
if (integerOnly) {
|
12
|
+
if (val !== "" && val !== "-" && !/^\d+$/g.test(val))
|
13
|
+
return;
|
14
|
+
}
|
15
|
+
else if (val !== "" && val !== "-" && !/^(-?\d*)(\.\d*)?$/g.test(val))
|
16
|
+
return;
|
17
|
+
onChange(val);
|
18
|
+
}, []);
|
19
|
+
var handleBlur = useCallback(function () {
|
20
|
+
var excludedValue = [
|
21
|
+
null,
|
22
|
+
undefined,
|
23
|
+
".",
|
24
|
+
"",
|
25
|
+
"-",
|
26
|
+
"-.",
|
27
|
+
"null",
|
28
|
+
"undefined",
|
29
|
+
];
|
30
|
+
var strVal = String(value).trim();
|
31
|
+
if (strVal !== null && strVal.lastIndexOf(".") === strVal.length - 1) {
|
32
|
+
var newValue = strVal.substring(0, String(value).length - 1);
|
33
|
+
onChange(newValue);
|
34
|
+
}
|
35
|
+
else if (excludedValue.includes(strVal)) {
|
36
|
+
onChange("");
|
37
|
+
}
|
38
|
+
}, []);
|
39
|
+
var onOpenTooltip = useCallback(function () {
|
40
|
+
setTooltipOpen(true);
|
41
|
+
}, []);
|
42
|
+
var onCloseTooltip = useCallback(function () {
|
43
|
+
setTooltipOpen(false);
|
44
|
+
}, []);
|
45
|
+
return {
|
46
|
+
exceedError: exceedError,
|
47
|
+
tooltipOpen: tooltipOpen,
|
48
|
+
handleBlur: handleBlur,
|
49
|
+
handleChange: handleChange,
|
50
|
+
onOpenTooltip: onOpenTooltip,
|
51
|
+
onCloseTooltip: onCloseTooltip,
|
52
|
+
};
|
53
|
+
}
|
54
|
+
export default useInteractions;
|
@@ -0,0 +1,10 @@
|
|
1
|
+
/// <reference types="react" />
|
2
|
+
import { TextFieldProps } from "@mui/material/TextField";
|
3
|
+
declare type TextInputProps = Omit<TextFieldProps, "onChange">;
|
4
|
+
export interface ConfirmPasswordProps {
|
5
|
+
password: string;
|
6
|
+
value: string;
|
7
|
+
onChange: (value: string) => void;
|
8
|
+
}
|
9
|
+
declare function ConfirmPassword(props: ConfirmPasswordProps & TextInputProps): JSX.Element;
|
10
|
+
export default ConfirmPassword;
|
@@ -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 { useMemo } from "react";
|
25
|
+
import TextField from "@mui/material/TextField";
|
26
|
+
function ConfirmPassword(props) {
|
27
|
+
var password = props.password, _a = props.helperText, helperText = _a === void 0 ? "Passwords do not match" : _a, value = props.value, _b = props.label, label = _b === void 0 ? "Confirm Password" : _b, _c = props.name, name = _c === void 0 ? "confirmPassword" : _c, _d = props.variant, variant = _d === void 0 ? "outlined" : _d, _e = props.margin, margin = _e === void 0 ? "dense" : _e, disabled = props.disabled, onChange = props.onChange, rest = __rest(props, ["password", "helperText", "value", "label", "name", "variant", "margin", "disabled", "onChange"]);
|
28
|
+
var isMatched = useMemo(function () {
|
29
|
+
if ((value === null || value === void 0 ? void 0 : value.length) > 0 && password === value) {
|
30
|
+
return true;
|
31
|
+
}
|
32
|
+
return false;
|
33
|
+
}, [value, password]);
|
34
|
+
return (_jsx(TextField, __assign({ error: !isMatched, label: label, value: value, variant: variant, margin: margin, disabled: disabled, type: "password", size: "small", helperText: !isMatched && helperText, onChange: function (event) {
|
35
|
+
onChange(event.target.value);
|
36
|
+
}, fullWidth: true, required: true }, rest), void 0));
|
37
|
+
}
|
38
|
+
export default ConfirmPassword;
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import { CSSProperties } from "react";
|
2
|
+
import { TextFieldProps } from "@mui/material/TextField";
|
3
|
+
declare type TextInputProps = Omit<TextFieldProps, "onChange">;
|
4
|
+
export interface PasswordStrategyProps {
|
5
|
+
[key: string]: {
|
6
|
+
label: string;
|
7
|
+
regex: RegExp;
|
8
|
+
};
|
9
|
+
}
|
10
|
+
export interface PasswordProps {
|
11
|
+
strategies: PasswordStrategyProps;
|
12
|
+
value: string;
|
13
|
+
successColor?: CSSProperties["color"];
|
14
|
+
onChange: (value: string) => void;
|
15
|
+
onVerify?: (value: string) => boolean;
|
16
|
+
}
|
17
|
+
declare function Password(props: PasswordProps & TextInputProps): JSX.Element;
|
18
|
+
export default Password;
|