StatusProvider.js 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. "use strict";
  2. "use client";
  3. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
  4. var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
  5. Object.defineProperty(exports, "__esModule", {
  6. value: true
  7. });
  8. exports.default = StatusProvider;
  9. var React = _interopRequireWildcard(require("react"));
  10. var _CheckCircleFilled = _interopRequireDefault(require("@ant-design/icons/CheckCircleFilled"));
  11. var _CloseCircleFilled = _interopRequireDefault(require("@ant-design/icons/CloseCircleFilled"));
  12. var _ExclamationCircleFilled = _interopRequireDefault(require("@ant-design/icons/ExclamationCircleFilled"));
  13. var _LoadingOutlined = _interopRequireDefault(require("@ant-design/icons/LoadingOutlined"));
  14. var _classnames = _interopRequireDefault(require("classnames"));
  15. var _context = require("../context");
  16. var _util = require("../util");
  17. const iconMap = {
  18. success: _CheckCircleFilled.default,
  19. warning: _ExclamationCircleFilled.default,
  20. error: _CloseCircleFilled.default,
  21. validating: _LoadingOutlined.default
  22. };
  23. function StatusProvider({
  24. children,
  25. errors,
  26. warnings,
  27. hasFeedback,
  28. validateStatus,
  29. prefixCls,
  30. meta,
  31. noStyle,
  32. name
  33. }) {
  34. const itemPrefixCls = `${prefixCls}-item`;
  35. const {
  36. feedbackIcons
  37. } = React.useContext(_context.FormContext);
  38. const mergedValidateStatus = (0, _util.getStatus)(errors, warnings, meta, null, !!hasFeedback, validateStatus);
  39. const {
  40. isFormItemInput: parentIsFormItemInput,
  41. status: parentStatus,
  42. hasFeedback: parentHasFeedback,
  43. feedbackIcon: parentFeedbackIcon,
  44. name: parentName
  45. } = React.useContext(_context.FormItemInputContext);
  46. // ====================== Context =======================
  47. const formItemStatusContext = React.useMemo(() => {
  48. var _a;
  49. let feedbackIcon;
  50. if (hasFeedback) {
  51. const customIcons = hasFeedback !== true && hasFeedback.icons || feedbackIcons;
  52. const customIconNode = mergedValidateStatus && ((_a = customIcons === null || customIcons === void 0 ? void 0 : customIcons({
  53. status: mergedValidateStatus,
  54. errors,
  55. warnings
  56. })) === null || _a === void 0 ? void 0 : _a[mergedValidateStatus]);
  57. const IconNode = mergedValidateStatus && iconMap[mergedValidateStatus];
  58. feedbackIcon = customIconNode !== false && IconNode ? (/*#__PURE__*/React.createElement("span", {
  59. className: (0, _classnames.default)(`${itemPrefixCls}-feedback-icon`, `${itemPrefixCls}-feedback-icon-${mergedValidateStatus}`)
  60. }, customIconNode || /*#__PURE__*/React.createElement(IconNode, null))) : null;
  61. }
  62. const context = {
  63. status: mergedValidateStatus || '',
  64. errors,
  65. warnings,
  66. hasFeedback: !!hasFeedback,
  67. feedbackIcon,
  68. isFormItemInput: true,
  69. name
  70. };
  71. // No style will follow parent context
  72. if (noStyle) {
  73. context.status = (mergedValidateStatus !== null && mergedValidateStatus !== void 0 ? mergedValidateStatus : parentStatus) || '';
  74. context.isFormItemInput = parentIsFormItemInput;
  75. context.hasFeedback = !!(hasFeedback !== null && hasFeedback !== void 0 ? hasFeedback : parentHasFeedback);
  76. context.feedbackIcon = hasFeedback !== undefined ? context.feedbackIcon : parentFeedbackIcon;
  77. context.name = name !== null && name !== void 0 ? name : parentName;
  78. }
  79. return context;
  80. }, [mergedValidateStatus, hasFeedback, noStyle, parentIsFormItemInput, parentStatus]);
  81. // ======================= Render =======================
  82. return /*#__PURE__*/React.createElement(_context.FormItemInputContext.Provider, {
  83. value: formItemStatusContext
  84. }, children);
  85. }