UNPKG

oneframe-react

Version:

Oneframe React ## Components, Hooks, Helper Functions & State Management

78 lines (77 loc) 4.73 kB
"use strict"; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; result["default"] = mod; return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = __importStar(require("react")); const core_1 = require("@material-ui/core"); const Form_1 = __importDefault(require("../Form")); const lodash_1 = require("lodash"); const prop_types_1 = __importDefault(require("prop-types")); const ModalComponent = (props) => { const { fullWidth, fullScreen, maxWidth, disableBackdropClick, disableEscapeKeyDown, onBackdropClick, onEscapeKeyDown, onEnter, onEntered, onEntering, onExit, onExited, onExiting, onClose, scroll, formSubmit, title, show, footer, children, } = props; const initialState = { open: false, }; const [state, setState] = react_1.useState(initialState); const handleClose = () => { setState((prevState) => (Object.assign(Object.assign({}, prevState), { open: false }))); onClose && onClose(); }; react_1.useEffect(() => { setState((prevState) => (Object.assign(Object.assign({}, prevState), { open: show }))); }, [show, setState]); const renderDialogContent = () => { return (react_1.default.createElement(react_1.default.Fragment, null, title && (react_1.default.createElement(core_1.DialogTitle, { id: "max-width-dialog-title", className: `oneframe-modal-title` }, title, react_1.default.createElement("div", { style: { position: 'absolute', right: 20, top: 10, cursor: 'pointer', }, onClick: () => handleClose() }, react_1.default.createElement("i", { className: "fal fa-times" })))), react_1.default.createElement(core_1.DialogContent, { className: `oneframe-modal-body` }, children), footer && react_1.default.createElement(core_1.DialogActions, { className: `oneframe-modal-footer` }, footer))); }; const renderDialog = () => { if (formSubmit) { return react_1.default.createElement(Form_1.default, { onSubmit: formSubmit }, renderDialogContent()); } return renderDialogContent(); }; return (react_1.default.createElement(core_1.Dialog, { fullWidth: maxWidth ? true : fullWidth || false, fullScreen: fullScreen, maxWidth: maxWidth || false, open: state.open, scroll: scroll, onClose: handleClose, "aria-labelledby": "max-width-dialog-title", keepMounted: true, disableBackdropClick: disableBackdropClick || undefined, disableEscapeKeyDown: disableEscapeKeyDown || undefined, onBackdropClick: () => (onBackdropClick ? onBackdropClick() : {}), onEscapeKeyDown: () => (onEscapeKeyDown ? onEscapeKeyDown() : {}), onEnter: () => (onEnter ? onEnter() : {}), onEntered: () => (onEntered ? onEntered() : {}), onEntering: () => (onEntering ? onEntering() : {}), onExit: () => (onExit ? onExit() : {}), onExited: () => (onExited ? onExited() : {}), onExiting: () => (onExiting ? onExiting() : {}), className: `oneframe-modal` }, renderDialog())); }; ModalComponent.propTypes = { show: prop_types_1.default.bool.isRequired, disableBackdropClick: prop_types_1.default.bool, disableEscapeKeyDown: prop_types_1.default.bool, fullWidth: prop_types_1.default.bool, fullScreen: prop_types_1.default.bool, children: prop_types_1.default.any.isRequired, keepMounted: prop_types_1.default.any, formSubmit: prop_types_1.default.any, scroll: prop_types_1.default.oneOf(['body', 'paper', undefined]), maxWidth: prop_types_1.default.oneOf(['xs', 'sm', 'md', 'lg', 'xl', false, undefined]), title: prop_types_1.default.oneOfType([prop_types_1.default.node, prop_types_1.default.string]), footer: prop_types_1.default.oneOfType([prop_types_1.default.node, prop_types_1.default.string]), onClose: prop_types_1.default.func, onBackdropClick: prop_types_1.default.func, onEnter: prop_types_1.default.func, onEntered: prop_types_1.default.func, onEntering: prop_types_1.default.func, onExit: prop_types_1.default.func, onExited: prop_types_1.default.func, onExiting: prop_types_1.default.func, onEscapeKeyDown: prop_types_1.default.func, }; exports.ModalTmp = ModalComponent; exports.default = react_1.default.memo(ModalComponent, (p, n) => lodash_1.isEqual(p, n));