forgeplus-react/node_modules/rsuite/lib/TreePicker/TreeNode.js

275 lines
9.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = void 0;
var _extends3 = _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 _reactToString = _interopRequireDefault(require("../utils/reactToString"));
var _domLib = require("dom-lib");
var _constants = require("../constants");
var _utils = require("../utils");
var TreeNode =
/*#__PURE__*/
function (_React$Component) {
(0, _inheritsLoose2.default)(TreeNode, _React$Component);
function TreeNode() {
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.addPrefix = function (name) {
return (0, _utils.prefix)(_this.props.classPrefix)(name);
};
_this.handleTreeToggle = function (event) {
var _event$nativeEvent, _event$nativeEvent$st;
var _this$props = _this.props,
onTreeToggle = _this$props.onTreeToggle,
nodeData = _this$props.nodeData; // 异步加载数据自定义loading图标时阻止原生冒泡不触发 document.click
event === null || event === void 0 ? void 0 : (_event$nativeEvent = event.nativeEvent) === null || _event$nativeEvent === void 0 ? void 0 : (_event$nativeEvent$st = _event$nativeEvent.stopImmediatePropagation) === null || _event$nativeEvent$st === void 0 ? void 0 : _event$nativeEvent$st.call(_event$nativeEvent);
onTreeToggle === null || onTreeToggle === void 0 ? void 0 : onTreeToggle(nodeData);
};
_this.handleSelect = function (event) {
var _this$props2 = _this.props,
onSelect = _this$props2.onSelect,
disabled = _this$props2.disabled,
nodeData = _this$props2.nodeData;
if (disabled) {
return;
}
if (event.target instanceof HTMLElement) {
if ((0, _domLib.hasClass)(event.target.parentNode, _this.addPrefix('expand-icon-wrapper'))) {
return;
}
}
onSelect === null || onSelect === void 0 ? void 0 : onSelect(nodeData, event);
};
_this.handleDragStart = function (event) {
var _this$props3 = _this.props,
nodeData = _this$props3.nodeData,
onDragStart = _this$props3.onDragStart;
var dragNode = document.getElementById('drag-node');
if (dragNode) {
event.dataTransfer.setDragImage(dragNode, 0, 0);
}
onDragStart === null || onDragStart === void 0 ? void 0 : onDragStart(nodeData, event);
};
_this.handleDragEnter = function (event) {
var _this$props4 = _this.props,
nodeData = _this$props4.nodeData,
onDragEnter = _this$props4.onDragEnter;
event.preventDefault();
event.stopPropagation();
onDragEnter === null || onDragEnter === void 0 ? void 0 : onDragEnter(nodeData, event);
};
_this.handleDragOver = function (event) {
var _this$props5 = _this.props,
nodeData = _this$props5.nodeData,
onDragOver = _this$props5.onDragOver;
event.preventDefault();
event.stopPropagation();
onDragOver === null || onDragOver === void 0 ? void 0 : onDragOver(nodeData, event);
};
_this.handleDragLeave = function (event) {
var _this$props6 = _this.props,
nodeData = _this$props6.nodeData,
onDragLeave = _this$props6.onDragLeave;
event.stopPropagation();
onDragLeave === null || onDragLeave === void 0 ? void 0 : onDragLeave(nodeData, event);
};
_this.handleDragEnd = function (event) {
var _this$props7 = _this.props,
nodeData = _this$props7.nodeData,
onDragEnd = _this$props7.onDragEnd;
event.stopPropagation();
onDragEnd === null || onDragEnd === void 0 ? void 0 : onDragEnd(nodeData, event);
};
_this.handleDrop = function (event) {
var _this$props8 = _this.props,
nodeData = _this$props8.nodeData,
onDrop = _this$props8.onDrop;
event.preventDefault();
event.stopPropagation();
onDrop === null || onDrop === void 0 ? void 0 : onDrop(nodeData, event);
};
_this.renderIcon = function () {
var _classNames;
var _this$props9 = _this.props,
expand = _this$props9.expand,
onRenderTreeIcon = _this$props9.onRenderTreeIcon,
hasChildren = _this$props9.hasChildren,
nodeData = _this$props9.nodeData;
var classes = (0, _classnames.default)(_this.addPrefix('expand-icon'), (_classNames = {}, _classNames[_this.addPrefix('expanded')] = !!expand, _classNames));
var expandIcon = React.createElement("i", {
className: classes
});
if (nodeData !== undefined && 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 _classNames2;
var _this$props10 = _this.props,
nodeData = _this$props10.nodeData,
onRenderTreeNode = _this$props10.onRenderTreeNode,
label = _this$props10.label,
layer = _this$props10.layer,
dragging = _this$props10.dragging,
dragOver = _this$props10.dragOver,
dragOverTop = _this$props10.dragOverTop,
dragOverBottom = _this$props10.dragOverBottom;
var contentClasses = (0, _classnames.default)(_this.addPrefix('label-content'), (_classNames2 = {}, _classNames2[_this.addPrefix('dragging')] = dragging, _classNames2[_this.addPrefix('drag-over')] = dragOver, _classNames2[_this.addPrefix('drag-over-top')] = dragOverTop, _classNames2[_this.addPrefix('drag-over-bottom')] = dragOverBottom, _classNames2));
return React.createElement("span", {
className: _this.addPrefix('label'),
title: _this.getTitle(),
"data-layer": layer,
"data-key": (nodeData === null || nodeData === void 0 ? void 0 : nodeData.refKey) || '',
role: "button",
tabIndex: -1,
onClick: _this.handleSelect
}, React.createElement("span", {
className: contentClasses
}, onRenderTreeNode ? onRenderTreeNode(nodeData) : label));
};
return _this;
}
var _proto = TreeNode.prototype;
_proto.getTitle = function getTitle() {
var label = this.props.label;
if (typeof label === 'string') {
return label;
} else if (React.isValidElement(label)) {
var nodes = (0, _reactToString.default)(label);
return nodes.join('');
}
};
_proto.render = function render() {
var _classNames3, _extends2;
var _this$props11 = this.props,
rtl = _this$props11.rtl,
style = _this$props11.style,
className = _this$props11.className,
classPrefix = _this$props11.classPrefix,
active = _this$props11.active,
layer = _this$props11.layer,
disabled = _this$props11.disabled,
visible = _this$props11.visible,
innerRef = _this$props11.innerRef,
draggable = _this$props11.draggable;
var classes = (0, _classnames.default)(className, classPrefix, (_classNames3 = {
'text-muted': disabled
}, _classNames3[this.addPrefix('disabled')] = disabled, _classNames3[this.addPrefix('active')] = active, _classNames3));
var padding = layer * _constants.TREE_NODE_PADDING + _constants.TREE_NODE_ROOT_PADDING;
var styles = (0, _extends3.default)({}, style, (_extends2 = {}, _extends2[rtl ? 'paddingRight' : 'paddingLeft'] = padding, _extends2));
return visible ? React.createElement("div", {
style: styles,
className: classes,
ref: innerRef,
draggable: draggable,
onDragStart: this.handleDragStart,
onDragEnter: this.handleDragEnter,
onDragOver: this.handleDragOver,
onDragLeave: this.handleDragLeave,
onDragEnd: this.handleDragEnd,
onDrop: this.handleDrop
}, this.renderIcon(), this.renderLabel()) : null;
};
return TreeNode;
}(React.Component);
TreeNode.propTypes = {
layer: _propTypes.default.number,
value: _propTypes.default.any,
label: _propTypes.default.any,
expand: _propTypes.default.bool,
active: _propTypes.default.bool,
visible: _propTypes.default.bool,
nodeData: _propTypes.default.any,
disabled: _propTypes.default.bool,
draggable: _propTypes.default.bool,
dragOver: _propTypes.default.bool,
hasChildren: _propTypes.default.bool,
className: _propTypes.default.string,
classPrefix: _propTypes.default.string,
style: _propTypes.default.object,
innerRef: _utils.refType,
onTreeToggle: _propTypes.default.func,
onSelect: _propTypes.default.func,
onRenderTreeIcon: _propTypes.default.func,
onRenderTreeNode: _propTypes.default.func,
onDragStart: _propTypes.default.func,
onDragEnter: _propTypes.default.func,
onDragOver: _propTypes.default.func,
onDragLeave: _propTypes.default.func,
onDragEnd: _propTypes.default.func,
onDrop: _propTypes.default.func
};
TreeNode.defaultProps = {
visible: true
};
var _default = (0, _utils.defaultProps)({
classPrefix: 'tree-node'
})(TreeNode);
exports.default = _default;
module.exports = exports.default;