1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 |
|
7 | var _react = require('react');
|
8 |
|
9 | var _react2 = _interopRequireDefault(_react);
|
10 |
|
11 | var _propTypes = require('prop-types');
|
12 |
|
13 | var _propTypes2 = _interopRequireDefault(_propTypes);
|
14 |
|
15 | var _Checkbox = require('./Checkbox');
|
16 |
|
17 | var _Checkbox2 = _interopRequireDefault(_Checkbox);
|
18 |
|
19 | var _lodash = require('lodash.isequal');
|
20 |
|
21 | var _lodash2 = _interopRequireDefault(_lodash);
|
22 |
|
23 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
24 |
|
25 | function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }
|
26 |
|
27 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
28 |
|
29 | function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
30 |
|
31 | function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); }
|
32 |
|
33 | var propTypes = {
|
34 | clsPrefix: _propTypes2["default"].string,
|
35 | value: _propTypes2["default"].array,
|
36 | onChange: _propTypes2["default"].func,
|
37 | disabled: _propTypes2["default"].bool,
|
38 | options: _propTypes2["default"].array,
|
39 | defaultValue: _propTypes2["default"].array
|
40 | };
|
41 |
|
42 | var defaultProps = {
|
43 | clsPrefix: 'u-checkbox-group',
|
44 | onChange: function onChange() {},
|
45 | disabled: false,
|
46 | options: []
|
47 | };
|
48 |
|
49 | var CheckboxGroup = function (_React$Component) {
|
50 | _inherits(CheckboxGroup, _React$Component);
|
51 |
|
52 | function CheckboxGroup(props) {
|
53 | _classCallCheck(this, CheckboxGroup);
|
54 |
|
55 | var _this = _possibleConstructorReturn(this, _React$Component.call(this, props));
|
56 |
|
57 | _this.changeHandle = function (v) {
|
58 | var values = _this.state.values;
|
59 | if (values.indexOf(v) != -1) {
|
60 | values.splice(values.indexOf(v), 1);
|
61 | } else {
|
62 | values.push(v);
|
63 | }
|
64 | _this.setState({
|
65 | values: values
|
66 | });
|
67 | var onChange = _this.props.onChange;
|
68 |
|
69 | if (onChange) {
|
70 | var options = _this.getOptions();
|
71 | onChange(values.filter(function (val) {
|
72 | return values.indexOf(val) !== -1;
|
73 | }).sort(function (a, b) {
|
74 | var indexA = options.findIndex(function (opt) {
|
75 | return opt.value === a;
|
76 | });
|
77 | var indexB = options.findIndex(function (opt) {
|
78 | return opt.value === b;
|
79 | });
|
80 | return indexA - indexB;
|
81 | }));
|
82 | }
|
83 | };
|
84 |
|
85 | _this.state = {
|
86 | values: props.value || props.defaultValue || []
|
87 | };
|
88 | return _this;
|
89 | }
|
90 |
|
91 | CheckboxGroup.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {
|
92 | if (!(0, _lodash2["default"])(nextProps.value, this.state.values)) {
|
93 | this.setState({
|
94 | values: nextProps.value
|
95 | });
|
96 | }
|
97 | };
|
98 |
|
99 | CheckboxGroup.prototype.getOptions = function getOptions() {
|
100 | var options = this.props.options;
|
101 |
|
102 | return options.map(function (option) {
|
103 | if (typeof option === 'string') {
|
104 | return {
|
105 | label: option,
|
106 | value: option
|
107 | };
|
108 | }
|
109 | return option;
|
110 | });
|
111 | };
|
112 |
|
113 | CheckboxGroup.prototype.render = function render() {
|
114 | var _this2 = this;
|
115 |
|
116 | var state = this.state;
|
117 | var props = this.props;
|
118 | var clsPrefix = props.clsPrefix,
|
119 | className = props.className,
|
120 | disabled = props.disabled,
|
121 | children = props.children,
|
122 | options = props.options;
|
123 |
|
124 | var classes = clsPrefix;
|
125 | if (className) classes += ' ' + className;
|
126 | if (options && options.length > 0) {
|
127 | children = this.getOptions().map(function (option) {
|
128 | return _react2["default"].createElement(
|
129 | _Checkbox2["default"],
|
130 | {
|
131 | key: option.value.toString(),
|
132 | disabled: 'disabled' in option ? option.disabled : props.disabled,
|
133 | value: option.value,
|
134 | checked: state.values.indexOf(option.value) !== -1,
|
135 | onChange: option.onChange
|
136 | },
|
137 | option.label
|
138 | );
|
139 | });
|
140 | }
|
141 | return _react2["default"].createElement(
|
142 | 'div',
|
143 | { className: classes },
|
144 | _react2["default"].Children.map(children, function (child) {
|
145 | return _react2["default"].cloneElement(child, {
|
146 | onChange: function onChange() {
|
147 | _this2.changeHandle(child.props.value);
|
148 | },
|
149 | checked: state.values.indexOf(child.props.value) != -1,
|
150 | disabled: child.props.disabled || disabled
|
151 | });
|
152 | })
|
153 | );
|
154 | };
|
155 |
|
156 | return CheckboxGroup;
|
157 | }(_react2["default"].Component);
|
158 |
|
159 | CheckboxGroup.propTypes = propTypes;
|
160 | CheckboxGroup.defaultProps = defaultProps;
|
161 |
|
162 | exports["default"] = CheckboxGroup;
|
163 | module.exports = exports['default']; |
\ | No newline at end of file |