UNPKG

@6thquake/react-material

Version:

React components that implement Google's Material Design.

261 lines (215 loc) 7.38 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.styles = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf3 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _react = _interopRequireDefault(require("react")); var _reactDom = _interopRequireDefault(require("react-dom")); var _propTypes = _interopRequireDefault(require("prop-types")); var _withStyles = _interopRequireDefault(require("../styles/withStyles")); var _Popover = _interopRequireDefault(require("../Popover")); var _content = _interopRequireDefault(require("./content")); /** * @ignore - do not document. */ var styles = function styles(theme) { return { box: { display: 'inline-block' }, anchorElementBox: { // padding: theme.spacing(1), boxSizing: 'border-box', display: 'inline-block' }, contentBox: {} }; }; exports.styles = styles; var Popconfirm = /*#__PURE__*/ function (_React$Component) { (0, _inherits2.default)(Popconfirm, _React$Component); function Popconfirm() { var _getPrototypeOf2; var _this; (0, _classCallCheck2.default)(this, Popconfirm); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = (0, _possibleConstructorReturn2.default)(this, (_getPrototypeOf2 = (0, _getPrototypeOf3.default)(Popconfirm)).call.apply(_getPrototypeOf2, [this].concat(args))); _this.state = { open: false, anchorReference: 'anchorEl' }; _this.anchorEl = null; _this.anchorRef = _react.default.createRef(); _this.handleClick = function (e) { _this.setState({ open: true }); }; _this.handleClose = function () { _this.setState({ open: false }); }; _this.confirm = function () { _this.props.onConfirm && _this.props.onConfirm(); _this.setState({ open: false }); }; _this.cancel = function () { _this.props.onCancel && _this.props.onCancel(); _this.setState({ open: false }); }; return _this; } (0, _createClass2.default)(Popconfirm, [{ key: "componentDidMount", value: function componentDidMount() { var el = _reactDom.default.findDOMNode(this.anchorRef.current); this.setState({ anchorEl: el }); } }, { key: "render", value: function render() { var _this$props = this.props, color = _this$props.color, variant = _this$props.variant, type = _this$props.type, size = _this$props.size, classes = _this$props.classes, children = _this$props.children, cancelText = _this$props.cancelText, okText = _this$props.okText, content = _this$props.content, other = (0, _objectWithoutProperties2.default)(_this$props, ["color", "variant", "type", "size", "classes", "children", "cancelText", "okText", "content"]); var _this$state = this.state, open = _this$state.open, positionTop = _this$state.positionTop, positionLeft = _this$state.positionLeft, anchorReference = _this$state.anchorReference, anchorEl = _this$state.anchorEl; return _react.default.createElement("div", null, _react.default.createElement("div", { className: classes.box, ref: this.anchorRef, onClick: this.handleClick }, _react.default.createElement("div", null), _react.default.createElement("div", { className: classes.anchorElementBox }, children), _react.default.createElement("div", null)), _react.default.createElement(_Popover.default, (0, _extends2.default)({}, other, { open: open, anchorEl: anchorEl, anchorReferencecode: anchorReference, anchorPosition: { top: positionTop, left: positionLeft }, onClose: this.handleClose, anchorOrigin: this.props.anchorOrigin, transformOrigin: this.props.transformOrigin }), _react.default.createElement("div", { className: classes.contentBox }, _react.default.createElement(_content.default, { onCancel: this.cancel, onConfirm: this.confirm, cancelText: cancelText, okText: okText, content: content, color: color, variant: variant, type: type, size: size })))); } }]); return Popconfirm; }(_react.default.Component); Popconfirm.propTypes = { /** * This is the point on the popconfirm which will attach to the children */ anchorOrigin: _propTypes.default.shape({ horizontal: _propTypes.default.oneOf(['left', 'center', 'right']), vertical: _propTypes.default.oneOf(['top', 'center', 'bottom']) }), /** * The name of the cancel button */ cancelText: _propTypes.default.string, children: _propTypes.default.node, /** * Override or extend the styles applied to the component. * See [CSS API](#css-api) below for more details. */ classes: _propTypes.default.object.isRequired, /** * The color of the confirm button. */ color: _propTypes.default.oneOf(['default', 'inherit', 'primary', 'secondary']), /** * The content of popconfirm */ content: _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.string, _propTypes.default.func]), /** * The name of the confirm button */ okText: _propTypes.default.string, /** * Callback fired when canceled */ onCancel: _propTypes.default.func, /** * Callback fired when confirmed */ onConfirm: _propTypes.default.func, /** * The size of buttons */ size: _propTypes.default.oneOf(['small', 'medium', 'large']), /** * This is the point on the popconfirm where the popconfirm's children will attach to. */ transformOrigin: _propTypes.default.shape({ horizontal: _propTypes.default.oneOf(['left', 'center', 'right']), vertical: _propTypes.default.oneOf(['top', 'center', 'bottom']) }), /** * The type of the confirm button. */ type: _propTypes.default.string, /** * @ignore will be spread to the confirm button */ variant: _propTypes.default.oneOf(['text', 'flat', 'outlined', 'contained', 'raised', 'fab', 'extendedFab']) }; Popconfirm.defaultProps = { anchorOrigin: { vertical: 'top', horizontal: 'center' }, transformOrigin: { vertical: 'bottom', horizontal: 'center' }, color: 'primary', size: 'small', variant: 'text' }; var _default = (0, _withStyles.default)(styles, { name: 'RMPopconfirm' })(Popconfirm); exports.default = _default;