| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- "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 LoadingOutlined from "@ant-design/icons/es/icons/LoadingOutlined";
- import classNames from 'classnames';
- import { FormContext, FormItemInputContext } from '../context';
- import { getStatus } from '../util';
- const iconMap = {
- success: CheckCircleFilled,
- warning: ExclamationCircleFilled,
- error: CloseCircleFilled,
- validating: LoadingOutlined
- };
- export default function StatusProvider({
- children,
- errors,
- warnings,
- hasFeedback,
- validateStatus,
- prefixCls,
- meta,
- noStyle,
- name
- }) {
- const itemPrefixCls = `${prefixCls}-item`;
- const {
- feedbackIcons
- } = React.useContext(FormContext);
- const mergedValidateStatus = getStatus(errors, warnings, meta, null, !!hasFeedback, validateStatus);
- const {
- isFormItemInput: parentIsFormItemInput,
- status: parentStatus,
- hasFeedback: parentHasFeedback,
- feedbackIcon: parentFeedbackIcon,
- name: parentName
- } = React.useContext(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: classNames(`${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,
- name
- };
- // 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;
- context.name = name !== null && name !== void 0 ? name : parentName;
- }
- return context;
- }, [mergedValidateStatus, hasFeedback, noStyle, parentIsFormItemInput, parentStatus]);
- // ======================= Render =======================
- return /*#__PURE__*/React.createElement(FormItemInputContext.Provider, {
- value: formItemStatusContext
- }, children);
- }
|