UNPKG

@krowdy-ui/views

Version:

React components that implement Google's Material Design.

174 lines (168 loc) 4.86 kB
import React from 'react'; import PropTypes from 'prop-types'; import { withStyles } from '@krowdy-ui/styles'; import { Modal, Backdrop, Card, CardContent, Typography, CardHeader, IconButton, ExpansionPanel, ExpansionPanelSummary, ExpansionPanelDetails } from '@krowdy-ui/core'; import { AvatarUser } from '@krowdy-ui/views'; import { ExpandMore as ExpandMoreIcon, Close as CloseIcon } from '@material-ui/icons'; export const styles = theme => ({ card: { display: 'flex', flexDirection: 'column', height: '90%', paddingBottom: 30 }, cardContentRoot: { flex: 1, height: '100%', overflow: 'auto' }, collapsesContent: { height: 'calc(100% - 160px)' }, expandContent: { height: '40vh', overflow: 'auto' }, expandHeader: { background: theme.palette.grey[50], border: `1px solid ${theme.palette.grey[100]}`, height: 40, minHeight: 40 }, expandHeaderTitle: { color: theme.palette.grey[900], fontSize: '0.875rem', fontWeight: 'bold' }, expandIcon: { color: theme.palette.primary.main }, expandItem: { '&$expandedItem': { margin: 0 }, '&:before': { content: 'none' }, boxShadow: 'none' }, expandedItem: {}, headerAvatar: { marginRight: theme.spacing(2) }, headerProfile: { display: 'flex' }, headerProfileContent: { display: 'flex', justifyContent: 'space-between', padding: theme.spacing(2, 0) }, modal: { alignItems: 'center', display: 'flex', justifyContent: 'center' } }); var _ref = /*#__PURE__*/React.createElement(CloseIcon, null); function ModalKrowder(props) { const { open, onclose, user = {}, action, onChangeCollapse, headerContent, collapses = [], classes, minWidth = 320 } = props; const [expanded, setExpanded] = React.useState(false); const _handleChangeCollapse = panel => (event, isExpanded) => { onChangeCollapse({ event, isExpanded, panel }); setExpanded(isExpanded ? panel : false); }; const _handleOnClose = () => { onclose(); setExpanded(false); }; return /*#__PURE__*/React.createElement(Modal, { BackdropComponent: Backdrop, BackdropProps: { timeout: 500 }, className: classes.modal, closeAfterTransition: true, disableAutoFocus: true, onClose: _handleOnClose, open: open }, /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Card, { className: classes.card, style: { minWidth: minWidth } }, /*#__PURE__*/React.createElement(CardHeader, { action: /*#__PURE__*/React.createElement(IconButton, { "aria-label": "settings", onClick: _handleOnClose }, _ref), title: "Editar Krowder" }), /*#__PURE__*/React.createElement(CardContent, { classes: { root: classes.cardContentRoot } }, /*#__PURE__*/React.createElement("div", { className: classes.headerProfileContent }, /*#__PURE__*/React.createElement("div", { className: classes.headerProfile }, /*#__PURE__*/React.createElement("div", { className: classes.headerAvatar }, /*#__PURE__*/React.createElement(AvatarUser, { user: user })), headerContent), /*#__PURE__*/React.createElement("div", { className: classes.headerProfileActions }, action)), /*#__PURE__*/React.createElement("div", { className: classes.collapsesContent }, collapses.length ? collapses.map((item, n) => /*#__PURE__*/React.createElement(ExpansionPanel, { classes: { expanded: classes.expandedItem }, className: classes.expandItem, expanded: expanded === item.key, key: n, onChange: _handleChangeCollapse(item.key) }, /*#__PURE__*/React.createElement(ExpansionPanelSummary, { className: classes.expandHeader, expandIcon: /*#__PURE__*/React.createElement(ExpandMoreIcon, { className: classes.expandIcon }) }, /*#__PURE__*/React.createElement(Typography, { className: classes.expandHeaderTitle }, item.title)), /*#__PURE__*/React.createElement(ExpansionPanelDetails, null, item.component ? item.component : null))) : null))))); } process.env.NODE_ENV !== "production" ? ModalKrowder.propTypes = { action: PropTypes.element, classes: PropTypes.object, collapses: PropTypes.arrayOf(PropTypes.shape({ component: PropTypes.element.isRequired, title: PropTypes.string.isRequired })), headerContent: PropTypes.element, minWidth: PropTypes.string, onChangeCollapse: PropTypes.func, onclose: PropTypes.func.isRequired, open: PropTypes.bool.isRequired, user: PropTypes.shape({ firstName: PropTypes.string, lastName: PropTypes.string, photo: PropTypes.string }) } : void 0; ModalKrowder.muiName = 'ModalKrowder'; export default withStyles(styles, { name: 'ModalKrowder' })(ModalKrowder);