UNPKG

antd

Version:

An enterprise-class UI design language and React components implementation

114 lines (113 loc) 3.86 kB
"use client"; import * as React from 'react'; import CheckCircleFilled from "@ant-design/icons/es/icons/CheckCircleFilled"; import CloseCircleFilled from "@ant-design/icons/es/icons/CloseCircleFilled"; import ExclamationCircleFilled from "@ant-design/icons/es/icons/ExclamationCircleFilled"; import WarningFilled from "@ant-design/icons/es/icons/WarningFilled"; import classNames from 'classnames'; import { devUseWarning } from '../_util/warning'; import { ConfigContext } from '../config-provider'; import noFound from './noFound'; import serverError from './serverError'; import useStyle from './style'; import unauthorized from './unauthorized'; export const IconMap = { success: CheckCircleFilled, error: CloseCircleFilled, info: ExclamationCircleFilled, warning: WarningFilled }; export const ExceptionMap = { '404': noFound, '500': serverError, '403': unauthorized }; // ExceptionImageMap keys const ExceptionStatus = Object.keys(ExceptionMap); const Icon = _ref => { let { prefixCls, icon, status } = _ref; const className = classNames(`${prefixCls}-icon`); if (process.env.NODE_ENV !== 'production') { const warning = devUseWarning('Result'); process.env.NODE_ENV !== "production" ? warning(!(typeof icon === 'string' && icon.length > 2), 'breaking', `\`icon\` is using ReactNode instead of string naming in v4. Please check \`${icon}\` at https://ant.design/components/icon`) : void 0; } if (ExceptionStatus.includes(`${status}`)) { const SVGComponent = ExceptionMap[status]; return /*#__PURE__*/React.createElement("div", { className: `${className} ${prefixCls}-image` }, /*#__PURE__*/React.createElement(SVGComponent, null)); } const iconNode = /*#__PURE__*/React.createElement(IconMap[status]); if (icon === null || icon === false) { return null; } return /*#__PURE__*/React.createElement("div", { className: className }, icon || iconNode); }; const Extra = _ref2 => { let { prefixCls, extra } = _ref2; if (!extra) { return null; } return /*#__PURE__*/React.createElement("div", { className: `${prefixCls}-extra` }, extra); }; const Result = _ref3 => { let { prefixCls: customizePrefixCls, className: customizeClassName, rootClassName, subTitle, title, style, children, status = 'info', icon, extra } = _ref3; const { getPrefixCls, direction, result } = React.useContext(ConfigContext); const prefixCls = getPrefixCls('result', customizePrefixCls); // Style const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls); const className = classNames(prefixCls, `${prefixCls}-${status}`, customizeClassName, result === null || result === void 0 ? void 0 : result.className, rootClassName, { [`${prefixCls}-rtl`]: direction === 'rtl' }, hashId, cssVarCls); const mergedStyle = Object.assign(Object.assign({}, result === null || result === void 0 ? void 0 : result.style), style); return wrapCSSVar(/*#__PURE__*/React.createElement("div", { className: className, style: mergedStyle }, /*#__PURE__*/React.createElement(Icon, { prefixCls: prefixCls, status: status, icon: icon }), /*#__PURE__*/React.createElement("div", { className: `${prefixCls}-title` }, title), subTitle && /*#__PURE__*/React.createElement("div", { className: `${prefixCls}-subtitle` }, subTitle), /*#__PURE__*/React.createElement(Extra, { prefixCls: prefixCls, extra: extra }), children && /*#__PURE__*/React.createElement("div", { className: `${prefixCls}-content` }, children))); }; Result.PRESENTED_IMAGE_403 = ExceptionMap['403']; Result.PRESENTED_IMAGE_404 = ExceptionMap['404']; Result.PRESENTED_IMAGE_500 = ExceptionMap['500']; if (process.env.NODE_ENV !== 'production') { Result.displayName = 'Result'; } export default Result;