zent
Version:
一套前端设计语言和基于React的实现
237 lines (185 loc) • 8.6 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.info = undefined;
var _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; };
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _class, _temp2;
exports.alert = alert;
exports.confirm = confirm;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _zentButton = require('zent-button');
var _zentButton2 = _interopRequireDefault(_zentButton);
var _zentDialog = require('zent-dialog');
var _zentIcon = require('zent-icon');
var _zentIcon2 = _interopRequireDefault(_zentIcon);
var _classnames = require('zent-utils/classnames');
var _classnames2 = _interopRequireDefault(_classnames);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var titleIconMap = {
info: 'info-circle-o',
success: 'check-circle-o',
error: 'close-circle-o',
warning: 'error-circle-o'
};
var commonProps = {
closeBtn: false,
maskClosable: false
};
function isPromise(a) {
return a && typeof a.then === 'function';
}
var ActionButton = (_temp2 = _class = function (_Component) {
_inherits(ActionButton, _Component);
function ActionButton() {
var _ref;
var _temp, _this, _ret;
_classCallCheck(this, ActionButton);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = ActionButton.__proto__ || Object.getPrototypeOf(ActionButton)).call.apply(_ref, [this].concat(args))), _this), _this.state = {
loading: false
}, _this.onClick = function () {
var _this$props = _this.props,
callback = _this$props.onClick,
getClose = _this$props.getClose;
var close = getClose();
// callback没传,直接关闭
if (!callback) {
return close();
}
var callbackHasArgs = callback.length > 0;
var value = callbackHasArgs ? callback(close) : callback();
// 返回值是个Promise,resolve后自动关闭
if (isPromise(value)) {
_this.setState({
loading: true
});
value.then(function () {
// 马上就关闭了,没必要setState({loading: true})
close();
});
return;
}
// callback无参数并且返回值不是false的时候自动关闭
if (!callbackHasArgs && value !== false) {
close();
}
}, _temp), _possibleConstructorReturn(_this, _ret);
}
_createClass(ActionButton, [{
key: 'render',
value: function render() {
var _props = this.props,
className = _props.className,
type = _props.type,
children = _props.children;
var loading = this.state.loading;
return _react2['default'].createElement(
_zentButton2['default'],
{ type: type, className: className, loading: loading, onClick: this.onClick },
children
);
}
}]);
return ActionButton;
}(_react.Component), _class.propTypes = {
getClose: _react.PropTypes.func.isRequired,
onClick: _react.PropTypes.func,
className: _react.PropTypes.string.isRequired,
type: _react.PropTypes.string.isRequired,
children: _react.PropTypes.node
}, _temp2);
function getTitle(title, type, prefix) {
if (!type) {
return title;
}
var icon = titleIconMap[type];
return _react2['default'].createElement(
'div',
{ className: prefix + '-sweetalert-icon-title' },
_react2['default'].createElement(_zentIcon2['default'], { className: prefix + '-sweetalert-type-icon', type: icon }),
title
);
}
function alert() {
var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var className = config.className,
prefix = config.prefix,
title = config.title,
type = config.type,
content = config.content,
confirmText = config.confirmText,
onConfirm = config.onConfirm,
otherProps = _objectWithoutProperties(config, ['className', 'prefix', 'title', 'type', 'content', 'confirmText', 'onConfirm']);
prefix = prefix || 'zent';
title = getTitle(title, type, prefix) || '提示';
className = className || '';
confirmText = confirmText || '我知道了';
var close = (0, _zentDialog.openDialog)(_extends({}, commonProps, {
prefix: prefix,
className: (0, _classnames2['default'])(prefix + '-sweetalert-alert', _defineProperty({}, className, !!className)),
title: title,
children: content,
footer: _react2['default'].createElement(
ActionButton,
{ type: 'primary', className: prefix + '-sweetalert-alert-btn-confirm', getClose: function getClose() {
return close;
}, onClick: onConfirm },
confirmText
)
}, otherProps));
return close;
}
var info = exports.info = alert;
function confirm() {
var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var className = config.className,
prefix = config.prefix,
title = config.title,
type = config.type,
content = config.content,
confirmText = config.confirmText,
onConfirm = config.onConfirm,
cancelText = config.cancelText,
onCancel = config.onCancel,
otherProps = _objectWithoutProperties(config, ['className', 'prefix', 'title', 'type', 'content', 'confirmText', 'onConfirm', 'cancelText', 'onCancel']);
className = className || '';
prefix = prefix || 'zent';
title = getTitle(title, type, prefix) || '确认';
confirmText = confirmText || '确定';
cancelText = cancelText || '取消';
var close = (0, _zentDialog.openDialog)(_extends({}, commonProps, {
prefix: prefix,
className: (0, _classnames2['default'])(prefix + '-sweetalert-confirm', _defineProperty({}, className, !!className)),
title: title,
children: content,
footer: [_react2['default'].createElement(
ActionButton,
{ key: 'ok', type: 'primary', className: prefix + '-sweetalert-confirm-btn-confirm', getClose: function getClose() {
return close;
}, onClick: onConfirm },
confirmText
), _react2['default'].createElement(
ActionButton,
{ key: 'cancel', type: 'default', className: prefix + '-sweetalert-confirm-btn-cancel', getClose: function getClose() {
return close;
}, onClick: onCancel },
cancelText
)]
}, otherProps));
return close;
}
exports['default'] = {
alert: alert,
info: info,
confirm: confirm
};
;