1 | 'use strict';
|
2 |
|
3 | exports.__esModule = true;
|
4 | exports.default = undefined;
|
5 |
|
6 | var _extends2 = require('babel-runtime/helpers/extends');
|
7 |
|
8 | var _extends3 = _interopRequireDefault(_extends2);
|
9 |
|
10 | var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
|
11 |
|
12 | var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
|
13 |
|
14 | var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
|
15 |
|
16 | var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
|
17 |
|
18 | var _inherits2 = require('babel-runtime/helpers/inherits');
|
19 |
|
20 | var _inherits3 = _interopRequireDefault(_inherits2);
|
21 |
|
22 | var _typeof2 = require('babel-runtime/helpers/typeof');
|
23 |
|
24 | var _typeof3 = _interopRequireDefault(_typeof2);
|
25 |
|
26 | var _class, _temp;
|
27 |
|
28 | var _react = require('react');
|
29 |
|
30 | var _react2 = _interopRequireDefault(_react);
|
31 |
|
32 | var _propTypes = require('prop-types');
|
33 |
|
34 | var _propTypes2 = _interopRequireDefault(_propTypes);
|
35 |
|
36 | var _classnames = require('classnames');
|
37 |
|
38 | var _classnames2 = _interopRequireDefault(_classnames);
|
39 |
|
40 | var _util = require('../util');
|
41 |
|
42 | var _field = require('../field');
|
43 |
|
44 | var _field2 = _interopRequireDefault(_field);
|
45 |
|
46 | var _responsiveGrid = require('../responsive-grid');
|
47 |
|
48 | var _responsiveGrid2 = _interopRequireDefault(_responsiveGrid);
|
49 |
|
50 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
51 |
|
52 | function pickerDefined(obj) {
|
53 | var newObj = {};
|
54 | Object.keys(obj).forEach(function (i) {
|
55 | if (typeof obj[i] !== 'undefined') {
|
56 | newObj[i] = obj[i];
|
57 | }
|
58 | });
|
59 | return newObj;
|
60 | }
|
61 |
|
62 | function preventDefault(e) {
|
63 | e.preventDefault();
|
64 | }
|
65 | var getNewChildren = function getNewChildren(children, props) {
|
66 | var size = props.size,
|
67 | device = props.device,
|
68 | labelAlign = props.labelAlign,
|
69 | labelTextAlign = props.labelTextAlign,
|
70 | labelCol = props.labelCol,
|
71 | wrapperCol = props.wrapperCol,
|
72 | responsive = props.responsive,
|
73 | colon = props.colon;
|
74 |
|
75 |
|
76 | return _react2.default.Children.map(children, function (child) {
|
77 | if (_util.obj.isReactFragment(child)) {
|
78 | return getNewChildren(child.props.children, props);
|
79 | }
|
80 |
|
81 | if (child && ['function', 'object'].indexOf((0, _typeof3.default)(child.type)) > -1 && child.type._typeMark === 'form_item') {
|
82 | var childrenProps = {
|
83 | labelCol: child.props.labelCol ? child.props.labelCol : labelCol,
|
84 | wrapperCol: child.props.wrapperCol ? child.props.wrapperCol : wrapperCol,
|
85 | labelAlign: child.props.labelAlign ? child.props.labelAlign : device === 'phone' ? 'top' : labelAlign,
|
86 | labelTextAlign: child.props.labelTextAlign ? child.props.labelTextAlign : labelTextAlign,
|
87 | colon: 'colon' in child.props ? child.props.colon : colon,
|
88 | size: child.props.size ? child.props.size : size,
|
89 | responsive: responsive
|
90 | };
|
91 | return _react2.default.cloneElement(child, pickerDefined(childrenProps));
|
92 | }
|
93 | return child;
|
94 | });
|
95 | };
|
96 |
|
97 |
|
98 | var Form = (_temp = _class = function (_React$Component) {
|
99 | (0, _inherits3.default)(Form, _React$Component);
|
100 |
|
101 | function Form(props) {
|
102 | (0, _classCallCheck3.default)(this, Form);
|
103 |
|
104 | var _this = (0, _possibleConstructorReturn3.default)(this, _React$Component.call(this, props));
|
105 |
|
106 | _this.onChange = function (name, value) {
|
107 | _this.props.onChange(_this._formField.getValues(), {
|
108 | name: name,
|
109 | value: value,
|
110 | field: _this._formField
|
111 | });
|
112 | };
|
113 |
|
114 | _this._formField = null;
|
115 | if (props.field !== false) {
|
116 | var options = (0, _extends3.default)({}, props.fieldOptions, {
|
117 | onChange: _this.onChange
|
118 | });
|
119 |
|
120 | if (props.field) {
|
121 | _this._formField = props.field;
|
122 | var onChange = _this._formField.options.onChange;
|
123 | options.onChange = _util.func.makeChain(onChange, _this.onChange);
|
124 | _this._formField.setOptions && _this._formField.setOptions(options);
|
125 | } else {
|
126 | if ('value' in props) {
|
127 | options.values = props.value;
|
128 | }
|
129 |
|
130 | _this._formField = new _field2.default(_this, options);
|
131 | }
|
132 |
|
133 | if (props.locale && props.locale.Validate) {
|
134 | _this._formField.setOptions({ messages: props.locale.Validate });
|
135 | }
|
136 |
|
137 | props.saveField(_this._formField);
|
138 | }
|
139 | return _this;
|
140 | }
|
141 |
|
142 | Form.prototype.getChildContext = function getChildContext() {
|
143 | return {
|
144 | _formField: this.props.field ? this.props.field : this._formField,
|
145 | _formSize: this.props.size,
|
146 | _formDisabled: this.props.disabled,
|
147 | _formPreview: this.props.isPreview,
|
148 | _formFullWidth: this.props.fullWidth,
|
149 | _formLabelForErrorMessage: this.props.useLabelForErrorMessage
|
150 | };
|
151 | };
|
152 |
|
153 | Form.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {
|
154 | var props = this.props;
|
155 |
|
156 | if (this._formField) {
|
157 | if ('value' in props && props.value !== prevProps.value) {
|
158 | this._formField.setValues(props.value);
|
159 | }
|
160 | if ('error' in props && props.error !== prevProps.error) {
|
161 | this._formField.setValues(props.error);
|
162 | }
|
163 | }
|
164 | };
|
165 |
|
166 | Form.prototype.render = function render() {
|
167 | var _classNames;
|
168 |
|
169 | var _props = this.props,
|
170 | className = _props.className,
|
171 | inline = _props.inline,
|
172 | size = _props.size,
|
173 | device = _props.device,
|
174 | labelAlign = _props.labelAlign,
|
175 | labelTextAlign = _props.labelTextAlign,
|
176 | onSubmit = _props.onSubmit,
|
177 | children = _props.children,
|
178 | labelCol = _props.labelCol,
|
179 | wrapperCol = _props.wrapperCol,
|
180 | style = _props.style,
|
181 | prefix = _props.prefix,
|
182 | rtl = _props.rtl,
|
183 | isPreview = _props.isPreview,
|
184 | Tag = _props.component,
|
185 | responsive = _props.responsive,
|
186 | gap = _props.gap,
|
187 | colon = _props.colon;
|
188 |
|
189 |
|
190 | var formClassName = (0, _classnames2.default)((_classNames = {}, _classNames[prefix + 'form'] = true, _classNames[prefix + 'inline'] = inline, _classNames['' + prefix + size] = size, _classNames[prefix + 'form-responsive-grid'] = responsive, _classNames[prefix + 'form-preview'] = isPreview, _classNames[className] = !!className, _classNames));
|
191 |
|
192 | var newChildren = getNewChildren(children, this.props);
|
193 |
|
194 | return _react2.default.createElement(
|
195 | Tag,
|
196 | (0, _extends3.default)({
|
197 | role: 'grid'
|
198 | }, _util.obj.pickOthers(Form.propTypes, this.props), {
|
199 | className: formClassName,
|
200 | style: style,
|
201 | dir: rtl ? 'rtl' : undefined,
|
202 | onSubmit: onSubmit
|
203 | }),
|
204 | responsive ? _react2.default.createElement(
|
205 | _responsiveGrid2.default,
|
206 | { gap: gap },
|
207 | newChildren
|
208 | ) : newChildren
|
209 | );
|
210 | };
|
211 |
|
212 | return Form;
|
213 | }(_react2.default.Component), _class.propTypes = {
|
214 | |
215 |
|
216 |
|
217 | prefix: _propTypes2.default.string,
|
218 | |
219 |
|
220 |
|
221 | inline: _propTypes2.default.bool,
|
222 | |
223 |
|
224 |
|
225 |
|
226 | size: _propTypes2.default.oneOf(['large', 'medium', 'small']),
|
227 | |
228 |
|
229 |
|
230 | fullWidth: _propTypes2.default.bool,
|
231 | |
232 |
|
233 |
|
234 |
|
235 | labelAlign: _propTypes2.default.oneOf(['top', 'left', 'inset']),
|
236 | |
237 |
|
238 |
|
239 |
|
240 | labelTextAlign: _propTypes2.default.oneOf(['left', 'right']),
|
241 | |
242 |
|
243 |
|
244 | field: _propTypes2.default.any,
|
245 | |
246 |
|
247 |
|
248 | saveField: _propTypes2.default.func,
|
249 | |
250 |
|
251 |
|
252 | labelCol: _propTypes2.default.object,
|
253 | |
254 |
|
255 |
|
256 | wrapperCol: _propTypes2.default.object,
|
257 | |
258 |
|
259 |
|
260 | onSubmit: _propTypes2.default.func,
|
261 | |
262 |
|
263 |
|
264 | children: _propTypes2.default.any,
|
265 | |
266 |
|
267 |
|
268 | className: _propTypes2.default.string,
|
269 | |
270 |
|
271 |
|
272 | style: _propTypes2.default.object,
|
273 | |
274 |
|
275 |
|
276 | value: _propTypes2.default.object,
|
277 | |
278 |
|
279 |
|
280 |
|
281 |
|
282 |
|
283 |
|
284 |
|
285 | onChange: _propTypes2.default.func,
|
286 | |
287 |
|
288 |
|
289 | component: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.func]),
|
290 | fieldOptions: _propTypes2.default.object,
|
291 | rtl: _propTypes2.default.bool,
|
292 | |
293 |
|
294 |
|
295 | device: _propTypes2.default.oneOf(['phone', 'tablet', 'desktop']),
|
296 | |
297 |
|
298 |
|
299 |
|
300 | responsive: _propTypes2.default.bool,
|
301 | |
302 |
|
303 |
|
304 |
|
305 | isPreview: _propTypes2.default.bool,
|
306 | |
307 |
|
308 |
|
309 |
|
310 | useLabelForErrorMessage: _propTypes2.default.bool,
|
311 | |
312 |
|
313 |
|
314 |
|
315 | colon: _propTypes2.default.bool,
|
316 | |
317 |
|
318 |
|
319 | disabled: _propTypes2.default.bool,
|
320 |
|
321 | gap: _propTypes2.default.oneOfType([_propTypes2.default.arrayOf(_propTypes2.default.number), _propTypes2.default.number])
|
322 | }, _class.defaultProps = {
|
323 | prefix: 'next-',
|
324 | onSubmit: preventDefault,
|
325 | size: 'medium',
|
326 | labelAlign: 'left',
|
327 | onChange: _util.func.noop,
|
328 | component: 'form',
|
329 | saveField: _util.func.noop,
|
330 | device: 'desktop',
|
331 | colon: false,
|
332 | disabled: false
|
333 | }, _class.childContextTypes = {
|
334 | _formField: _propTypes2.default.object,
|
335 | _formSize: _propTypes2.default.string,
|
336 | _formDisabled: _propTypes2.default.bool,
|
337 | _formPreview: _propTypes2.default.bool,
|
338 | _formFullWidth: _propTypes2.default.bool,
|
339 | _formLabelForErrorMessage: _propTypes2.default.bool
|
340 | }, _temp);
|
341 | Form.displayName = 'Form';
|
342 | exports.default = Form;
|
343 | module.exports = exports['default']; |
\ | No newline at end of file |