UNPKG

mobile-more

Version:

基于 antd-mobile v5 扩展移动端 UI 组件

86 lines (83 loc) 2.94 kB
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;