UNPKG

tdesign-react

Version:
396 lines (388 loc) 16.6 kB
/** * tdesign v1.15.1 * (c) 2025 tdesign * @license MIT */ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var objectWithoutProperties = require('../_chunks/dep-8fa3a4c2.js'); var slicedToArray = require('../_chunks/dep-8e4d656d.js'); var defineProperty = require('../_chunks/dep-0006fcfa.js'); var React = require('react'); var classNames = require('classnames'); var tdesignIconsReact = require('tdesign-icons-react'); var loading_index = require('../loading/index.js'); var hooks_useRipple = require('../hooks/useRipple.js'); var hooks_useDomRefCallback = require('../hooks/useDomRefCallback.js'); var hooks_useGlobalIcon = require('../hooks/useGlobalIcon.js'); var checkbox_index = require('../checkbox/index.js'); var tree_hooks_useTreeConfig = require('./hooks/useTreeConfig.js'); var tree_hooks_useDraggable = require('./hooks/useDraggable.js'); var _util_composeRefs = require('../_util/composeRefs.js'); var hooks_useConfig = require('../hooks/useConfig.js'); var isFunction = require('../_chunks/dep-ec8d2dca.js'); require('../_chunks/dep-00b49251.js'); require('../_chunks/dep-667ac7af.js'); require('../loading/Loading.js'); require('../_chunks/dep-381fa848.js'); require('../_chunks/dep-4ed9eda4.js'); require('../_chunks/dep-25585736.js'); require('../_chunks/dep-64577888.js'); require('../_chunks/dep-62e73936.js'); require('../common/Portal.js'); require('react-dom'); require('../hooks/useLayoutEffect.js'); require('../config-provider/ConfigContext.js'); require('../_chunks/dep-1df1dad8.js'); require('../_chunks/dep-5b5ab11b.js'); require('dayjs'); require('../_chunks/dep-f32c03f1.js'); require('../_chunks/dep-31c4bc3d.js'); require('../_chunks/dep-eea2872a.js'); require('../_chunks/dep-71455db7.js'); require('../_chunks/dep-9e5a468d.js'); require('../_chunks/dep-f26edb7b.js'); require('../_chunks/dep-f33c1939.js'); require('../_chunks/dep-21ece627.js'); require('../_chunks/dep-25e4aa84.js'); require('../_chunks/dep-fc596d16.js'); require('../_chunks/dep-e1fbe1c3.js'); require('../_chunks/dep-df2b541f.js'); require('../_chunks/dep-edd366db.js'); require('../_chunks/dep-a56c4939.js'); require('../_chunks/dep-6c297e20.js'); require('../_chunks/dep-b7ad4d54.js'); require('../_chunks/dep-a2cb9299.js'); require('../_chunks/dep-f981815b.js'); require('../loading/gradient.js'); require('../_chunks/dep-dc4ce063.js'); require('../_chunks/dep-002fcc1e.js'); require('../_chunks/dep-e4e1901e.js'); require('../_chunks/dep-2ffa3ff1.js'); require('../loading/defaultProps.js'); require('../hooks/useDefaultProps.js'); require('../loading/plugin.js'); require('../_util/react-render.js'); require('../_chunks/dep-65ef8e09.js'); require('../common/PluginContainer.js'); require('../config-provider/ConfigProvider.js'); require('../_chunks/dep-ab2f63ec.js'); require('../_chunks/dep-a48c7e8b.js'); require('../_chunks/dep-3d4656ee.js'); require('../_chunks/dep-0ffc9d96.js'); require('../_chunks/dep-efe6d243.js'); require('../_chunks/dep-4b18243f.js'); require('../_chunks/dep-bff2c990.js'); require('../hooks/useAnimation.js'); require('../_chunks/dep-e136a981.js'); require('../_util/forwardRefWithStatics.js'); require('hoist-non-react-statics'); require('../common/Check.js'); require('../_util/helper.js'); require('../_chunks/dep-840b1644.js'); require('../_chunks/dep-255ceed8.js'); require('../_chunks/dep-79629634.js'); require('../_chunks/dep-66114ce9.js'); require('../_chunks/dep-62d1dd66.js'); require('../_chunks/dep-7a148045.js'); require('../hooks/useControlled.js'); require('../_util/noop.js'); require('../_chunks/dep-c16f1dc4.js'); require('../checkbox/defaultProps.js'); require('../locale/LocalReceiver.js'); require('./hooks/TreeDraggableContext.js'); require('../_util/createHookContext.js'); require('../hooks/usePersistFn.js'); require('../_chunks/dep-1438af5a.js'); require('../_chunks/dep-a231fdc5.js'); require('../_chunks/dep-cf14666e.js'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var React__default = /*#__PURE__*/_interopDefaultLegacy(React); var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames); var _excluded = ["setData"]; function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { defineProperty._defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } var TreeItem = /*#__PURE__*/React.forwardRef(function (props, ref) { var node = props.node, icon = props.icon, label = props.label, line = props.line, expandOnClickNode = props.expandOnClickNode, activable = props.activable, checkProps = props.checkProps, disableCheck = props.disableCheck, operations = props.operations, onClick = props.onClick, _onChange = props.onChange, isVirtual = props.isVirtual, onTreeItemMounted = props.onTreeItemMounted, allowDrop = props.allowDrop; var _useGlobalIcon = hooks_useGlobalIcon["default"]({ CaretRightSmallIcon: tdesignIconsReact.CaretRightSmallIcon }), CaretRightSmallIcon = _useGlobalIcon.CaretRightSmallIcon; var level = node.level; var nodeRef = React.useRef(null); var _useTreeConfig = tree_hooks_useTreeConfig.useTreeConfig(), treeClassNames = _useTreeConfig.treeClassNames, locale = _useTreeConfig.locale; var _useConfig = hooks_useConfig["default"](), classPrefix = _useConfig.classPrefix; React.useEffect(function () { onTreeItemMounted === null || onTreeItemMounted === void 0 || onTreeItemMounted({ ref: nodeRef.current, data: node }); }, [isVirtual, nodeRef, node, onTreeItemMounted]); var handleClick = function handleClick(evt) { var _srcTarget$className, _srcTarget$className$; var srcTarget = evt.target; var isBranchTrigger = node.children && expandOnClickNode && (srcTarget.className === "".concat(classPrefix, "-checkbox__input") || srcTarget.tagName.toLowerCase() === "input"); if (isBranchTrigger) return; if (expandOnClickNode && node.children && ((_srcTarget$className = srcTarget.className) === null || _srcTarget$className === void 0 || (_srcTarget$className$ = _srcTarget$className.indexOf) === null || _srcTarget$className$ === void 0 ? void 0 : _srcTarget$className$.call(_srcTarget$className, "".concat(classPrefix, "-tree__label"))) !== -1) evt.preventDefault(); onClick === null || onClick === void 0 || onClick(node, { e: evt, expand: expandOnClickNode, active: activable, trigger: "node-click" }); }; var handleItemClick = function handleItemClick(evt) { if (node.loading) { return; } onClick === null || onClick === void 0 || onClick(node, { e: evt, expand: true, active: false, trigger: "icon-click" }); }; var handleIconClick = function handleIconClick(evt) { if (!icon) return; evt.stopPropagation(); handleItemClick(evt); }; var stopPropagation = function stopPropagation(e) { e.stopPropagation(); }; var renderIcon = function renderIcon() { var isDefaultIcon = false; var renderIconNode = function renderIconNode() { if (icon === false) { return null; } if (icon instanceof Function) { return icon(node.getModel()); } if (/*#__PURE__*/React__default["default"].isValidElement(icon)) { return icon; } if (icon && icon !== true) { throw new Error("invalid type of icon"); } if (!node.isLeaf()) { isDefaultIcon = true; if (node.loading && node.expanded) { return /* @__PURE__ */React__default["default"].createElement(loading_index.Loading, { loading: true }); } return /* @__PURE__ */React__default["default"].createElement(CaretRightSmallIcon, { className: treeClassNames.treeIconRight }); } return null; }; var iconNode = renderIconNode(); return /* @__PURE__ */React__default["default"].createElement("span", { className: classNames__default["default"](treeClassNames.treeIcon, treeClassNames.folderIcon, defineProperty._defineProperty({}, treeClassNames.treeIconDefault, isDefaultIcon)), onClick: handleIconClick }, iconNode); }; var renderLine = function renderLine() { var iconVisible = icon !== false; if (line === false) { return null; } if (isFunction.isFunction(line)) { return line(node.getModel()); } if (/*#__PURE__*/React__default["default"].isValidElement(line)) { return line; } if (node.parent && node.tree) { var shadowStyles = []; var parents = node.getParents(); parents.pop(); parents.forEach(function (pnode, index) { if (!pnode.vmIsLast) { shadowStyles.push("calc(-".concat(index + 1, " * var(--space)) 0 var(--color)")); } }); var styles = { "--level": level, boxShadow: shadowStyles.join(",") }; return /* @__PURE__ */React__default["default"].createElement("span", { className: classNames__default["default"](treeClassNames.line, defineProperty._defineProperty(defineProperty._defineProperty({}, treeClassNames.lineIsLeaf, node.vmIsLeaf || !iconVisible), treeClassNames.lineIsFirst, node.vmIsFirst && iconVisible)), style: styles, onClick: stopPropagation }); } return null; }; var _useDomRefCallback = hooks_useDomRefCallback["default"](), _useDomRefCallback2 = slicedToArray._slicedToArray(_useDomRefCallback, 2), labelDom = _useDomRefCallback2[0], setRefCurrent = _useDomRefCallback2[1]; hooks_useRipple["default"](labelDom); var _useState = React.useState({}), _useState2 = slicedToArray._slicedToArray(_useState, 2), updateRender = _useState2[1]; var renderLabel = function renderLabel() { var _node$data, _node$data2; var emptyView = locale("empty"); var labelText = ""; if (label instanceof Function) { var _node$getModel = node.getModel(), nodeSetData = _node$getModel.setData, rest = objectWithoutProperties._objectWithoutProperties(_node$getModel, _excluded); labelText = label(_objectSpread(_objectSpread({}, rest), {}, { setData: function setData(value) { nodeSetData(value); updateRender({}); } })) || emptyView; } else { labelText = node.label || emptyView; } var labelClasses = classNames__default["default"](treeClassNames.treeLabel, treeClassNames.treeLabelStrictly, defineProperty._defineProperty({}, treeClassNames.actived, node.isActivable() ? node.actived : false)); if (node.isCheckable()) { var checkboxDisabled; if (typeof disableCheck === "function") { checkboxDisabled = disableCheck(node.getModel()); } else { checkboxDisabled = !!disableCheck; } if (node.isDisabled()) { checkboxDisabled = true; } var checkboxProps; if (typeof checkProps === "function") { checkboxProps = checkProps(node.getModel()); } else { checkboxProps = checkProps; } return /* @__PURE__ */React__default["default"].createElement(checkbox_index.Checkbox, _objectSpread({ ref: setRefCurrent, checked: node.checked, indeterminate: node.indeterminate, disabled: checkboxDisabled, name: String(node.value), onChange: function onChange(checked, ctx) { return _onChange(node, ctx); }, className: labelClasses, stopLabelTrigger: expandOnClickNode && !!node.children }, checkboxProps), /* @__PURE__ */React__default["default"].createElement("span", { "data-target": "label" }, labelText)); } return /* @__PURE__ */React__default["default"].createElement("span", { ref: setRefCurrent, "data-target": "label", className: labelClasses, title: /*#__PURE__*/React.isValidElement(node.label) && !((_node$data = node.data) !== null && _node$data !== void 0 && _node$data.text) ? "" : String(((_node$data2 = node.data) === null || _node$data2 === void 0 ? void 0 : _node$data2.text) || node.label) }, /* @__PURE__ */React__default["default"].createElement("span", { style: { position: "relative" } }, labelText)); }; var renderOperations = function renderOperations() { var operationsView = null; if (operations) { if (/*#__PURE__*/React__default["default"].isValidElement(operations)) { operationsView = operations; } else if (operations instanceof Function) { var treeNodeModel = node === null || node === void 0 ? void 0 : node.getModel(); operationsView = operations(treeNodeModel); } else { throw new Error("invalid type of operations"); } } if (operationsView) { return /* @__PURE__ */React__default["default"].createElement("span", { className: treeClassNames.treeOperations, "data-target": "operations" }, operationsView); } return null; }; var _useDraggable = tree_hooks_useDraggable["default"]({ node: node, nodeRef: nodeRef, allowDrop: allowDrop }), setDragStatus = _useDraggable.setDragStatus, isDragging = _useDraggable.isDragging, dropPosition = _useDraggable.dropPosition, isDragOver = _useDraggable.isDragOver; var handleDragStart = function handleDragStart(evt) { var node2 = props.node; if (!node2.isDraggable()) return; evt.stopPropagation(); setDragStatus("dragStart", evt); try { var _evt$dataTransfer; (_evt$dataTransfer = evt.dataTransfer) === null || _evt$dataTransfer === void 0 || _evt$dataTransfer.setData("text/plain", ""); } catch (e) {} }; var handleDragEnd = function handleDragEnd(evt) { var node2 = props.node; if (!node2.isDraggable()) return; evt.stopPropagation(); setDragStatus("dragEnd", evt); }; var handleDragOver = function handleDragOver(evt) { var node2 = props.node; if (!node2.isDraggable()) return; evt.stopPropagation(); evt.preventDefault(); setDragStatus("dragOver", evt); }; var handleDragLeave = function handleDragLeave(evt) { var node2 = props.node; if (!node2.isDraggable()) return; evt.stopPropagation(); setDragStatus("dragLeave", evt); }; var handleDrop = function handleDrop(evt) { var node2 = props.node; if (!node2.isDraggable()) return; evt.stopPropagation(); evt.preventDefault(); setDragStatus("drop", evt); }; return /* @__PURE__ */React__default["default"].createElement("div", { ref: _util_composeRefs["default"](ref, nodeRef), "data-value": node.value, "data-level": level, className: classNames__default["default"](treeClassNames.treeNode, defineProperty._defineProperty(defineProperty._defineProperty(defineProperty._defineProperty(defineProperty._defineProperty(defineProperty._defineProperty(defineProperty._defineProperty(defineProperty._defineProperty(defineProperty._defineProperty({}, treeClassNames.treeNodeOpen, node.expanded), treeClassNames.actived, node.isActivable() ? node.actived : false), treeClassNames.disabled, node.isDisabled()), treeClassNames.treeNodeDraggable, !node.isDisabled() && node.isDraggable()), treeClassNames.treeNodeDragging, isDragging), treeClassNames.treeNodeDragTipTop, isDragOver && dropPosition < 0), treeClassNames.treeNodeDragTipBottom, isDragOver && dropPosition > 0), treeClassNames.treeNodeDragTipHighlight, !isDragging && isDragOver && dropPosition === 0)), style: { "--level": level, boxShadow: "" }, onClick: handleClick, draggable: !node.isDisabled() && node.isDraggable(), onDragStart: handleDragStart, onDragEnd: handleDragEnd, onDragOver: handleDragOver, onDragLeave: handleDragLeave, onDrop: handleDrop }, renderLine(), renderIcon(), renderLabel(), renderOperations()); }); TreeItem.displayName = "TreeItem"; exports["default"] = TreeItem; //# sourceMappingURL=TreeItem.js.map