diff --git a/ui/package-lock.json b/ui/package-lock.json index fe5fe63c..01912e90 100644 --- a/ui/package-lock.json +++ b/ui/package-lock.json @@ -11,7 +11,6 @@ "@ant-design/pro-components": "^2.8.2", "@hookform/resolvers": "^3.9.0", "@radix-ui/react-dialog": "^1.1.2", - "@radix-ui/react-dropdown-menu": "^2.1.1", "@radix-ui/react-label": "^2.1.0", "@radix-ui/react-select": "^2.1.1", "@radix-ui/react-slot": "^1.1.0", @@ -23,7 +22,6 @@ "cron-parser": "^4.9.0", "i18next": "^24.2.0", "i18next-browser-languagedetector": "^8.0.2", - "i18next-http-backend": "^3.0.1", "immer": "^10.1.1", "jszip": "^3.10.1", "lucide-react": "^0.469.0", @@ -3051,34 +3049,6 @@ } } }, - "node_modules/@radix-ui/react-dropdown-menu": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.1.tgz", - "integrity": "sha512-y8E+x9fBq9qvteD2Zwa4397pUVhYsh9iq44b5RD5qu1GMJWBCBuVg1hMyItbc6+zH00TxGRqd9Iot4wzf3OoBQ==", - "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.0", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-menu": "2.1.1", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-controllable-state": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, "node_modules/@radix-ui/react-focus-guards": { "version": "1.1.0", "resolved": "https://registry.npmmirror.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.0.tgz", @@ -3156,45 +3126,6 @@ } } }, - "node_modules/@radix-ui/react-menu": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/@radix-ui/react-menu/-/react-menu-2.1.1.tgz", - "integrity": "sha512-oa3mXRRVjHi6DZu/ghuzdylyjaMXLymx83irM7hTxutQbD+7IhPKdMdRHD26Rm+kHRrWcrUkkRPv5pd47a2xFQ==", - "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-collection": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.0", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-dismissable-layer": "1.1.0", - "@radix-ui/react-focus-guards": "1.1.0", - "@radix-ui/react-focus-scope": "1.1.0", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-popper": "1.2.0", - "@radix-ui/react-portal": "1.1.1", - "@radix-ui/react-presence": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-roving-focus": "1.1.0", - "@radix-ui/react-slot": "1.1.0", - "@radix-ui/react-use-callback-ref": "1.1.0", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.5.7" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, "node_modules/@radix-ui/react-popper": { "version": "1.2.0", "resolved": "https://registry.npmmirror.com/@radix-ui/react-popper/-/react-popper-1.2.0.tgz", @@ -3249,29 +3180,6 @@ } } }, - "node_modules/@radix-ui/react-presence": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/@radix-ui/react-presence/-/react-presence-1.1.0.tgz", - "integrity": "sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, "node_modules/@radix-ui/react-primitive": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz", @@ -3294,36 +3202,6 @@ } } }, - "node_modules/@radix-ui/react-roving-focus": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.0.tgz", - "integrity": "sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==", - "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-collection": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.0", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-controllable-state": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, "node_modules/@radix-ui/react-select": { "version": "2.1.1", "resolved": "https://registry.npmmirror.com/@radix-ui/react-select/-/react-select-2.1.1.tgz", @@ -4837,14 +4715,6 @@ "node": ">=12.0.0" } }, - "node_modules/cross-fetch": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/cross-fetch/-/cross-fetch-4.0.0.tgz", - "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", - "dependencies": { - "node-fetch": "^2.6.12" - } - }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -5667,14 +5537,6 @@ "@babel/runtime": "^7.23.2" } }, - "node_modules/i18next-http-backend": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/i18next-http-backend/-/i18next-http-backend-3.0.1.tgz", - "integrity": "sha512-XT2lYSkbAtDE55c6m7CtKxxrsfuRQO3rUfHzj8ZyRtY9CkIX3aRGwXGTkUhpGWce+J8n7sfu3J0f2wTzo7Lw0A==", - "dependencies": { - "cross-fetch": "4.0.0" - } - }, "node_modules/ignore": { "version": "5.3.1", "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.3.1.tgz", @@ -6187,25 +6049,6 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, "node_modules/node-releases": { "version": "2.0.19", "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.19.tgz", @@ -8176,11 +8019,6 @@ "resolved": "https://registry.npmmirror.com/toggle-selection/-/toggle-selection-1.0.6.tgz", "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, "node_modules/ts-api-utils": { "version": "1.4.3", "resolved": "https://registry.npmmirror.com/ts-api-utils/-/ts-api-utils-1.4.3.tgz", @@ -8481,20 +8319,6 @@ "loose-envify": "^1.0.0" } }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", diff --git a/ui/package.json b/ui/package.json index e84e81ba..ce3703df 100644 --- a/ui/package.json +++ b/ui/package.json @@ -13,7 +13,6 @@ "@ant-design/pro-components": "^2.8.2", "@hookform/resolvers": "^3.9.0", "@radix-ui/react-dialog": "^1.1.2", - "@radix-ui/react-dropdown-menu": "^2.1.1", "@radix-ui/react-label": "^2.1.0", "@radix-ui/react-select": "^2.1.1", "@radix-ui/react-slot": "^1.1.0", @@ -25,7 +24,6 @@ "cron-parser": "^4.9.0", "i18next": "^24.2.0", "i18next-browser-languagedetector": "^8.0.2", - "i18next-http-backend": "^3.0.1", "immer": "^10.1.1", "jszip": "^3.10.1", "lucide-react": "^0.469.0", diff --git a/ui/src/components/workflow/AddNode.tsx b/ui/src/components/workflow/AddNode.tsx index 854a9281..e747478d 100644 --- a/ui/src/components/workflow/AddNode.tsx +++ b/ui/src/components/workflow/AddNode.tsx @@ -1,30 +1,17 @@ import { Plus } from "lucide-react"; - import { BrandNodeProps, NodeProps } from "./types"; - import { newWorkflowNode, workflowNodeDropdownList, WorkflowNodeType } from "@/domain/workflow"; import { useZustandShallowSelector } from "@/hooks"; import { useWorkflowStore } from "@/stores/workflow"; -import { - DropdownMenu, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuLabel, - DropdownMenuPortal, - DropdownMenuSeparator, - DropdownMenuSub, - DropdownMenuSubContent, - DropdownMenuSubTrigger, - DropdownMenuTrigger, -} from "../ui/dropdown-menu"; +import { Dropdown } from "antd"; import DropdownMenuItemIcon from "./DropdownMenuItemIcon"; -import Show from "../Show"; import { useTranslation } from "react-i18next"; const AddNode = ({ data }: NodeProps | BrandNodeProps) => { - const { addNode } = useWorkflowStore(useZustandShallowSelector(["addNode"])); const { t } = useTranslation(); + const { addNode } = useWorkflowStore(useZustandShallowSelector(["addNode"])); + const handleTypeSelected = (type: WorkflowNodeType, provider?: string) => { const node = newWorkflowNode(type, { providerType: provider, @@ -35,57 +22,43 @@ const AddNode = ({ data }: NodeProps | BrandNodeProps) => { return (
- - -
- -
-
- - {t("workflow.node.selectNodeType.label")} - - {workflowNodeDropdownList.map((item) => ( - - -
{item.name}
-
- - - {item.children?.map((subItem) => { - return ( - { - handleTypeSelected(item.type, subItem.providerType); - }} - > -
{subItem.name}
-
- ); - })} -
-
- - } - > - { - handleTypeSelected(item.type, item.providerType); - }} - > -
{item.name}
-
-
- ))} -
-
+ { + if (item.leaf) { + return { + key: item.type, + label:
{item.name}
, + icon: , + onClick: () => { + handleTypeSelected(item.type); + }, + }; + } + + return { + key: item.type, + label:
{item.name}
, + icon: , + children: item.children?.map((subItem) => { + return { + key: subItem.providerType, + label:
{subItem.name}
, + icon: , + onClick: () => { + handleTypeSelected(item.type, subItem.providerType); + }, + }; + }), + }; + }), + }} + trigger={["click"]} + > +
+ +
+
); }; diff --git a/ui/src/components/workflow/ConditionNode.tsx b/ui/src/components/workflow/ConditionNode.tsx index 9c29ca7d..8335222f 100644 --- a/ui/src/components/workflow/ConditionNode.tsx +++ b/ui/src/components/workflow/ConditionNode.tsx @@ -2,7 +2,7 @@ import { useWorkflowStore } from "@/stores/workflow"; import AddNode from "./AddNode"; import { NodeProps } from "./types"; import { useZustandShallowSelector } from "@/hooks"; -import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "../ui/dropdown-menu"; +import { Dropdown } from "antd"; import { Ellipsis, Trash2 } from "lucide-react"; const ConditionNode = ({ data, branchId, branchIndex }: NodeProps) => { @@ -13,21 +13,26 @@ const ConditionNode = ({ data, branchId, branchIndex }: NodeProps) => { return ( <>
- - + , + danger: true, + onClick: () => { + removeBranch(branchId ?? "", branchIndex ?? 0); + }, + }, + ], + }} + trigger={["click"]} + > +
- - - { - removeBranch(branchId ?? "", branchIndex ?? 0); - }} - > -
删除分支
-
-
- +
+
diff --git a/ui/src/components/workflow/DeployToLocal.tsx b/ui/src/components/workflow/DeployToLocal.tsx index bfaa0aaf..2b929575 100644 --- a/ui/src/components/workflow/DeployToLocal.tsx +++ b/ui/src/components/workflow/DeployToLocal.tsx @@ -14,7 +14,7 @@ import { useEffect, useState } from "react"; import i18n from "@/i18n"; import { WorkflowNode } from "@/domain/workflow"; import { Textarea } from "../ui/textarea"; -import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "../ui/dropdown-menu"; +import { Dropdown } from "antd"; import AccessSelect from "./AccessSelect"; import AccessEditModal from "../access/AccessEditModal"; import { Plus } from "lucide-react"; @@ -432,22 +432,30 @@ Remove-Item -Path "$pfxPath" -Force
{t("domain.deployment.form.shell_command.label")}
- - - {t("domain.deployment.form.shell_preset_scripts.trigger")} - - - handleUsePresetScript("reload_nginx")}> - {t("domain.deployment.form.shell_preset_scripts.option.reload_nginx.label")} - - handleUsePresetScript("binding_iis")}> - {t("domain.deployment.form.shell_preset_scripts.option.binding_iis.label")} - - handleUsePresetScript("binding_netsh")}> - {t("domain.deployment.form.shell_preset_scripts.option.binding_netsh.label")} - - - + handleUsePresetScript("reload_nginx"), + }, + { + key: "binding_iis", + label: t("domain.deployment.form.shell_preset_scripts.option.binding_iis.label"), + onClick: () => handleUsePresetScript("binding_iis"), + }, + { + key: "binding_netsh", + label: t("domain.deployment.form.shell_preset_scripts.option.binding_netsh.label"), + onClick: () => handleUsePresetScript("binding_netsh"), + }, + ], + }} + trigger={["click"]} + > + {t("domain.deployment.form.shell_preset_scripts.trigger")} +