@vtex/styleguide
Version:
> VTEX Styleguide React components ([Docs](https://vtex.github.io/styleguide))
110 lines (85 loc) • 3.79 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _react = require("react");
var _react2 = _interopRequireDefault(_react);
var _propTypes = require("prop-types");
var _propTypes2 = _interopRequireDefault(_propTypes);
var _Modal = require("../Modal");
var _Modal2 = _interopRequireDefault(_Modal);
var _Button = require("../Button");
var _Button2 = _interopRequireDefault(_Button);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _extends() { _extends = Object.assign || 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); }
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
var NOOP = function NOOP() {};
var ModalDialog =
/*#__PURE__*/
function (_Component) {
_inheritsLoose(ModalDialog, _Component);
function ModalDialog() {
var _this;
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = _Component.call.apply(_Component, [this].concat(args)) || this;
_this.handleCloseTransitionFinish = function () {
_this.props.onCloseTransitionFinish && _this.props.onCloseTransitionFinish();
};
_this.handleConfirmation = function () {
_this.props.confirmation && _this.props.confirmation.onClick && _this.props.confirmation.onClick();
};
_this.handleCancelation = function () {
_this.props.cancelation && _this.props.cancelation.onClick && _this.props.cancelation.onClick();
};
return _this;
}
var _proto = ModalDialog.prototype;
_proto.render = function render() {
var _this$props = this.props,
confirmation = _this$props.confirmation,
cancelation = _this$props.cancelation,
loading = _this$props.loading,
onClose = _this$props.onClose;
return _react2.default.createElement(_Modal2.default, _extends({}, this.props, {
onClose: loading ? NOOP : onClose,
onCloseTransitionFinish: this.handleCloseTransitionFinish
}), this.props.children, _react2.default.createElement("div", {
className: "vtex-modal__confirmation flex justify-end mt8"
}, _react2.default.createElement("span", {
className: "mr4"
}, _react2.default.createElement(_Button2.default, {
testId: cancelation.testId,
size: "small",
variation: "tertiary",
disabled: loading,
onClick: this.handleCancelation
}, cancelation.label)), _react2.default.createElement(_Button2.default, {
testId: confirmation.testId,
size: "small",
variation: confirmation.isDangerous ? 'danger' : 'primary',
isLoading: loading,
onClick: this.handleConfirmation
}, confirmation.label)));
};
return ModalDialog;
}(_react.Component);
ModalDialog.propTypes = {
children: _propTypes2.default.node,
confirmation: _propTypes2.default.shape({
label: _propTypes2.default.string.isRequired,
onClick: _propTypes2.default.func.isRequired,
isDangerous: _propTypes2.default.bool,
testId: _propTypes2.default.string
}).isRequired,
cancelation: _propTypes2.default.shape({
label: _propTypes2.default.string.isRequired,
onClick: _propTypes2.default.func.isRequired,
testId: _propTypes2.default.string
}).isRequired,
onClose: _propTypes2.default.func,
loading: _propTypes2.default.bool,
onCloseTransitionFinish: _propTypes2.default.func
};
exports.default = ModalDialog;