UNPKG

hy-checkbox

Version:

checkbox & radio ui components for react

223 lines (193 loc) 9.96 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); 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 _classnames8 = require('classnames'); var _classnames9 = _interopRequireDefault(_classnames8); require('./tree.less'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } 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:34 */ var TreeNode = function (_React$Component) { _inherits(TreeNode, _React$Component); function TreeNode(props) { _classCallCheck(this, TreeNode); var _this = _possibleConstructorReturn(this, (TreeNode.__proto__ || Object.getPrototypeOf(TreeNode)).call(this, props)); _this.handleChecked = _this.handleChecked.bind(_this); _this.handleSelected = _this.handleSelected.bind(_this); _this.handleSwitch = _this.handleSwitch.bind(_this); return _this; } _createClass(TreeNode, [{ key: 'handleSelected', value: function handleSelected(e) { e.preventDefault(); // this.props.root.onSelected(this); if (this.props.disabled) { return; } this.props.onSelected(e); } }, { key: 'handleChecked', value: function handleChecked(e) { this.props.onChecked(e); } }, { key: 'handleSwitch', value: function handleSwitch(e) { this.props.onSwitch(this.props.eventKey, !this.props.open, e); } }, { key: 'renderLine', value: function renderLine() { var _props = this.props, prefixCls = _props.prefixCls, isParent = _props.isParent, showLine = _props.showLine; var classes = (0, _classnames9.default)(_defineProperty({}, prefixCls + '-tree-node-line', true)); if (!showLine) { return null; } return _react2.default.createElement('span', { className: classes }); } }, { key: 'renderSwitch', value: function renderSwitch() { var _classnames2; var _props2 = this.props, prefixCls = _props2.prefixCls, switchIcon = _props2.switchIcon, isParent = _props2.isParent, open = _props2.open; var classes = (0, _classnames9.default)("iconfont", (_classnames2 = {}, _defineProperty(_classnames2, 'icon-' + switchIcon[0], !open), _defineProperty(_classnames2, 'icon-' + switchIcon[1], open), _defineProperty(_classnames2, prefixCls + '-tree-node-switch', true), _classnames2)); if (!isParent) { return null; } return _react2.default.createElement( 'span', { className: classes, onClick: this.handleSwitch }, ' ' ); } }, { key: 'renderMultiple', value: function renderMultiple() { var _classnames3; var _props3 = this.props, prefixCls = _props3.prefixCls, multiple = _props3.multiple, checked = _props3.checked; var classes = (0, _classnames9.default)((_classnames3 = {}, _defineProperty(_classnames3, prefixCls + '-tree-node-checkbox', true), _defineProperty(_classnames3, prefixCls + '-tree-node-checkbox-checked', checked), _classnames3)); if (!multiple) { return null; } return _react2.default.createElement( 'span', { className: classes, onClick: this.handleChecked }, ' ' ); } }, { key: 'renderIcon', value: function renderIcon() { var _classnames4; var _props4 = this.props, prefixCls = _props4.prefixCls, open = _props4.open, icon = _props4.icon, iconOpen = _props4.iconOpen, iconClose = _props4.iconClose, isParent = _props4.isParent, showIcon = _props4.showIcon; var nodeIcon = isParent ? open ? iconOpen : iconClose : icon; var classes = (0, _classnames9.default)("iconfont", (_classnames4 = {}, _defineProperty(_classnames4, 'icon-' + nodeIcon, true), _defineProperty(_classnames4, prefixCls + '-tree-node-icon', true), _classnames4)); if (!showIcon) { return null; } return _react2.default.createElement('span', { className: classes }); } }, { key: 'renderChildren', value: function renderChildren(props) { var prefixCls = props.prefixCls, showLine = props.showLine, children = props.children, open = props.open; var classes = (0, _classnames9.default)(prefixCls + '-tree', _defineProperty({}, prefixCls + '-tree-line', showLine)); if (!children || !open) { return null; } return _react2.default.createElement( 'ul', { className: classes }, _react2.default.Children.map(children, function (item, index) { return props.root.renderTreeNode(item, index); }, props.root) ); } }, { key: 'render', value: function render() { var _classnames6, _this2 = this; var _props5 = this.props, _ref = _props5.ref, key = _props5.key, title = _props5.title, url = _props5.url, isParent = _props5.isParent, prefixCls = _props5.prefixCls, showLine = _props5.showLine, showIcon = _props5.showIcon, multiple = _props5.multiple, selectable = _props5.selectable, switchIcon = _props5.switchIcon, selected = _props5.selected; return _react2.default.createElement( 'li', { key: key, className: (0, _classnames9.default)(prefixCls + '-tree-node', (_classnames6 = {}, _defineProperty(_classnames6, prefixCls + '-tree-node-parent', isParent), _defineProperty(_classnames6, prefixCls + '-tree-node-leaf', !isParent), _classnames6)), ref: function ref(node) { _this2[_ref] = node; } }, this.renderLine(), this.renderSwitch(), this.renderMultiple(), _react2.default.createElement( 'a', { className: (0, _classnames9.default)(prefixCls + '-tree-node-title', _defineProperty({}, prefixCls + '-tree-node-title-selected', selected)), href: url, onClick: this.handleSelected }, this.renderIcon(), _react2.default.createElement( 'span', { className: prefixCls + '-tree-node-name' }, title ) ), this.renderChildren(this.props) ); } }]); return TreeNode; }(_react2.default.Component); TreeNode.propTypes = { prefixCls: _react2.default.PropTypes.string, disabled: _react2.default.PropTypes.bool, open: _react2.default.PropTypes.bool, root: _react2.default.PropTypes.object, onSelect: _react2.default.PropTypes.func }; TreeNode.defaultProps = { disabled: false, open: true, icon: '', iconOpen: '', iconClose: '' }; exports.default = TreeNode;