From 82f645c7a1226549a2c65200acee68c987d5121a Mon Sep 17 00:00:00 2001 From: psychedelicious <4822129+psychedelicious@users.noreply.github.com> Date: Fri, 28 Feb 2025 14:46:03 +1000 Subject: [PATCH] feat(ui): add new workflow button to library menu --- .../WorkflowListMenuTrigger.tsx | 2 ++ .../components/NewWorkflowButton.tsx | 33 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 invokeai/frontend/web/src/features/workflowLibrary/components/NewWorkflowButton.tsx diff --git a/invokeai/frontend/web/src/features/nodes/components/sidePanel/WorkflowListMenu/WorkflowListMenuTrigger.tsx b/invokeai/frontend/web/src/features/nodes/components/sidePanel/WorkflowListMenu/WorkflowListMenuTrigger.tsx index 5e851242c36..c2fe14669f4 100644 --- a/invokeai/frontend/web/src/features/nodes/components/sidePanel/WorkflowListMenu/WorkflowListMenuTrigger.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/sidePanel/WorkflowListMenu/WorkflowListMenuTrigger.tsx @@ -15,6 +15,7 @@ import { useAppSelector } from 'app/store/storeHooks'; import ScrollableContent from 'common/components/OverlayScrollbars/ScrollableContent'; import { useWorkflowListMenu } from 'features/nodes/store/workflowListMenu'; import { selectWorkflowName } from 'features/nodes/store/workflowSlice'; +import { NewWorkflowButton } from 'features/workflowLibrary/components/NewWorkflowButton'; import UploadWorkflowButton from 'features/workflowLibrary/components/UploadWorkflowButton'; import { useRef } from 'react'; import { useTranslation } from 'react-i18next'; @@ -63,6 +64,7 @@ export const WorkflowListMenuTrigger = () => { + diff --git a/invokeai/frontend/web/src/features/workflowLibrary/components/NewWorkflowButton.tsx b/invokeai/frontend/web/src/features/workflowLibrary/components/NewWorkflowButton.tsx new file mode 100644 index 00000000000..e51ff78eb29 --- /dev/null +++ b/invokeai/frontend/web/src/features/workflowLibrary/components/NewWorkflowButton.tsx @@ -0,0 +1,33 @@ +import { IconButton } from '@invoke-ai/ui-library'; +import { useNewWorkflow } from 'features/workflowLibrary/components/NewWorkflowConfirmationAlertDialog'; +import type { MouseEvent } from 'react'; +import { memo, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; +import { PiFilePlusBold } from 'react-icons/pi'; + +export const NewWorkflowButton = memo(() => { + const newWorkflow = useNewWorkflow(); + + const { t } = useTranslation(); + + const onClickNewWorkflow = useCallback( + (e: MouseEvent) => { + // We need to stop the event from propagating to the parent element, else the click will open the list menu + e.stopPropagation(); + newWorkflow.createWithDialog(); + }, + [newWorkflow] + ); + + return ( + } + /> + ); +}); + +NewWorkflowButton.displayName = 'NewWorkflowButton';