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 _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
|
10 |
|
11 | var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
|
12 |
|
13 | var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
|
14 |
|
15 | var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
|
16 |
|
17 | var _inherits2 = require('babel-runtime/helpers/inherits');
|
18 |
|
19 | var _inherits3 = _interopRequireDefault(_inherits2);
|
20 |
|
21 | var _class, _temp;
|
22 |
|
23 | var _react = require('react');
|
24 |
|
25 | var _react2 = _interopRequireDefault(_react);
|
26 |
|
27 | var _propTypes = require('prop-types');
|
28 |
|
29 | var _propTypes2 = _interopRequireDefault(_propTypes);
|
30 |
|
31 | var _classnames = require('classnames');
|
32 |
|
33 | var _classnames2 = _interopRequireDefault(_classnames);
|
34 |
|
35 | var _reactLifecyclesCompat = require('react-lifecycles-compat');
|
36 |
|
37 | var _util = require('../util');
|
38 |
|
39 | var _tag = require('./tag');
|
40 |
|
41 | var _tag2 = _interopRequireDefault(_tag);
|
42 |
|
43 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
44 |
|
45 | var noop = _util.func.noop,
|
46 | bindCtx = _util.func.bindCtx;
|
47 |
|
48 |
|
49 |
|
50 |
|
51 |
|
52 | var Selectable = (_temp = _class = function (_Component) {
|
53 | (0, _inherits3.default)(Selectable, _Component);
|
54 |
|
55 | function Selectable(props) {
|
56 | (0, _classCallCheck3.default)(this, Selectable);
|
57 |
|
58 | var _this = (0, _possibleConstructorReturn3.default)(this, _Component.call(this, props));
|
59 |
|
60 | _this.state = {
|
61 | checked: 'checked' in props ? props.checked : props.defaultChecked || false
|
62 | };
|
63 |
|
64 | bindCtx(_this, ['handleClick']);
|
65 | return _this;
|
66 | }
|
67 |
|
68 | Selectable.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {
|
69 | if (props.checked !== undefined && props.checked !== state.checked) {
|
70 | return {
|
71 | checked: props.checked
|
72 | };
|
73 | }
|
74 |
|
75 | return null;
|
76 | };
|
77 |
|
78 | Selectable.prototype.handleClick = function handleClick(e) {
|
79 | e && e.preventDefault();
|
80 |
|
81 | if (this.props.disabled) {
|
82 | return false;
|
83 | }
|
84 |
|
85 | var checked = this.state.checked;
|
86 |
|
87 |
|
88 | this.setState({
|
89 | checked: !checked
|
90 | });
|
91 |
|
92 | this.props.onChange(!checked, e);
|
93 | };
|
94 |
|
95 | Selectable.prototype.render = function render() {
|
96 | var attrFilterTarget = ['checked', 'defaultChecked', 'onChange', 'className',
|
97 |
|
98 | '_shape', 'closable'];
|
99 |
|
100 | var others = _util.obj.pickOthers(attrFilterTarget, this.props);
|
101 | var isChecked = 'checked' in this.props ? this.props.checked : this.state.checked;
|
102 | var clazz = (0, _classnames2.default)(this.props.className, {
|
103 | checked: isChecked
|
104 | });
|
105 | return _react2.default.createElement(_tag2.default, (0, _extends3.default)({}, others, {
|
106 | role: 'checkbox',
|
107 | _shape: 'checkable',
|
108 | 'aria-checked': isChecked,
|
109 | className: clazz,
|
110 | onClick: this.handleClick
|
111 | }));
|
112 | };
|
113 |
|
114 | return Selectable;
|
115 | }(_react.Component), _class.propTypes = {
|
116 | |
117 |
|
118 |
|
119 |
|
120 | checked: _propTypes2.default.bool,
|
121 | |
122 |
|
123 |
|
124 |
|
125 | defaultChecked: _propTypes2.default.bool,
|
126 | |
127 |
|
128 |
|
129 |
|
130 |
|
131 | onChange: _propTypes2.default.func,
|
132 | |
133 |
|
134 |
|
135 | disabled: _propTypes2.default.bool,
|
136 | className: _propTypes2.default.any
|
137 | }, _class.defaultProps = {
|
138 | onChange: noop
|
139 | }, _temp);
|
140 | Selectable.displayName = 'Selectable';
|
141 | exports.default = (0, _reactLifecyclesCompat.polyfill)(Selectable);
|
142 | module.exports = exports['default']; |
\ | No newline at end of file |