dora-ui
Version:
A React.js Mobile UI Library
168 lines (136 loc) • 5.55 kB
JavaScript
;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
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 _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireWildcard(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _icon = _interopRequireDefault(require("../icon"));
var _popup = _interopRequireDefault(require("../popup"));
var _config = require("./config");
var _utils = require("../utils");
var prefixCls = 'dora-toast';
var ToastContent =
/*#__PURE__*/
function (_Component) {
(0, _inherits2.default)(ToastContent, _Component);
function ToastContent() {
var _getPrototypeOf2;
var _this;
(0, _classCallCheck2.default)(this, ToastContent);
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)(ToastContent)).call.apply(_getPrototypeOf2, [this].concat(args)));
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "timer", void 0);
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "isExecClose", false);
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "state", {
visible: true
});
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderIcon", function () {
var type = _this.props.type;
if (typeof ToastContent.icons[type] !== 'undefined') {
return _react.default.createElement("div", {
className: "".concat(prefixCls, "-icon")
}, ToastContent.icons[type]);
}
if (_this.isInfo) return null; // info类型没有Icon
return _react.default.createElement("div", {
className: "".concat(prefixCls, "-icon")
}, _react.default.createElement(_icon.default, {
type: type,
color: "#fff",
spinning: _this.isLoading,
size: "lg"
}));
});
return _this;
}
(0, _createClass2.default)(ToastContent, [{
key: "componentDidMount",
value: function componentDidMount() {
var _this2 = this;
var _this$props = this.props,
duration = _this$props.duration,
onClose = _this$props.onClose;
if (!this.isLoading && (0, _utils.isNumber)(duration)) {
// 非loading类型存在展示时间
this.timer = setTimeout(function () {
_this2.setState({
visible: false // 隐藏popup
}, function () {
_this2.isExecClose = true;
setTimeout(onClose, 300); // 执行完动画后再卸载组件并执行回调, visble:false时触发动画预留的时间:200
});
}, duration);
}
}
}, {
key: "componentWillUnmount",
value: function componentWillUnmount() {
if (!this.isExecClose) {
// 避免强制unmount(Toast.destroy)导致settimeout中的callback不会执行
this.props.onClose();
}
clearTimeout(this.timer);
}
}, {
key: "render",
value: function render() {
var visible = this.state.visible;
var _this$props2 = this.props,
container = _this$props2.container,
content = _this$props2.content,
mask = _this$props2.mask;
return _react.default.createElement(_popup.default, {
visible: visible,
node: container,
mask: mask,
maskClosable: false
}, _react.default.createElement("div", {
className: "".concat(prefixCls, "-content")
}, this.renderIcon(), _react.default.createElement("div", {
className: "".concat(prefixCls, "-text")
}, content)));
}
}, {
key: "isLoading",
get: function get() {
return this.props.type === _config.TOAST_TYPES.LOADING;
}
}, {
key: "isInfo",
get: function get() {
return this.props.type === _config.TOAST_TYPES.INFO;
}
}]);
return ToastContent;
}(_react.Component);
(0, _defineProperty2.default)(ToastContent, "useIcons", function (iconConfig) {
ToastContent.icons = iconConfig;
});
(0, _defineProperty2.default)(ToastContent, "icons", {});
(0, _defineProperty2.default)(ToastContent, "propTypes", {
container: _propTypes.default.any.isRequired,
type: _propTypes.default.string.isRequired,
content: _propTypes.default.node,
mask: _propTypes.default.bool,
duration: _propTypes.default.number,
onClose: _propTypes.default.func
});
(0, _defineProperty2.default)(ToastContent, "defaultProps", {
mask: false,
duration: 1500,
onClose: function onClose() {}
});
var _default = ToastContent;
exports.default = _default;