mobile-more
Version:
基于 antd-mobile v5 扩展移动端 UI 组件
86 lines (83 loc) • 2.94 kB
JavaScript
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
import _extends from "@babel/runtime/helpers/esm/extends";
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
var _excluded = ["className", "icon", "content"];
import React from 'react';
import { CenterPopup, SpinLoading } from 'antd-mobile';
import { render, unmount } from "rc-util/es/React/render";
import classNames from 'classnames';
import { prefixClass } from "../../config";
import "./index.css";
import { useConfig } from "../BizConfigProvider";
var prefixCls = "".concat(prefixClass, "-preloader");
var BizPreloader = function BizPreloader(props) {
var _useConfig = useConfig(),
locale = _useConfig.locale;
var className = props.className,
_props$icon = props.icon,
icon = _props$icon === void 0 ? /*#__PURE__*/React.createElement(SpinLoading, {
style: {
'--size': '48px',
'--color': 'white'
}
}) : _props$icon,
_props$content = props.content,
content = _props$content === void 0 ? locale.preloader.content : _props$content,
restProps = _objectWithoutProperties(props, _excluded);
return /*#__PURE__*/React.createElement(CenterPopup, _extends({
className: classNames(prefixCls, className),
getContainer: function getContainer() {
return document.body;
},
destroyOnClose: true
// mask={false}
}, restProps), /*#__PURE__*/React.createElement("div", {
className: "".concat(prefixCls, "-icon")
}, icon), /*#__PURE__*/React.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 = _objectSpread(_objectSpread({}, defaultProps), {}, {
afterClose: function afterClose() {
var _defaultProps$afterCl;
defaultProps === null || defaultProps === void 0 || (_defaultProps$afterCl = defaultProps.afterClose) === null || _defaultProps$afterCl === void 0 || _defaultProps$afterCl.call(defaultProps);
unmount(container);
},
visible: true
});
render( /*#__PURE__*/React.createElement(BizPreloader, props), container);
};
var close = function close() {
count = count > 0 ? count - 1 : 0;
if (count === 0) {
render( /*#__PURE__*/React.createElement(BizPreloader, _extends({}, 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` 替代。
*/
export var Preloader = BizPreloader;
/**
* @deprecated 即将废弃,请使用 `BizPreloaderProps` 替代。
*/
export default BizPreloader;