mobile-more
Version:
基于 antd-mobile v5 扩展移动端 UI 组件
85 lines (84 loc) • 3.44 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.Preloader = void 0;
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _react = _interopRequireDefault(require("react"));
var _antdMobile = require("antd-mobile");
var _render = require("rc-util/es/React/render");
var _classnames = _interopRequireDefault(require("classnames"));
var _config = require("../../config");
require("./index.css");
var _BizConfigProvider = require("../BizConfigProvider");
var _excluded = ["className", "icon", "content"];
var prefixCls = "".concat(_config.prefixClass, "-preloader");
var BizPreloader = function BizPreloader(props) {
var _useConfig = (0, _BizConfigProvider.useConfig)(),
locale = _useConfig.locale;
var className = props.className,
_props$icon = props.icon,
icon = _props$icon === void 0 ? /*#__PURE__*/_react.default.createElement(_antdMobile.SpinLoading, {
style: {
'--size': '48px',
'--color': 'white'
}
}) : _props$icon,
_props$content = props.content,
content = _props$content === void 0 ? locale.preloader.content : _props$content,
restProps = (0, _objectWithoutProperties2.default)(props, _excluded);
return /*#__PURE__*/_react.default.createElement(_antdMobile.CenterPopup, (0, _objectSpread2.default)({
className: (0, _classnames.default)(prefixCls, className),
getContainer: function getContainer() {
return document.body;
},
destroyOnClose: true
}, restProps), /*#__PURE__*/_react.default.createElement("div", {
className: "".concat(prefixCls, "-icon")
}, icon), /*#__PURE__*/_react.default.createElement("div", {
className: "".concat(prefixCls, "-content")
}, content));
};
var container = document.createElement('div');
var props;
var count = 0;
var show = function show(options) {
++count;
if (count > 1) {
return;
}
var defaultProps = typeof options === 'string' ? {
content: options
} : options;
props = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, defaultProps), {}, {
afterClose: function afterClose() {
var _defaultProps$afterCl;
defaultProps === null || defaultProps === void 0 ? void 0 : (_defaultProps$afterCl = defaultProps.afterClose) === null || _defaultProps$afterCl === void 0 ? void 0 : _defaultProps$afterCl.call(defaultProps);
(0, _render.unmount)(container);
},
visible: true
});
(0, _render.render)(/*#__PURE__*/_react.default.createElement(BizPreloader, (0, _objectSpread2.default)({}, props)), container);
};
var close = function close() {
count = count > 0 ? count - 1 : 0;
if (count === 0) {
(0, _render.render)(/*#__PURE__*/_react.default.createElement(BizPreloader, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, props), {}, {
visible: false
})), container);
}
};
var clear = function clear() {
count = count > 1 ? 1 : count;
close();
};
BizPreloader.show = show;
BizPreloader.close = close;
BizPreloader.clear = clear;
/**
* @deprecated 即将废弃,请使用 `BizPreloader` 替代。
*/
var Preloader = exports.Preloader = BizPreloader;
var _default = exports.default = BizPreloader;