1 | "use strict";
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4 |
|
5 | exports.__esModule = true;
|
6 | exports["default"] = void 0;
|
7 |
|
8 | var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
9 |
|
10 | var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
11 |
|
12 | var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
|
13 |
|
14 | var _react = _interopRequireDefault(require("react"));
|
15 |
|
16 | var _propTypes = _interopRequireDefault(require("prop-types"));
|
17 |
|
18 | var _reactRedux = require("react-redux");
|
19 |
|
20 | var _createFieldProps2 = _interopRequireDefault(require("./createFieldProps"));
|
21 |
|
22 | var _plain = _interopRequireDefault(require("./structure/plain"));
|
23 |
|
24 | var _onChangeValue = _interopRequireDefault(require("./events/onChangeValue"));
|
25 |
|
26 | var _validateComponentProp = _interopRequireDefault(require("./util/validateComponentProp"));
|
27 |
|
28 | var propsToNotUpdateFor = ['_reduxForm'];
|
29 |
|
30 | var createConnectedFields = function createConnectedFields(structure) {
|
31 | var deepEqual = structure.deepEqual,
|
32 | getIn = structure.getIn,
|
33 | size = structure.size;
|
34 |
|
35 | var getSyncError = function getSyncError(syncErrors, name) {
|
36 |
|
37 |
|
38 | return _plain["default"].getIn(syncErrors, name + "._error") || _plain["default"].getIn(syncErrors, name);
|
39 | };
|
40 |
|
41 | var getSyncWarning = function getSyncWarning(syncWarnings, name) {
|
42 | var warning = getIn(syncWarnings, name);
|
43 |
|
44 |
|
45 | return warning && warning._warning ? warning._warning : warning;
|
46 | };
|
47 |
|
48 | var ConnectedFields =
|
49 |
|
50 | function (_React$Component) {
|
51 | (0, _inheritsLoose2["default"])(ConnectedFields, _React$Component);
|
52 |
|
53 | function ConnectedFields(props) {
|
54 | var _this;
|
55 |
|
56 | _this = _React$Component.call(this, props) || this;
|
57 | _this.onChangeFns = {};
|
58 | _this.onFocusFns = {};
|
59 | _this.onBlurFns = {};
|
60 | _this.ref = _react["default"].createRef();
|
61 |
|
62 | _this.prepareEventHandlers = function (_ref) {
|
63 | var names = _ref.names;
|
64 | return names.forEach(function (name) {
|
65 | _this.onChangeFns[name] = function (event) {
|
66 | return _this.handleChange(name, event);
|
67 | };
|
68 |
|
69 | _this.onFocusFns[name] = function () {
|
70 | return _this.handleFocus(name);
|
71 | };
|
72 |
|
73 | _this.onBlurFns[name] = function (event) {
|
74 | return _this.handleBlur(name, event);
|
75 | };
|
76 | });
|
77 | };
|
78 |
|
79 | _this.handleChange = function (name, event) {
|
80 | var _this$props = _this.props,
|
81 | dispatch = _this$props.dispatch,
|
82 | parse = _this$props.parse,
|
83 | _reduxForm = _this$props._reduxForm;
|
84 | var value = (0, _onChangeValue["default"])(event, {
|
85 | name: name,
|
86 | parse: parse
|
87 | });
|
88 | dispatch(_reduxForm.change(name, value));
|
89 |
|
90 | if (_reduxForm.asyncValidate) {
|
91 | _reduxForm.asyncValidate(name, value, 'change');
|
92 | }
|
93 | };
|
94 |
|
95 | _this.handleFocus = function (name) {
|
96 | var _this$props2 = _this.props,
|
97 | dispatch = _this$props2.dispatch,
|
98 | _reduxForm = _this$props2._reduxForm;
|
99 | dispatch(_reduxForm.focus(name));
|
100 | };
|
101 |
|
102 | _this.handleBlur = function (name, event) {
|
103 | var _this$props3 = _this.props,
|
104 | dispatch = _this$props3.dispatch,
|
105 | parse = _this$props3.parse,
|
106 | _reduxForm = _this$props3._reduxForm;
|
107 | var value = (0, _onChangeValue["default"])(event, {
|
108 | name: name,
|
109 | parse: parse
|
110 | });
|
111 |
|
112 | dispatch(_reduxForm.blur(name, value));
|
113 |
|
114 | if (_reduxForm.asyncValidate) {
|
115 | _reduxForm.asyncValidate(name, value, 'blur');
|
116 | }
|
117 | };
|
118 |
|
119 | _this.prepareEventHandlers(props);
|
120 |
|
121 | return _this;
|
122 | }
|
123 |
|
124 | var _proto = ConnectedFields.prototype;
|
125 |
|
126 | _proto.UNSAFE_componentWillReceiveProps = function UNSAFE_componentWillReceiveProps(nextProps) {
|
127 | var _this2 = this;
|
128 |
|
129 | if (this.props.names !== nextProps.names && (size(this.props.names) !== size(nextProps.names) || nextProps.names.some(function (nextName) {
|
130 | return !_this2.props._fields[nextName];
|
131 | }))) {
|
132 |
|
133 | this.prepareEventHandlers(nextProps);
|
134 | }
|
135 | };
|
136 |
|
137 | _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {
|
138 | var _this3 = this;
|
139 |
|
140 | var nextPropsKeys = Object.keys(nextProps);
|
141 | var thisPropsKeys = Object.keys(this.props);
|
142 |
|
143 |
|
144 | return !!(this.props.children || nextProps.children || nextPropsKeys.length !== thisPropsKeys.length || nextPropsKeys.some(function (prop) {
|
145 | return !~propsToNotUpdateFor.indexOf(prop) && !deepEqual(_this3.props[prop], nextProps[prop]);
|
146 | }));
|
147 | };
|
148 |
|
149 | _proto.isDirty = function isDirty() {
|
150 | var _fields = this.props._fields;
|
151 | return Object.keys(_fields).some(function (name) {
|
152 | return _fields[name].dirty;
|
153 | });
|
154 | };
|
155 |
|
156 | _proto.getValues = function getValues() {
|
157 | var _fields = this.props._fields;
|
158 | return Object.keys(_fields).reduce(function (accumulator, name) {
|
159 | return _plain["default"].setIn(accumulator, name, _fields[name].value);
|
160 | }, {});
|
161 | };
|
162 |
|
163 | _proto.getRenderedComponent = function getRenderedComponent() {
|
164 | return this.ref.current;
|
165 | };
|
166 |
|
167 | _proto.render = function render() {
|
168 | var _this4 = this;
|
169 |
|
170 | var _this$props4 = this.props,
|
171 | component = _this$props4.component,
|
172 | forwardRef = _this$props4.forwardRef,
|
173 | _fields = _this$props4._fields,
|
174 | _reduxForm = _this$props4._reduxForm,
|
175 | rest = (0, _objectWithoutPropertiesLoose2["default"])(_this$props4, ["component", "forwardRef", "_fields", "_reduxForm"]);
|
176 | var sectionPrefix = _reduxForm.sectionPrefix,
|
177 | form = _reduxForm.form;
|
178 |
|
179 | var _Object$keys$reduce = Object.keys(_fields).reduce(function (accumulator, name) {
|
180 | var connectedProps = _fields[name];
|
181 |
|
182 | var _createFieldProps = (0, _createFieldProps2["default"])(structure, name, (0, _extends2["default"])({}, connectedProps, {}, rest, {
|
183 | form: form,
|
184 | onBlur: _this4.onBlurFns[name],
|
185 | onChange: _this4.onChangeFns[name],
|
186 | onFocus: _this4.onFocusFns[name]
|
187 | })),
|
188 | custom = _createFieldProps.custom,
|
189 | fieldProps = (0, _objectWithoutPropertiesLoose2["default"])(_createFieldProps, ["custom"]);
|
190 |
|
191 | accumulator.custom = custom;
|
192 | var fieldName = sectionPrefix ? name.replace(sectionPrefix + ".", '') : name;
|
193 | return _plain["default"].setIn(accumulator, fieldName, fieldProps);
|
194 | }, {}),
|
195 | custom = _Object$keys$reduce.custom,
|
196 | props = (0, _objectWithoutPropertiesLoose2["default"])(_Object$keys$reduce, ["custom"]);
|
197 |
|
198 | if (forwardRef) {
|
199 | props.ref = this.ref;
|
200 | }
|
201 |
|
202 | return _react["default"].createElement(component, (0, _extends2["default"])({}, props, {}, custom));
|
203 | };
|
204 |
|
205 | return ConnectedFields;
|
206 | }(_react["default"].Component);
|
207 |
|
208 | ConnectedFields.propTypes = {
|
209 | component: _validateComponentProp["default"],
|
210 | _fields: _propTypes["default"].object.isRequired,
|
211 | props: _propTypes["default"].object
|
212 | };
|
213 | var connector = (0, _reactRedux.connect)(function (state, ownProps) {
|
214 | var names = ownProps.names,
|
215 | _ownProps$_reduxForm = ownProps._reduxForm,
|
216 | initialValues = _ownProps$_reduxForm.initialValues,
|
217 | getFormState = _ownProps$_reduxForm.getFormState;
|
218 | var formState = getFormState(state);
|
219 | return {
|
220 | _fields: names.reduce(function (accumulator, name) {
|
221 | var initialState = getIn(formState, "initial." + name);
|
222 | var initial = initialState !== undefined ? initialState : initialValues && getIn(initialValues, name);
|
223 | var value = getIn(formState, "values." + name);
|
224 | var syncError = getSyncError(getIn(formState, 'syncErrors'), name);
|
225 | var syncWarning = getSyncWarning(getIn(formState, 'syncWarnings'), name);
|
226 | var submitting = getIn(formState, 'submitting');
|
227 | var pristine = value === initial;
|
228 | accumulator[name] = {
|
229 | asyncError: getIn(formState, "asyncErrors." + name),
|
230 | asyncValidating: getIn(formState, 'asyncValidating') === name,
|
231 | dirty: !pristine,
|
232 | initial: initial,
|
233 | pristine: pristine,
|
234 | state: getIn(formState, "fields." + name),
|
235 | submitError: getIn(formState, "submitErrors." + name),
|
236 | submitFailed: getIn(formState, 'submitFailed'),
|
237 | submitting: submitting,
|
238 | syncError: syncError,
|
239 | syncWarning: syncWarning,
|
240 | value: value,
|
241 | _value: ownProps.value
|
242 |
|
243 | };
|
244 | return accumulator;
|
245 | }, {})
|
246 | };
|
247 | }, undefined, undefined, {
|
248 | forwardRef: true
|
249 | });
|
250 | return connector(ConnectedFields);
|
251 | };
|
252 |
|
253 | var _default = createConnectedFields;
|
254 | exports["default"] = _default; |
\ | No newline at end of file |