UNPKG

5.06 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5var _typeof = require("@babel/runtime/helpers/typeof");
6
7Object.defineProperty(exports, "__esModule", {
8 value: true
9});
10exports["default"] = ErrorList;
11
12var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
14var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
16var React = _interopRequireWildcard(require("react"));
17
18var _classnames = _interopRequireDefault(require("classnames"));
19
20var _rcMotion = _interopRequireDefault(require("rc-motion"));
21
22var _useMemo = _interopRequireDefault(require("rc-util/lib/hooks/useMemo"));
23
24var _useCacheErrors3 = _interopRequireDefault(require("./hooks/useCacheErrors"));
25
26var _useForceUpdate = _interopRequireDefault(require("../_util/hooks/useForceUpdate"));
27
28var _context = require("./context");
29
30var _configProvider = require("../config-provider");
31
32function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
33
34function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
35
36var EMPTY_LIST = [];
37
38function ErrorList(_ref) {
39 var _ref$errors = _ref.errors,
40 errors = _ref$errors === void 0 ? EMPTY_LIST : _ref$errors,
41 help = _ref.help,
42 onDomErrorVisibleChange = _ref.onDomErrorVisibleChange;
43 var forceUpdate = (0, _useForceUpdate["default"])();
44
45 var _React$useContext = React.useContext(_context.FormItemPrefixContext),
46 prefixCls = _React$useContext.prefixCls,
47 status = _React$useContext.status;
48
49 var _React$useContext2 = React.useContext(_configProvider.ConfigContext),
50 getPrefixCls = _React$useContext2.getPrefixCls;
51
52 var _useCacheErrors = (0, _useCacheErrors3["default"])(errors, function (changedVisible) {
53 if (changedVisible) {
54 /**
55 * We trigger in sync to avoid dom shaking but this get warning in react 16.13.
56 *
57 * So use Promise to keep in micro async to handle this.
58 * https://github.com/ant-design/ant-design/issues/21698#issuecomment-593743485
59 */
60 Promise.resolve().then(function () {
61 onDomErrorVisibleChange === null || onDomErrorVisibleChange === void 0 ? void 0 : onDomErrorVisibleChange(true);
62 });
63 }
64
65 forceUpdate();
66 }, !!help),
67 _useCacheErrors2 = (0, _slicedToArray2["default"])(_useCacheErrors, 2),
68 visible = _useCacheErrors2[0],
69 cacheErrors = _useCacheErrors2[1];
70
71 var memoErrors = (0, _useMemo["default"])(function () {
72 return cacheErrors;
73 }, visible, function (_, nextVisible) {
74 return nextVisible;
75 }); // Memo status in same visible
76
77 var _React$useState = React.useState(status),
78 _React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
79 innerStatus = _React$useState2[0],
80 setInnerStatus = _React$useState2[1];
81
82 React.useEffect(function () {
83 if (visible && status) {
84 setInnerStatus(status);
85 }
86 }, [visible, status]);
87 var baseClassName = "".concat(prefixCls, "-item-explain");
88 var rootPrefixCls = getPrefixCls();
89 return /*#__PURE__*/React.createElement(_rcMotion["default"], {
90 motionDeadline: 500,
91 visible: visible,
92 motionName: "".concat(rootPrefixCls, "-show-help"),
93 onLeaveEnd: function onLeaveEnd() {
94 onDomErrorVisibleChange === null || onDomErrorVisibleChange === void 0 ? void 0 : onDomErrorVisibleChange(false);
95 },
96 motionAppear: true,
97 removeOnLeave: true
98 }, function (_ref2) {
99 var motionClassName = _ref2.className;
100 return /*#__PURE__*/React.createElement("div", {
101 className: (0, _classnames["default"])(baseClassName, (0, _defineProperty2["default"])({}, "".concat(baseClassName, "-").concat(innerStatus), innerStatus), motionClassName),
102 key: "help"
103 }, memoErrors.map(function (error, index) {
104 return (
105 /*#__PURE__*/
106 // eslint-disable-next-line react/no-array-index-key
107 React.createElement("div", {
108 key: index,
109 role: "alert"
110 }, error)
111 );
112 }));
113 });
114}
\No newline at end of file