UNPKG

rsuite

Version:

A suite of react components

215 lines (174 loc) 7.26 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose")); var React = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _classnames = _interopRequireDefault(require("classnames")); var _utils = require("rsuite-utils/lib/utils"); var _utils2 = require("../utils"); var _constants = require("../constants"); var _DropdownMenuCheckItem = _interopRequireDefault(require("../Picker/DropdownMenuCheckItem")); var TreeCheckNode = /*#__PURE__*/ function (_React$Component) { (0, _inheritsLoose2.default)(TreeCheckNode, _React$Component); function TreeCheckNode() { var _this; for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this; _this.handleTreeToggle = function (event) { var _this$props = _this.props, onTreeToggle = _this$props.onTreeToggle, layer = _this$props.layer, nodeData = _this$props.nodeData; // 异步加载数据自定义loading图标时,阻止原生冒泡,不触发 document.click if (event.nativeEvent && event.nativeEvent.stopImmediatePropagation) { event.nativeEvent.stopImmediatePropagation(); } onTreeToggle && onTreeToggle(nodeData, layer, event); }; _this.handleSelect = function (_value, event) { var _this$props2 = _this.props, onSelect = _this$props2.onSelect, disabled = _this$props2.disabled, uncheckable = _this$props2.uncheckable, nodeData = _this$props2.nodeData, checkState = _this$props2.checkState; if (disabled || uncheckable) { return; } var isChecked = false; if (checkState === _constants.CHECK_STATE.UNCHECK || checkState === _constants.CHECK_STATE.INDETERMINATE) { isChecked = true; } if (checkState === _constants.CHECK_STATE.CHECK) { isChecked = false; } var nextNodeData = (0, _extends2.default)({}, nodeData, { check: isChecked }); onSelect && onSelect(nextNodeData, event); }; _this.addPrefix = function (name) { return (0, _utils2.prefix)(_this.props.classPrefix)(name); }; _this.renderIcon = function () { var _classNames; var _this$props3 = _this.props, expand = _this$props3.expand, onRenderTreeIcon = _this$props3.onRenderTreeIcon, hasChildren = _this$props3.hasChildren, nodeData = _this$props3.nodeData; var expandIconClasses = (0, _classnames.default)(_this.addPrefix('expand-icon'), 'icon', (_classNames = {}, _classNames[_this.addPrefix('expanded')] = expand, _classNames)); var expandIcon = React.createElement("i", { className: expandIconClasses }); if (typeof onRenderTreeIcon === 'function') { var customIcon = onRenderTreeIcon(nodeData); expandIcon = customIcon !== null ? React.createElement("div", { className: _this.addPrefix('custom-icon') }, customIcon) : expandIcon; } return hasChildren ? React.createElement("div", { role: "button", tabIndex: -1, "data-ref": nodeData.refKey, className: _this.addPrefix('expand-icon-wrapper'), onClick: _this.handleTreeToggle }, expandIcon) : null; }; _this.renderLabel = function () { var _this$props4 = _this.props, nodeData = _this$props4.nodeData, focus = _this$props4.focus, onRenderTreeNode = _this$props4.onRenderTreeNode, label = _this$props4.label, layer = _this$props4.layer, disabled = _this$props4.disabled, uncheckable = _this$props4.uncheckable, checkState = _this$props4.checkState; return React.createElement(_DropdownMenuCheckItem.default, { componentClass: "div", active: checkState === _constants.CHECK_STATE.CHECK, indeterminate: checkState === _constants.CHECK_STATE.INDETERMINATE, focus: focus, checkable: !uncheckable, disabled: disabled, "data-layer": layer, "data-key": nodeData.refKey, className: _this.addPrefix('label'), title: _this.getTitle(), onSelect: _this.handleSelect }, typeof onRenderTreeNode === 'function' ? onRenderTreeNode(nodeData) : label); }; return _this; } var _proto = TreeCheckNode.prototype; _proto.getTitle = function getTitle() { var label = this.props.label; if (typeof label === 'string') { return label; } else if (React.isValidElement(label)) { var nodes = (0, _utils.reactToString)(label); return nodes.join(''); } }; _proto.render = function render() { var _classNames2; var _this$props5 = this.props, style = _this$props5.style, className = _this$props5.className, classPrefix = _this$props5.classPrefix, visible = _this$props5.visible, layer = _this$props5.layer, disabled = _this$props5.disabled, allUncheckable = _this$props5.allUncheckable, innerRef = _this$props5.innerRef; var classes = (0, _classnames.default)(className, classPrefix, (_classNames2 = { 'text-muted': disabled }, _classNames2[this.addPrefix('all-uncheckable')] = !!allUncheckable, _classNames2)); var styles = { paddingLeft: layer * _constants.TREE_NODE_PADDING + _constants.TREE_NODE_ROOT_PADDING }; return visible ? React.createElement("div", { style: (0, _extends2.default)({}, style, {}, styles), className: classes, ref: innerRef }, this.renderIcon(), this.renderLabel()) : null; }; return TreeCheckNode; }(React.Component); TreeCheckNode.propTypes = { classPrefix: _propTypes.default.string, visible: _propTypes.default.bool, style: _propTypes.default.object, label: _propTypes.default.any, layer: _propTypes.default.number, value: _propTypes.default.any, focus: _propTypes.default.bool, expand: _propTypes.default.bool, nodeData: _propTypes.default.object, disabled: _propTypes.default.bool, checkState: _propTypes.default.oneOf([_constants.CHECK_STATE.UNCHECK, _constants.CHECK_STATE.CHECK, _constants.CHECK_STATE.INDETERMINATE]), hasChildren: _propTypes.default.bool, uncheckable: _propTypes.default.bool, allUncheckable: _propTypes.default.bool, innerRef: _propTypes.default.func, onTreeToggle: _propTypes.default.func, onSelect: _propTypes.default.func, onRenderTreeIcon: _propTypes.default.func, onRenderTreeNode: _propTypes.default.func }; TreeCheckNode.defaultProps = { visible: true }; var _default = (0, _utils2.defaultProps)({ classPrefix: 'check-tree-node' })(TreeCheckNode); exports.default = _default; module.exports = exports.default;