zent
Version:
一套前端设计语言和基于React的实现
32 lines (31 loc) • 1.69 kB
JavaScript
import { __assign } from "tslib";
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
import cx from 'classnames';
import LoadingMask from './components/LoadingMask';
import useDelayed from './hooks/useDelayed';
import { hasOwnProperty } from '../utils/hasOwn';
export function BlockLoading(props) {
var height = getHeight(props);
var _a = props.loading, loading = _a === void 0 ? false : _a, _b = props.delay, delay = _b === void 0 ? 0 : _b, className = props.className, children = props.children, _c = props.icon, icon = _c === void 0 ? 'circle' : _c, iconSize = props.iconSize, iconText = props.iconText, _d = props.textPosition, textPosition = _d === void 0 ? 'bottom' : _d, _e = props.colorPreset, colorPreset = _e === void 0 ? 'primary' : _e;
var hasChildren = !!children;
var delayed = useDelayed({ loading: loading, delay: delay });
var showMask = !delayed && loading;
if (!showMask && !hasChildren) {
return null;
}
return (_jsxs("div", __assign({ className: cx('zent-loading', 'zent-loading--block', className, {
'zent-loading--has-children': hasChildren,
}), style: { height: height }, "data-zv": '10.0.17' }, { children: [children, showMask && (_jsx(LoadingMask, { icon: icon, size: iconSize, text: iconText, textPosition: textPosition, colorPreset: colorPreset }, void 0))] }), void 0));
}
function getHeight(props) {
var hasHeightProp = hasOwnProperty(props, 'height');
var children = props.children;
if (!children && !hasHeightProp) {
return 160;
}
if (children && !hasHeightProp) {
return 'initial';
}
return props.height;
}
export default BlockLoading;