UNPKG

hy-checkbox

Version:

checkbox & radio ui components for react

239 lines (211 loc) 10.2 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames); var _treeRoot = require('./treeRoot'); var _treeRoot2 = _interopRequireDefault(_treeRoot); var _treeNode = require('./treeNode'); var _treeNode2 = _interopRequireDefault(_treeNode); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 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; } 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) : subClass.__proto__ = superClass; } /* * @Author: SiMeiyu * @Date: 2017-07-04 10:08:20 */ var Tree = function (_React$Component) { _inherits(Tree, _React$Component); function Tree(props) { _classCallCheck(this, Tree); var _this = _possibleConstructorReturn(this, (Tree.__proto__ || Object.getPrototypeOf(Tree)).call(this, props)); _this.onSelected = _this.onSelected.bind(_this); _this.state = { data: _this.addExpandedKeys(props.data) || [], selectedKey: '', checkedKeys: [] }; return _this; } _createClass(Tree, [{ key: 'onSelected', value: function onSelected(callback, selectedKey, e) { this.setState({ selectedKey: selectedKey }); callback(selectedKey); } }, { key: 'onChecked', value: function onChecked(key, parent, e) { var checkedKeys = void 0; var allKey = void 0; if (parent) { allKey = []; var loop = function loop(data) { data.forEach(function (d) { if (d.key === key) { allKey.push(d.key); var childLoop = function childLoop(child) { child.forEach(function (c) { allKey.push(c.key); if (c.isParent) { childLoop(c.children); } }); }; childLoop(d.children); } else if (d.isParent) { loop(d.children); } }); }; loop(this.state.data); } else { allKey = key; } if (!this.state.checkedKeys.find(function (k) { return k === key; })) { checkedKeys = this.state.checkedKeys.concat(allKey); if (parent) { checkedKeys = [].concat(_toConsumableArray(new Set(checkedKeys))); } } else { checkedKeys = this.state.checkedKeys.filter(function (k) { if (parent) { var divi = allKey.findIndex(function (ak) { return ak === k; }); return divi === -1; } return k !== allKey; }); } console.log("checkedKeys--->", checkedKeys); this.setState({ checkedKeys: checkedKeys }); } }, { key: 'onSwitch', value: function onSwitch(key, open, e) { console.log("SwitchKey--->", key, "--", open); var data = this.state.data; var loop = function loop(data) { var switchOpen = data.map(function (d) { if (d.key === key) { return _extends({}, d, { open: open }); } else if (d.isParent) { return _extends({}, d, { children: loop(d.children) }); } else { return d; } }); return switchOpen; }; data = loop(data); this.setState({ data: data }); } }, { key: 'addExpandedKeys', value: function addExpandedKeys(data) { var loop = function loop(childs, level) { var expandedate = childs.map(function (d, i) { var key = level + '-' + i; var isParent = !!d.children; if (!isParent) { return _extends({}, d, { key: key, isParent: isParent }); } else { return _extends({}, d, { key: key, isParent: isParent, children: loop(d.children, key) }); } }); return expandedate; }; var newData = loop(data, 0); return newData; } }, { key: 'render', value: function render() { var _this2 = this; var data = this.state.data; var loop = function loop(data) { return data.map(function (item) { var _prop = { key: item.key, title: item.name, isParent: item.isParent, disabled: item.disabled || null, open: item.isParent ? item.open == undefined ? true : item.open : null, icon: item.icon || null, iconOpen: item.iconOpen || null, iconClose: item.iconClose || null, url: item.url || null }; if (item.children) { return _react2.default.createElement( _treeNode2.default, _extends({}, _prop, { onSelected: _this2.onSelected.bind(_this2, item.callback, item.key), onChecked: _this2.onChecked.bind(_this2, item.key, item.isParent), onSwitch: _this2.onSwitch.bind(_this2) }), loop(item.children) ); } return _react2.default.createElement(_treeNode2.default, _extends({}, _prop, { onSelected: _this2.onSelected.bind(_this2, item.callback, item.key), onChecked: _this2.onChecked.bind(_this2, item.key, item.isParent), onSwitch: _this2.onSwitch.bind(_this2) })); }); }; var treeNodes = loop(data); var _props = this.props, prefixCls = _props.prefixCls, className = _props.className, showIcon = _props.showIcon, showLine = _props.showLine, multiple = _props.multiple, selectable = _props.selectable, switchIcon = _props.switchIcon; var rootProps = { prefixCls: prefixCls, className: className, showIcon: showIcon, showLine: showLine, multiple: multiple, selectable: selectable, switchIcon: switchIcon }; return _react2.default.createElement( _treeRoot2.default, _extends({}, rootProps, { selectedKey: this.state.selectedKey, checkedKeys: this.state.checkedKeys, openKeys: this.state.openKeys }), treeNodes ); } }]); return Tree; }(_react2.default.Component); Tree.propTypes = { prefixCls: _react2.default.PropTypes.string, className: _react2.default.PropTypes.string, showLine: _react2.default.PropTypes.bool, showIcon: _react2.default.PropTypes.bool, multiple: _react2.default.PropTypes.bool, selectable: _react2.default.PropTypes.bool, switchIcon: _react2.default.PropTypes.array, data: _react2.default.PropTypes.array.isRequired }; Tree.defaultProps = { prefixCls: 'ult', switchIcon: ['add', 'minus'], multiple: false, showLine: false, showIcon: false }; exports.default = Tree;