1 | 'use strict';
|
2 |
|
3 | exports.__esModule = true;
|
4 |
|
5 | var _extends2 = require('babel-runtime/helpers/extends');
|
6 |
|
7 | var _extends3 = _interopRequireDefault(_extends2);
|
8 |
|
9 | var _typeof2 = require('babel-runtime/helpers/typeof');
|
10 |
|
11 | var _typeof3 = _interopRequireDefault(_typeof2);
|
12 |
|
13 | var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
|
14 |
|
15 | var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
|
16 |
|
17 | var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
|
18 |
|
19 | var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
|
20 |
|
21 | var _inherits2 = require('babel-runtime/helpers/inherits');
|
22 |
|
23 | var _inherits3 = _interopRequireDefault(_inherits2);
|
24 |
|
25 | var _class, _temp;
|
26 |
|
27 | var _react = require('react');
|
28 |
|
29 | var _react2 = _interopRequireDefault(_react);
|
30 |
|
31 | var _propTypes = require('prop-types');
|
32 |
|
33 | var _propTypes2 = _interopRequireDefault(_propTypes);
|
34 |
|
35 | var _classnames2 = require('classnames');
|
36 |
|
37 | var _classnames3 = _interopRequireDefault(_classnames2);
|
38 |
|
39 | var _reactLifecyclesCompat = require('react-lifecycles-compat');
|
40 |
|
41 | var _configProvider = require('../config-provider');
|
42 |
|
43 | var _configProvider2 = _interopRequireDefault(_configProvider);
|
44 |
|
45 | var _util = require('../util');
|
46 |
|
47 | var _radio = require('./radio');
|
48 |
|
49 | var _radio2 = _interopRequireDefault(_radio);
|
50 |
|
51 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
52 |
|
53 | var pickOthers = _util.obj.pickOthers;
|
54 |
|
55 |
|
56 |
|
57 |
|
58 |
|
59 |
|
60 | var RadioGroup = (_temp = _class = function (_Component) {
|
61 | (0, _inherits3.default)(RadioGroup, _Component);
|
62 |
|
63 | function RadioGroup(props) {
|
64 | (0, _classCallCheck3.default)(this, RadioGroup);
|
65 |
|
66 | var _this = (0, _possibleConstructorReturn3.default)(this, _Component.call(this, props));
|
67 |
|
68 | var value = '';
|
69 | if ('value' in props) {
|
70 | value = props.value;
|
71 | } else if ('defaultValue' in props) {
|
72 | value = props.defaultValue;
|
73 | }
|
74 |
|
75 | _this.state = { value: value };
|
76 | _this.onChange = _this.onChange.bind(_this);
|
77 | return _this;
|
78 | }
|
79 |
|
80 | RadioGroup.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {
|
81 | if ('value' in props && props.value !== state.value) {
|
82 | return {
|
83 | value: props.value
|
84 | };
|
85 | }
|
86 |
|
87 | return null;
|
88 | };
|
89 |
|
90 | RadioGroup.prototype.getChildContext = function getChildContext() {
|
91 | var disabled = this.props.disabled;
|
92 |
|
93 |
|
94 | return {
|
95 | __group__: true,
|
96 | isButton: this.props.shape === 'button',
|
97 | onChange: this.onChange,
|
98 | selectedValue: this.state.value,
|
99 | disabled: disabled
|
100 | };
|
101 | };
|
102 |
|
103 | RadioGroup.prototype.onChange = function onChange(currentValue, e) {
|
104 | if (!('value' in this.props)) {
|
105 | this.setState({ value: currentValue });
|
106 | }
|
107 | if (currentValue !== this.state.value) {
|
108 | this.props.onChange(currentValue, e);
|
109 | }
|
110 | };
|
111 |
|
112 | RadioGroup.prototype.render = function render() {
|
113 | var _this2 = this,
|
114 | _classnames;
|
115 |
|
116 | var _props = this.props,
|
117 | rtl = _props.rtl,
|
118 | className = _props.className,
|
119 | disabled = _props.disabled,
|
120 | shape = _props.shape,
|
121 | size = _props.size,
|
122 | style = _props.style,
|
123 | prefix = _props.prefix,
|
124 | direction = _props.direction,
|
125 | component = _props.component,
|
126 | isPreview = _props.isPreview,
|
127 | renderPreview = _props.renderPreview;
|
128 |
|
129 | var others = pickOthers(Object.keys(RadioGroup.propTypes), this.props);
|
130 |
|
131 | if (rtl) {
|
132 | others.dir = 'rtl';
|
133 | }
|
134 |
|
135 | var children = void 0;
|
136 | var previewed = {};
|
137 | if (this.props.children) {
|
138 | children = _react2.default.Children.map(this.props.children, function (child, index) {
|
139 | if (!_react2.default.isValidElement(child)) {
|
140 | return child;
|
141 | }
|
142 | var checked = _this2.state.value === child.props.value;
|
143 | if (checked) {
|
144 | previewed.label = child.props.children;
|
145 | previewed.value = child.props.value;
|
146 | }
|
147 | var tabIndex = index === 0 && !_this2.state.value || checked ? 0 : -1;
|
148 | var childrtl = child.props.rtl === undefined ? rtl : child.props.rtl;
|
149 | if (child.type && child.type.displayName === 'Config(Radio)') {
|
150 | return _react2.default.cloneElement(child, {
|
151 | checked: checked,
|
152 | tabIndex: tabIndex,
|
153 | rtl: childrtl
|
154 | });
|
155 | }
|
156 | return _react2.default.cloneElement(child, {
|
157 | checked: checked,
|
158 | rtl: childrtl
|
159 | });
|
160 | });
|
161 | } else {
|
162 | children = this.props.dataSource.map(function (item, index) {
|
163 | var option = item;
|
164 | if ((typeof item === 'undefined' ? 'undefined' : (0, _typeof3.default)(item)) !== 'object') {
|
165 | option = {
|
166 | label: item,
|
167 | value: item,
|
168 | disabled: disabled
|
169 | };
|
170 | }
|
171 | var checked = _this2.state.value === option.value;
|
172 | if (checked) {
|
173 | previewed.label = option.label;
|
174 | previewed.value = option.value;
|
175 | }
|
176 | return _react2.default.createElement(_radio2.default, {
|
177 | key: index,
|
178 | tabIndex: index === 0 && !_this2.state.value || checked ? 0 : -1,
|
179 | value: option.value,
|
180 | checked: checked,
|
181 | label: option.label,
|
182 | disabled: disabled || option.disabled
|
183 | });
|
184 | });
|
185 | }
|
186 | if (isPreview) {
|
187 | var previewCls = (0, _classnames3.default)(className, prefix + 'form-preview');
|
188 |
|
189 | if ('renderPreview' in this.props) {
|
190 | return _react2.default.createElement(
|
191 | 'div',
|
192 | (0, _extends3.default)({}, others, { className: previewCls }),
|
193 | renderPreview(previewed, this.props)
|
194 | );
|
195 | }
|
196 |
|
197 | return _react2.default.createElement(
|
198 | 'p',
|
199 | (0, _extends3.default)({}, others, { className: previewCls }),
|
200 | previewed.label
|
201 | );
|
202 | }
|
203 |
|
204 | var isButtonShape = shape === 'button';
|
205 |
|
206 | var cls = (0, _classnames3.default)((_classnames = {}, _classnames[prefix + 'radio-group'] = true, _classnames[prefix + 'radio-group-' + direction] = !isButtonShape, _classnames[prefix + 'radio-button'] = isButtonShape, _classnames[prefix + 'radio-button-' + size] = isButtonShape, _classnames[className] = !!className, _classnames.disabled = disabled, _classnames));
|
207 |
|
208 | var TagName = component;
|
209 | return _react2.default.createElement(
|
210 | TagName,
|
211 | (0, _extends3.default)({}, others, { 'aria-disabled': disabled, role: 'radiogroup', className: cls, style: style }),
|
212 | children
|
213 | );
|
214 | };
|
215 |
|
216 | return RadioGroup;
|
217 | }(_react.Component), _class.propTypes = (0, _extends3.default)({}, _configProvider2.default.propTypes, {
|
218 | |
219 |
|
220 |
|
221 | prefix: _propTypes2.default.string,
|
222 | |
223 |
|
224 |
|
225 | className: _propTypes2.default.string,
|
226 | |
227 |
|
228 |
|
229 | style: _propTypes2.default.object,
|
230 | |
231 |
|
232 |
|
233 | name: _propTypes2.default.string,
|
234 | |
235 |
|
236 |
|
237 | value: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number, _propTypes2.default.bool]),
|
238 | |
239 |
|
240 |
|
241 | defaultValue: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number, _propTypes2.default.bool]),
|
242 | |
243 |
|
244 |
|
245 | component: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.func]),
|
246 | |
247 |
|
248 |
|
249 |
|
250 |
|
251 | onChange: _propTypes2.default.func,
|
252 | |
253 |
|
254 |
|
255 | disabled: _propTypes2.default.bool,
|
256 | |
257 |
|
258 |
|
259 |
|
260 | shape: _propTypes2.default.oneOf(['normal', 'button']),
|
261 | |
262 |
|
263 |
|
264 |
|
265 | size: _propTypes2.default.oneOf(['large', 'medium', 'small']),
|
266 | |
267 |
|
268 |
|
269 | dataSource: _propTypes2.default.oneOfType([_propTypes2.default.arrayOf(_propTypes2.default.string), _propTypes2.default.arrayOf(_propTypes2.default.object)]),
|
270 | |
271 |
|
272 |
|
273 | children: _propTypes2.default.oneOfType([_propTypes2.default.arrayOf(_propTypes2.default.element), _propTypes2.default.element]),
|
274 |
|
275 | |
276 |
|
277 |
|
278 |
|
279 |
|
280 | direction: _propTypes2.default.oneOf(['hoz', 'ver']),
|
281 | |
282 |
|
283 |
|
284 | isPreview: _propTypes2.default.bool,
|
285 | |
286 |
|
287 |
|
288 |
|
289 |
|
290 |
|
291 | renderPreview: _propTypes2.default.func
|
292 | }), _class.defaultProps = {
|
293 | dataSource: [],
|
294 | size: 'medium',
|
295 | onChange: function onChange() {},
|
296 | prefix: 'next-',
|
297 | component: 'div',
|
298 | direction: 'hoz',
|
299 | isPreview: false
|
300 | }, _class.childContextTypes = {
|
301 | onChange: _propTypes2.default.func,
|
302 | __group__: _propTypes2.default.bool,
|
303 | isButton: _propTypes2.default.bool,
|
304 | selectedValue: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number, _propTypes2.default.bool]),
|
305 | disabled: _propTypes2.default.bool
|
306 | }, _temp);
|
307 | RadioGroup.displayName = 'RadioGroup';
|
308 | exports.default = (0, _reactLifecyclesCompat.polyfill)(RadioGroup);
|
309 | module.exports = exports['default']; |
\ | No newline at end of file |