UNPKG

@nutui/nutui-react

Version:

京东风格的轻量级移动端 React 组件库,支持一套代码生成 H5 和小程序

58 lines (57 loc) 2.94 kB
import { _ as __rest } from "./tslib.es6.js"; import React__default, { useState, useEffect } from "react"; import classNames from "classnames"; import { C as ComponentDefaults } from "./typings.js"; import { B as Button } from "./button2.js"; const defaultStatus = { empty: "https://storage.360buyimg.com/imgtools/30186cfda0-0d3eee40-c0ac-11ee-9382-9125782aa3b8.png", error: "https://storage.360buyimg.com/imgtools/f3278d0ebb-0ce360c0-c0ac-11ee-8375-193101bb1a46.png", network: "https://storage.360buyimg.com/imgtools/43c30f7e29-0d483d10-c0ac-11ee-bec4-eb4d2a09a51d.png" }; const defaultProps = Object.assign(Object.assign({}, ComponentDefaults), { title: "", description: "", imageSize: "", size: "base", status: "empty", actions: [] }); const classPrefix = `nut-empty`; const Empty = (props) => { const _a = Object.assign(Object.assign({}, defaultProps), props), { image, imageSize, title, description, children, className, size, status, actions } = _a, rest = __rest(_a, ["image", "imageSize", "title", "description", "children", "className", "size", "status", "actions"]); const [imgStyle, setImgStyle] = useState({}); const imageUrl = image || defaultStatus[status]; const imageNode = typeof imageUrl === "string" ? React__default.createElement("img", { className: "img", src: imageUrl, alt: "empty" }) : imageUrl; useEffect(() => { setImgStyle(() => { if (!imageSize) { return {}; } if (typeof imageSize === "number") { return { width: `${imageSize}px`, height: `${imageSize}px` }; } return { width: imageSize, height: imageSize }; }); }, [imageSize]); const classes = classNames({ [`${classPrefix}-${size}`]: size !== "base" }); const cls = classNames(classPrefix, classes, className); return React__default.createElement( "div", Object.assign({ className: cls }, rest), React__default.createElement("div", { className: `${classPrefix}-image`, style: imgStyle }, imageNode), typeof title === "string" && title ? React__default.createElement("div", { className: `${classPrefix}-title` }, title) : title, typeof description === "string" ? React__default.createElement("div", { className: `${classPrefix}-description` }, description) : description, actions.length > 0 && React__default.createElement("div", { className: `${classPrefix}-actions` }, actions.map((item, index) => { return React__default.createElement(Button, { className: classNames({ [`${classPrefix}-actions-right`]: actions.length === 1, [`${classPrefix}-actions-left`]: actions.length > 1 && index === 0 }), type: `${actions.length > 1 && index === 0 ? "default" : "primary"}`, size: "small", fill: "outline", key: `action-${index}` }, item === null || item === void 0 ? void 0 : item.text); })), children ); }; Empty.displayName = "NutEmpty"; export { Empty as default };