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 _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
|
10 |
|
11 | var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
|
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 _classnames = require('classnames');
|
28 |
|
29 | var _classnames2 = _interopRequireDefault(_classnames);
|
30 |
|
31 | var _react = require('react');
|
32 |
|
33 | var _react2 = _interopRequireDefault(_react);
|
34 |
|
35 | var _propTypes = require('prop-types');
|
36 |
|
37 | var _propTypes2 = _interopRequireDefault(_propTypes);
|
38 |
|
39 | var _reactLifecyclesCompat = require('react-lifecycles-compat');
|
40 |
|
41 | var _util = require('../util');
|
42 |
|
43 | var _icon = require('../icon');
|
44 |
|
45 | var _icon2 = _interopRequireDefault(_icon);
|
46 |
|
47 | var _configProvider = require('../config-provider');
|
48 |
|
49 | var _configProvider2 = _interopRequireDefault(_configProvider);
|
50 |
|
51 | var _zhCn = require('../locale/zh-cn');
|
52 |
|
53 | var _zhCn2 = _interopRequireDefault(_zhCn);
|
54 |
|
55 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
56 |
|
57 |
|
58 | var Switch = (_temp = _class = function (_React$Component) {
|
59 | (0, _inherits3.default)(Switch, _React$Component);
|
60 |
|
61 | function Switch(props, context) {
|
62 | (0, _classCallCheck3.default)(this, Switch);
|
63 |
|
64 | var _this = (0, _possibleConstructorReturn3.default)(this, _React$Component.call(this, props, context));
|
65 |
|
66 | var checked = props.checked || props.defaultChecked;
|
67 | _this.onChange = _this.onChange.bind(_this);
|
68 | _this.onKeyDown = _this.onKeyDown.bind(_this);
|
69 | _this.state = {
|
70 | checked: checked
|
71 | };
|
72 | return _this;
|
73 | }
|
74 |
|
75 | Switch.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {
|
76 | if ('checked' in props && props.checked !== state.checked) {
|
77 | return {
|
78 | checked: !!props.checked
|
79 | };
|
80 | }
|
81 |
|
82 | return null;
|
83 | };
|
84 |
|
85 | Switch.prototype.onChange = function onChange(ev) {
|
86 | var checked = !this.state.checked;
|
87 |
|
88 | if (!('checked' in this.props)) {
|
89 | this.setState({
|
90 | checked: checked
|
91 | });
|
92 | }
|
93 | this.props.onChange(checked, ev);
|
94 | this.props.onClick && this.props.onClick(ev);
|
95 | };
|
96 |
|
97 | Switch.prototype.onKeyDown = function onKeyDown(e) {
|
98 | if (e.keyCode === _util.KEYCODE.ENTER || e.keyCode === _util.KEYCODE.SPACE) {
|
99 | this.onChange(e);
|
100 | }
|
101 | this.props.onKeyDown && this.props.onKeyDown(e);
|
102 | };
|
103 |
|
104 | Switch.prototype.render = function render() {
|
105 | var _classNames;
|
106 |
|
107 | var _props = this.props,
|
108 | prefix = _props.prefix,
|
109 | className = _props.className,
|
110 | disabled = _props.disabled,
|
111 | readOnly = _props.readOnly,
|
112 | size = _props.size,
|
113 | loading = _props.loading,
|
114 | autoWidth = _props.autoWidth,
|
115 | checkedChildren = _props.checkedChildren,
|
116 | unCheckedChildren = _props.unCheckedChildren,
|
117 | rtl = _props.rtl,
|
118 | isPreview = _props.isPreview,
|
119 | renderPreview = _props.renderPreview,
|
120 | locale = _props.locale,
|
121 | others = (0, _objectWithoutProperties3.default)(_props, ['prefix', 'className', 'disabled', 'readOnly', 'size', 'loading', 'autoWidth', 'checkedChildren', 'unCheckedChildren', 'rtl', 'isPreview', 'renderPreview', 'locale']);
|
122 | var checked = this.state.checked;
|
123 |
|
124 | var status = checked ? 'on' : 'off';
|
125 | var children = checked ? checkedChildren : unCheckedChildren;
|
126 |
|
127 | var _size = size;
|
128 | if (_size !== 'small' && _size !== 'medium') {
|
129 | _size = 'medium';
|
130 | }
|
131 |
|
132 | var classes = (0, _classnames2.default)((_classNames = {}, _classNames[prefix + 'switch'] = true, _classNames[prefix + 'switch-loading'] = loading, _classNames[prefix + 'switch-' + status] = true, _classNames[prefix + 'switch-' + _size] = true, _classNames[prefix + 'switch-auto-width'] = autoWidth, _classNames[className] = className, _classNames));
|
133 | var attrs = void 0;
|
134 | var isDisabled = disabled || readOnly;
|
135 |
|
136 | if (!isDisabled) {
|
137 | attrs = {
|
138 | onClick: this.onChange,
|
139 | tabIndex: 0,
|
140 | onKeyDown: this.onKeyDown,
|
141 | disabled: false
|
142 | };
|
143 | } else {
|
144 | attrs = {
|
145 | disabled: true
|
146 | };
|
147 | }
|
148 |
|
149 | if (isPreview) {
|
150 | var _classNames2;
|
151 |
|
152 | var previewCls = (0, _classnames2.default)(className, (_classNames2 = {}, _classNames2[prefix + 'form-preview'] = true, _classNames2));
|
153 |
|
154 | if ('renderPreview' in this.props) {
|
155 | return _react2.default.createElement(
|
156 | 'div',
|
157 | (0, _extends3.default)({ className: previewCls }, others),
|
158 | renderPreview(checked, this.props)
|
159 | );
|
160 | }
|
161 |
|
162 | return _react2.default.createElement(
|
163 | 'p',
|
164 | (0, _extends3.default)({ className: previewCls }, others),
|
165 | children || locale[status]
|
166 | );
|
167 | }
|
168 |
|
169 | return _react2.default.createElement(
|
170 | 'div',
|
171 | (0, _extends3.default)({
|
172 | role: 'switch',
|
173 | dir: rtl ? 'rtl' : undefined,
|
174 | tabIndex: '0'
|
175 | }, others, {
|
176 | className: classes
|
177 | }, attrs, {
|
178 | 'aria-checked': checked
|
179 | }),
|
180 | _react2.default.createElement(
|
181 | 'div',
|
182 | { className: prefix + 'switch-btn' },
|
183 | loading && _react2.default.createElement(_icon2.default, { type: 'loading', className: prefix + 'switch-inner-icon' })
|
184 | ),
|
185 | _react2.default.createElement(
|
186 | 'div',
|
187 | { className: prefix + 'switch-children' },
|
188 | children
|
189 | )
|
190 | );
|
191 | };
|
192 |
|
193 | return Switch;
|
194 | }(_react2.default.Component), _class.contextTypes = {
|
195 | prefix: _propTypes2.default.string
|
196 | }, _class.propTypes = {
|
197 | prefix: _propTypes2.default.string,
|
198 | rtl: _propTypes2.default.bool,
|
199 | pure: _propTypes2.default.bool,
|
200 | |
201 |
|
202 |
|
203 | className: _propTypes2.default.string,
|
204 | |
205 |
|
206 |
|
207 | style: _propTypes2.default.object,
|
208 | |
209 |
|
210 |
|
211 | checkedChildren: _propTypes2.default.any,
|
212 | |
213 |
|
214 |
|
215 | unCheckedChildren: _propTypes2.default.any,
|
216 | |
217 |
|
218 |
|
219 |
|
220 |
|
221 | onChange: _propTypes2.default.func,
|
222 | |
223 |
|
224 |
|
225 | checked: _propTypes2.default.bool,
|
226 | |
227 |
|
228 |
|
229 | defaultChecked: _propTypes2.default.bool,
|
230 | |
231 |
|
232 |
|
233 | disabled: _propTypes2.default.bool,
|
234 | |
235 |
|
236 |
|
237 | loading: _propTypes2.default.bool,
|
238 | |
239 |
|
240 |
|
241 |
|
242 | size: _propTypes2.default.oneOf(['medium', 'small']),
|
243 | |
244 |
|
245 |
|
246 |
|
247 | onClick: _propTypes2.default.func,
|
248 | |
249 |
|
250 |
|
251 |
|
252 | onKeyDown: _propTypes2.default.func,
|
253 | |
254 |
|
255 |
|
256 | isPreview: _propTypes2.default.bool,
|
257 | |
258 |
|
259 |
|
260 |
|
261 | renderPreview: _propTypes2.default.func,
|
262 | |
263 |
|
264 |
|
265 |
|
266 | autoWidth: _propTypes2.default.bool,
|
267 | |
268 |
|
269 |
|
270 | locale: _propTypes2.default.object
|
271 | }, _class.defaultProps = {
|
272 | prefix: 'next-',
|
273 | size: 'medium',
|
274 | disabled: false,
|
275 | defaultChecked: false,
|
276 | isPreview: false,
|
277 | loading: false,
|
278 | readOnly: false,
|
279 | autoWidth: false,
|
280 | onChange: function onChange() {},
|
281 | locale: _zhCn2.default.Switch
|
282 | }, _temp);
|
283 | Switch.displayName = 'Switch';
|
284 | exports.default = _configProvider2.default.config((0, _reactLifecyclesCompat.polyfill)(Switch));
|
285 | module.exports = exports['default']; |
\ | No newline at end of file |