UNPKG

django-bananas

Version:
174 lines (173 loc) 7.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.AlertController = exports.Alert = void 0; var _Button = _interopRequireDefault(require("@mui/material/Button")); var _Dialog = _interopRequireDefault(require("@mui/material/Dialog")); var _DialogActions = _interopRequireDefault(require("@mui/material/DialogActions")); var _DialogContent = _interopRequireDefault(require("@mui/material/DialogContent")); var _DialogContentText = _interopRequireDefault(require("@mui/material/DialogContentText")); var _DialogTitle = _interopRequireDefault(require("@mui/material/DialogTitle")); var _Slide = _interopRequireDefault(require("@mui/material/Slide")); var _styles = require("@mui/styles"); var _propTypes = _interopRequireDefault(require("prop-types")); var _react = _interopRequireDefault(require("react")); var _utils = require("./utils"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } var styles = theme => ({ root: {}, agree: {}, dismiss: { color: theme.palette.error.main, "&:hover": { backgroundColor: theme.palette.action.hover } } }); var Transition = /*#__PURE__*/_react.default.forwardRef((props, ref) => /*#__PURE__*/_react.default.createElement(_Slide.default, _extends({ direction: "down", ref: ref }, props))); Transition.displayName = "SlideTransition"; class Alert extends _react.default.Component { constructor() { super(...arguments); _defineProperty(this, "onAgree", () => { var { onClose, onAgree } = this.props; if (onClose) { onClose(); } if (onAgree) { onAgree(); } }); _defineProperty(this, "onDismiss", () => { var { onClose, onDismiss } = this.props; if (onClose) { onClose(); } if (onDismiss) { onDismiss(); } }); } render() { var { classes, open, title, message, agree, dismiss, keepMounted } = this.props; return /*#__PURE__*/_react.default.createElement(_Dialog.default, { open: open, fullWidth: true, TransitionComponent: Transition, keepMounted: keepMounted, onClose: this.onDismiss, "aria-labelledby": "alert-dialog-slide-title", "aria-describedby": "alert-dialog-slide-description", classes: { root: classes.root } }, title && /*#__PURE__*/_react.default.createElement(_DialogTitle.default, { id: "alert-dialog-slide-title" }, title), message && /*#__PURE__*/_react.default.createElement(_DialogContent.default, null, /*#__PURE__*/_react.default.createElement(_DialogContentText.default, { id: "alert-dialog-slide-description" }, message)), /*#__PURE__*/_react.default.createElement(_DialogActions.default, null, dismiss && /*#__PURE__*/_react.default.createElement(_Button.default, { onClick: this.onDismiss, color: "secondary", classes: { textSecondary: classes.dismiss } }, typeof dismiss === "boolean" ? "Cancel" : dismiss), agree && /*#__PURE__*/_react.default.createElement(_Button.default, { onClick: this.onAgree, color: "primary", classes: { textPrimary: classes.agree } }, typeof agree === "boolean" ? "Ok" : agree))); } } _defineProperty(Alert, "propTypes", { classes: _propTypes.default.object.isRequired, open: _propTypes.default.bool, title: _propTypes.default.string, message: _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.string]), agree: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.string]), dismiss: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.string]), onAgree: _propTypes.default.func, onDismiss: _propTypes.default.func, onClose: _propTypes.default.func, keepMounted: _propTypes.default.bool }); _defineProperty(Alert, "defaultProps", { open: true, title: null, message: null, agree: true, dismiss: true, onAgree: undefined, onDismiss: undefined, onClose: undefined, keepMounted: true }); var BananasAlert = exports.Alert = (0, _styles.withStyles)(styles, { name: "BananasAlert" })(Alert); class AlertController extends _react.default.Component { constructor() { super(...arguments); _defineProperty(this, "state", { open: false }); } alert(props) { var state = typeof props === "string" ? { message: props, dismiss: false } : props; this.setState(_objectSpread(_objectSpread({}, state), {}, { open: true })); } confirm(props) { /* Texts from Django admin translation messages, please don't change */ var confirm = _objectSpread({ title: (0, _utils.t)("Are you sure?"), agree: (0, _utils.t)("Yes, I'm sure"), dismiss: (0, _utils.t)("No, take me back") }, typeof props === "string" ? { message: props } : props); this.alert(confirm); } dismissModal() { this.setState(_objectSpread(_objectSpread({}, this.state.alert), {}, { open: false })); } render() { return /*#__PURE__*/_react.default.createElement(BananasAlert, _extends({}, this.state, { onClose: this.dismissModal.bind(this) })); } } exports.AlertController = AlertController; _defineProperty(AlertController, "expose", ["alert", "confirm", "dismissModal"]); var _default = exports.default = BananasAlert;