amis-rpc-design/node_modules/antd/lib/form/FormItem/StatusProvider.js
2023-10-07 19:42:30 +08:00

83 lines
3.5 KiB
JavaScript

"use strict";
"use client";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
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");
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);
}