Title.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { __awaiter } from "tslib";
  2. import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
  3. import { useState } from "react";
  4. import { Button, Modal } from "antd";
  5. import { ExclamationCircleFilled } from "@ant-design/icons";
  6. import { TreeTitle } from "./style";
  7. import { findKeyPath, findNodeLevel } from "./utils";
  8. const { confirm } = Modal;
  9. export const DageTreeTitle = ({ data, maxLevel, treeData, onAdd, onEdit, onDelete, }) => {
  10. const [addLoading, setAddLoading] = useState(false);
  11. const [editLoading, setEditLoading] = useState(false);
  12. const handleAdd = (data) => __awaiter(void 0, void 0, void 0, function* () {
  13. try {
  14. setAddLoading(true);
  15. yield (onAdd === null || onAdd === void 0 ? void 0 : onAdd(data, findKeyPath(treeData, data.id)));
  16. }
  17. finally {
  18. setAddLoading(false);
  19. }
  20. });
  21. const handleEdit = (data) => __awaiter(void 0, void 0, void 0, function* () {
  22. try {
  23. setEditLoading(true);
  24. yield (onEdit === null || onEdit === void 0 ? void 0 : onEdit(data, findKeyPath(treeData, data.id)));
  25. }
  26. finally {
  27. setEditLoading(false);
  28. }
  29. });
  30. const handleDelete = (data) => {
  31. confirm({
  32. title: `提示`,
  33. icon: _jsx(ExclamationCircleFilled, {}),
  34. content: `确认是否删除 ${data.name} 节点`,
  35. okText: "确认",
  36. cancelText: "取消",
  37. onOk() {
  38. return onDelete === null || onDelete === void 0 ? void 0 : onDelete(data, findKeyPath(treeData, data.id));
  39. },
  40. });
  41. };
  42. return (_jsxs(TreeTitle, { children: [_jsx("p", { children: data.name }), _jsxs("div", { className: "dage-tree-title-toolbar", onClick: (e) => e.stopPropagation(), children: [Boolean(onAdd) &&
  43. (!maxLevel || findNodeLevel(treeData, data.id) < maxLevel) &&
  44. !data.hideAddBtn && (_jsx(Button, { type: "link", size: "small", loading: addLoading, onClick: handleAdd.bind(undefined, data), children: "\u65B0\u589E" })), Boolean(onEdit) && !data.hideEditBtn && (_jsx(Button, { type: "link", size: "small", loading: editLoading, color: "default", onClick: handleEdit.bind(undefined, data), children: "\u7F16\u8F91" })), Boolean(onDelete) && !data.hideDeleteBtn && (_jsx(Button, { type: "link", danger: true, size: "small", onClick: handleDelete.bind(undefined, data), children: "\u5220\u9664" }))] })] }));
  45. };