@symply.io/basic-components 1.3.11-alpha.3 → 1.3.11-alpha.5

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.
@@ -0,0 +1,3 @@
1
+ import { PromptProps } from "./types";
2
+ declare function Prompt(props: PromptProps): JSX.Element;
3
+ export default Prompt;
@@ -9,34 +9,27 @@ var __assign = (this && this.__assign) || function () {
9
9
  };
10
10
  return __assign.apply(this, arguments);
11
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 { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
24
- import Typography from "@mui/material/Typography";
25
- import ThemeProvider from "@mui/material/styles/ThemeProvider";
12
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import { useMemo } from "react";
26
14
  import Slide from "@mui/material/Slide";
27
- import SnackbarContent from "@mui/material/SnackbarContent";
28
15
  import Snackbar from "@mui/material/Snackbar";
16
+ import Typography from "@mui/material/Typography";
17
+ import SnackbarContent from "@mui/material/SnackbarContent";
18
+ import ThemeProvider from "@mui/material/styles/ThemeProvider";
29
19
  import InfoIcon from "@mui/icons-material/Info";
30
20
  import ErrorIcon from "@mui/icons-material/Error";
31
21
  import WarningIcon from "@mui/icons-material/Warning";
32
22
  import SuccessIcon from "@mui/icons-material/CheckCircle";
33
23
  import { green, amber, red, blue } from "@mui/material/colors";
34
24
  import useCustomTheme from "../useCustomTheme";
35
- function Presentation(props) {
25
+ var Transition = function (args) {
26
+ return _jsx(Slide, __assign({}, args, { direction: "up" }));
27
+ };
28
+ function Prompt(props) {
36
29
  var _a;
37
- var _b = props.open, open = _b === void 0 ? false : _b, _c = props.vertical, vertical = _c === void 0 ? "bottom" : _c, _d = props.horizontal, horizontal = _d === void 0 ? "left" : _d, _e = props.timeout, timeout = _e === void 0 ? 3000 : _e, onClose = props.onClose, _f = props.transitionDirection, transitionDirection = _f === void 0 ? "up" : _f, _g = props.message, message = _g === void 0 ? "Unknown message" : _g, _h = props.icon, icon = _h === void 0 ? _jsx(_Fragment, {}) : _h, _j = props.variant, variant = _j === void 0 ? "info" : _j, other = __rest(props, ["open", "vertical", "horizontal", "timeout", "onClose", "transitionDirection", "message", "icon", "variant"]);
30
+ var open = props.open, icon = props.icon, variant = props.variant, message = props.message, timeout = props.timeout, onClose = props.onClose;
38
31
  var theme = useCustomTheme();
39
- var styles = {
32
+ var styles = useMemo(function () { return ({
40
33
  success: {
41
34
  backgroundColor: green[500]
42
35
  },
@@ -49,21 +42,18 @@ function Presentation(props) {
49
42
  warning: {
50
43
  backgroundColor: amber["A700"]
51
44
  }
52
- };
53
- var Transition = function (args) {
54
- return _jsx(Slide, __assign({}, args, { direction: transitionDirection }));
55
- };
56
- var VariantIcon = {
45
+ }); }, []);
46
+ var VariantIcon = useMemo(function () { return ({
57
47
  success: SuccessIcon,
58
48
  warning: WarningIcon,
59
49
  error: ErrorIcon,
60
50
  info: InfoIcon
61
- };
62
- var Icon = VariantIcon[variant];
63
- return (_jsx(ThemeProvider, __assign({ theme: theme }, { children: _jsx(Snackbar, __assign({ anchorOrigin: { vertical: vertical, horizontal: horizontal }, open: open, onClose: onClose, autoHideDuration: timeout, TransitionComponent: Transition, sx: {
51
+ }); }, []);
52
+ var Icon = useMemo(function () { return VariantIcon[variant]; }, []);
53
+ return (_jsx(ThemeProvider, __assign({ theme: theme }, { children: _jsx(Snackbar, __assign({ anchorOrigin: { vertical: "bottom", horizontal: "left" }, open: open, onClose: onClose, autoHideDuration: timeout, TransitionComponent: Transition, sx: {
64
54
  zIndex: 99999,
65
55
  marginTop: "3vh"
66
- } }, { children: _jsx(SnackbarContent, __assign({ sx: __assign(__assign({}, styles[variant]), { root: (_a = {},
56
+ } }, { children: _jsx(SnackbarContent, { sx: __assign(__assign({}, styles[variant]), { root: (_a = {},
67
57
  _a[theme.breakpoints.down("sm")] = {
68
58
  maxWidth: "320px",
69
59
  borderRadius: "4px"
@@ -73,10 +63,10 @@ function Presentation(props) {
73
63
  fontWeight: 700,
74
64
  display: "flex",
75
65
  alignItems: "center"
76
- } }, { children: [variant ? (_jsx(Icon, { sx: {
66
+ } }, { children: [!icon ? (_jsx(Icon, { sx: {
77
67
  fontSize: 20,
78
68
  opacity: 0.9,
79
69
  marginRight: theme.spacing(1)
80
- } })) : (_jsx(_Fragment, { children: icon })), message] })) }, other)) }), "".concat(Date.now() * Math.round(Math.random()))) })));
70
+ } })) : (_jsx(_Fragment, { children: icon })), message] })) }) }), "".concat(Date.now() * Math.round(Math.random()))) })));
81
71
  }
82
- export default Presentation;
72
+ export default Prompt;
@@ -1,13 +1,5 @@
1
- import { ReactNode } from "react";
2
- export interface PromptProviderProps {
3
- children: ReactNode;
4
- }
5
- export interface ShowPromptProps {
6
- type: "success" | "warning" | "error" | "info";
7
- message: string | 400;
8
- timeout?: number;
9
- }
1
+ import Prompt from "./Prompt";
2
+ import { PromptProviderProps, PromptContextProps } from "./types";
10
3
  export declare function PromptProvider(props: PromptProviderProps): JSX.Element;
11
- export declare function usePrompt(): {
12
- showPrompt: (props: ShowPromptProps) => void;
13
- };
4
+ export declare function usePrompt(): PromptContextProps;
5
+ export default Prompt;
@@ -10,20 +10,18 @@ var __assign = (this && this.__assign) || function () {
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
12
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
13
- import { createContext, useRef, useContext } from "react";
14
- import Logics from "./Logics";
15
- import Presentation from "./Presentation";
16
- var PromptContext = createContext({});
13
+ import { createContext, useContext } from "react";
14
+ import Prompt from "./Prompt";
15
+ import useInteractions from "./useInteractions";
16
+ var PromptContext = createContext({
17
+ showPrompt: function () { }
18
+ });
17
19
  export function PromptProvider(props) {
18
20
  var children = props.children;
19
- var toastRef = useRef(null);
20
- function showPrompt(props) {
21
- var type = props.type, message = props.message, timeout = props.timeout;
22
- var _a = ((toastRef === null || toastRef === void 0 ? void 0 : toastRef.current) || {}).show, show = _a === void 0 ? function () { } : _a;
23
- show(type, message, timeout);
24
- }
25
- return (_jsx(PromptContext.Provider, __assign({ value: { showPrompt: showPrompt } }, { children: _jsxs(_Fragment, { children: [children, _jsx(Logics, __assign({ ref: toastRef }, { children: _jsx(Presentation, {}) }))] }) })));
21
+ var _a = useInteractions(), promptArgs = _a.promptArgs, onShow = _a.onShow, onHide = _a.onHide;
22
+ return (_jsx(PromptContext.Provider, __assign({ value: { showPrompt: onShow } }, { children: _jsxs(_Fragment, { children: [children, _jsx(Prompt, __assign({}, promptArgs, { onClose: onHide }))] }) })));
26
23
  }
27
24
  export function usePrompt() {
28
25
  return useContext(PromptContext);
29
26
  }
27
+ export default Prompt;
@@ -0,0 +1,35 @@
1
+ import { CSSProperties, ReactNode } from "react";
2
+ import { SnackbarCloseReason } from "@mui/material/Snackbar";
3
+ import { SvgIconComponent } from "@mui/icons-material";
4
+ export declare type Variant = "success" | "warning" | "info" | "error";
5
+ export declare type PromptStyles = Record<Variant, {
6
+ backgroundColor: CSSProperties["color"];
7
+ }>;
8
+ export declare type PromptIcons = Record<Variant, SvgIconComponent>;
9
+ declare type PromptArgs = {
10
+ message: string;
11
+ variant: Variant;
12
+ timeout: number;
13
+ };
14
+ export interface InterfaceStates {
15
+ promptArgs: PromptArgs & Record<"open", boolean>;
16
+ onHide: (_: any, reason: SnackbarCloseReason) => void;
17
+ onShow: (args: PromptArgs) => void;
18
+ }
19
+ export interface PromptProps extends PromptArgs {
20
+ open: boolean;
21
+ icon?: SvgIconComponent;
22
+ onClose: InterfaceStates["onHide"];
23
+ }
24
+ export interface PromptStates {
25
+ styles: PromptStyles;
26
+ icons: PromptIcons;
27
+ icon: SvgIconComponent;
28
+ }
29
+ export interface PromptProviderProps {
30
+ children: ReactNode;
31
+ }
32
+ export interface PromptContextProps {
33
+ showPrompt: InterfaceStates["onShow"];
34
+ }
35
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,14 @@
1
+ declare function useInteractions(): {
2
+ promptArgs: {
3
+ message: string;
4
+ variant: import("./types").Variant;
5
+ timeout: number;
6
+ } & Record<"open", boolean>;
7
+ onShow: (args: {
8
+ message: string;
9
+ variant: import("./types").Variant;
10
+ timeout: number;
11
+ }) => void;
12
+ onHide: (_: any, reason: import("@mui/material").SnackbarCloseReason) => void;
13
+ };
14
+ export default useInteractions;
@@ -0,0 +1,33 @@
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 { useState, useCallback } from "react";
13
+ function useInteractions() {
14
+ var ERROR_MESSAGE = "Internal Server Error";
15
+ var _a = useState({
16
+ open: false,
17
+ message: "Saved",
18
+ variant: "success",
19
+ timeout: 3500
20
+ }), promptArgs = _a[0], setPromptArgs = _a[1];
21
+ var onHide = useCallback(function (_, reason) {
22
+ if (reason === "clickaway") {
23
+ return;
24
+ }
25
+ setPromptArgs(function (args) { return (__assign(__assign({}, args), { open: false })); });
26
+ }, []);
27
+ var onShow = useCallback(function (args) {
28
+ var _a = args.message, message = _a === void 0 ? "Unknown message" : _a, _b = args.variant, variant = _b === void 0 ? "info" : _b, _c = args.timeout, timeout = _c === void 0 ? 3500 : _c;
29
+ setPromptArgs({ open: true, message: message, variant: variant, timeout: timeout });
30
+ }, []);
31
+ return { promptArgs: promptArgs, onShow: onShow, onHide: onHide };
32
+ }
33
+ export default useInteractions;
package/index.d.ts CHANGED
@@ -48,4 +48,5 @@ export { default as SocialInput } from "./SocialInput";
48
48
  export { default as TabGroup } from "./TabGroup";
49
49
  export { default as TablePagination } from "./TablePagination";
50
50
  export { default as TextInput } from "./TextInput";
51
+ export { default as ToastPrompt } from "./ToastPrompt";
51
52
  export { default as VideoPlayerModal } from "./VideoPlayerModal";
package/index.js CHANGED
@@ -48,4 +48,5 @@ export { default as SocialInput } from "./SocialInput";
48
48
  export { default as TabGroup } from "./TabGroup";
49
49
  export { default as TablePagination } from "./TablePagination";
50
50
  export { default as TextInput } from "./TextInput";
51
+ export { default as ToastPrompt } from "./ToastPrompt";
51
52
  export { default as VideoPlayerModal } from "./VideoPlayerModal";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@symply.io/basic-components",
3
- "version": "1.3.11-alpha.3",
3
+ "version": "1.3.11-alpha.5",
4
4
  "description": "Basic and reusable components for all frontend of Symply apps",
5
5
  "keywords": [
6
6
  "react",
@@ -1,12 +0,0 @@
1
- /// <reference types="react" />
2
- interface LogicsProps {
3
- children: React.ReactNode | undefined;
4
- }
5
- export interface PromptPropsType {
6
- open: boolean;
7
- message: string | number;
8
- variant: "success" | "warning" | "error" | "info" | undefined;
9
- timeout: number;
10
- }
11
- declare const Logics: import("react").ForwardRefExoticComponent<LogicsProps & import("react").RefAttributes<unknown>>;
12
- export default Logics;
@@ -1,37 +0,0 @@
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 { useState, cloneElement, forwardRef, useImperativeHandle } from "react";
13
- var ERROR_MESSAGE = "Internal Server Error";
14
- var Logics = forwardRef(function (props, ref) {
15
- var children = props.children;
16
- var _a = useState({
17
- open: false,
18
- message: "Saved",
19
- variant: "success",
20
- timeout: 3500
21
- }), promptProps = _a[0], setPromptProps = _a[1];
22
- function hide(_, reason) {
23
- if (reason === "clickaway") {
24
- return;
25
- }
26
- setPromptProps(__assign(__assign({}, promptProps), { open: false }));
27
- }
28
- function show(type, message, timeout) {
29
- if (timeout === void 0) { timeout = 3500; }
30
- setPromptProps(__assign(__assign({}, promptProps), { open: true, variant: type, message: message === 400 ? ERROR_MESSAGE : message, timeout: timeout }));
31
- }
32
- useImperativeHandle(ref, function () { return ({
33
- show: show
34
- }); });
35
- return cloneElement(children, __assign(__assign({}, promptProps), { onClose: hide }));
36
- });
37
- export default Logics;
@@ -1,16 +0,0 @@
1
- import { ElementType } from "react";
2
- import { SlideProps } from "@mui/material/Slide";
3
- import { SnackbarOrigin } from "@mui/material/Snackbar";
4
- interface ToastPromptProps {
5
- open?: boolean;
6
- vertical?: SnackbarOrigin["vertical"];
7
- horizontal?: SnackbarOrigin["horizontal"];
8
- timeout?: number;
9
- onClose?: () => void;
10
- transitionDirection?: SlideProps["direction"];
11
- message?: string;
12
- icon?: ElementType;
13
- variant?: "success" | "warning" | "info" | "error";
14
- }
15
- declare function Presentation(props: ToastPromptProps): JSX.Element;
16
- export default Presentation;