UNPKG

antd-v5

Version:

An enterprise-class UI design language and React components implementation

84 lines (83 loc) 4.29 kB
"use strict"; "use client"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = StatusProvider; var React = _interopRequireWildcard(require("react")); var _CheckCircleFilled = _interopRequireDefault(require("@ant-design/icons/CheckCircleFilled")); var _CloseCircleFilled = _interopRequireDefault(require("@ant-design/icons/CloseCircleFilled")); var _ExclamationCircleFilled = _interopRequireDefault(require("@ant-design/icons/ExclamationCircleFilled")); var _LoadingOutlined = _interopRequireDefault(require("@ant-design/icons/LoadingOutlined")); var _classnames = _interopRequireDefault(require("classnames")); var _context = require("../context"); var _util = require("../util"); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } const iconMap = { success: _CheckCircleFilled.default, warning: _ExclamationCircleFilled.default, error: _CloseCircleFilled.default, validating: _LoadingOutlined.default }; function StatusProvider(_ref) { let { children, errors, warnings, hasFeedback, validateStatus, prefixCls, meta, noStyle } = _ref; const itemPrefixCls = `${prefixCls}-item`; const { feedbackIcons } = React.useContext(_context.FormContext); const mergedValidateStatus = (0, _util.getStatus)(errors, warnings, meta, null, !!hasFeedback, validateStatus); const { isFormItemInput: parentIsFormItemInput, status: parentStatus, hasFeedback: parentHasFeedback, feedbackIcon: parentFeedbackIcon } = React.useContext(_context.FormItemInputContext); // ====================== Context ======================= const formItemStatusContext = React.useMemo(() => { var _a; let feedbackIcon; if (hasFeedback) { const customIcons = hasFeedback !== true && hasFeedback.icons || feedbackIcons; const customIconNode = mergedValidateStatus && ((_a = customIcons === null || customIcons === void 0 ? void 0 : customIcons({ status: mergedValidateStatus, errors, warnings })) === null || _a === void 0 ? void 0 : _a[mergedValidateStatus]); const IconNode = mergedValidateStatus && iconMap[mergedValidateStatus]; feedbackIcon = customIconNode !== false && IconNode ? ( /*#__PURE__*/React.createElement("span", { className: (0, _classnames.default)(`${itemPrefixCls}-feedback-icon`, `${itemPrefixCls}-feedback-icon-${mergedValidateStatus}`) }, customIconNode || /*#__PURE__*/React.createElement(IconNode, null))) : null; } const context = { status: mergedValidateStatus || '', errors, warnings, hasFeedback: !!hasFeedback, feedbackIcon, isFormItemInput: true }; // No style will follow parent context if (noStyle) { context.status = (mergedValidateStatus !== null && mergedValidateStatus !== void 0 ? mergedValidateStatus : parentStatus) || ''; context.isFormItemInput = parentIsFormItemInput; context.hasFeedback = !!(hasFeedback !== null && hasFeedback !== void 0 ? hasFeedback : parentHasFeedback); context.feedbackIcon = hasFeedback !== undefined ? context.feedbackIcon : parentFeedbackIcon; } return context; }, [mergedValidateStatus, hasFeedback, noStyle, parentIsFormItemInput, parentStatus]); // ======================= Render ======================= return /*#__PURE__*/React.createElement(_context.FormItemInputContext.Provider, { value: formItemStatusContext }, children); }