UNPKG

@fruits-chain/react-native-xiaoshu

Version:
66 lines (57 loc) 2.15 kB
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } import React, { memo } from 'react'; import { View } from 'react-native'; import { useTheme, widthStyle } from '../theme'; import { SuccessOutLine, WarningOutline, CrossOutline } from '../icon'; import { renderTextLikeJSX } from '../helpers'; import { createStyles } from './style'; const renderStatusIcon = (status, size) => { const props = { size, color: '#fff' }; switch (status) { case 'success': return /*#__PURE__*/React.createElement(SuccessOutLine, props); case 'warning': case 'info': return /*#__PURE__*/React.createElement(WarningOutline, props); case 'error': return /*#__PURE__*/React.createElement(CrossOutline, props); default: return null; } }; /** * Result结果 * @description 用于反馈一系列操作任务的处理结果。 */ const Result = _ref => { let { subtitleTextStyle, titleTextStyle, title, subtitle, extra, renderIcon, status, style, ...restProps } = _ref; const THEME_VAR = useTheme(); const STYLES = widthStyle(THEME_VAR, createStyles); const color = THEME_VAR[`result_${status}_color`] || THEME_VAR.primary; const iconSize = THEME_VAR.result_icon_size / 4 * 3; const iconJSX = renderIcon ? renderIcon(color, iconSize) : /*#__PURE__*/React.createElement(View, { style: [STYLES.icon, { backgroundColor: color }] }, renderStatusIcon(status, iconSize)); const titleJSX = renderTextLikeJSX(title, [STYLES.titleText, titleTextStyle]); const subtitleJSX = renderTextLikeJSX(subtitle, [STYLES.subtitleText, subtitleTextStyle]); return /*#__PURE__*/React.createElement(View, _extends({}, restProps, { style: [STYLES.result, style] }), iconJSX, titleJSX, subtitleJSX, extra); }; export default /*#__PURE__*/memo(Result); //# sourceMappingURL=index.js.map