diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopPanel/TopPanel.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopPanel/TopPanel.tsx index 42651bdbed2..e45eb937dc9 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopPanel/TopPanel.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopPanel/TopPanel.tsx @@ -1,16 +1,21 @@ -import { Flex, Spacer } from '@invoke-ai/ui-library'; +import { Flex, IconButton, Spacer } from '@invoke-ai/ui-library'; import { useAppSelector } from 'app/store/storeHooks'; import AddNodeButton from 'features/nodes/components/flow/panels/TopPanel/AddNodeButton'; import ClearFlowButton from 'features/nodes/components/flow/panels/TopPanel/ClearFlowButton'; import SaveWorkflowButton from 'features/nodes/components/flow/panels/TopPanel/SaveWorkflowButton'; import UpdateNodesButton from 'features/nodes/components/flow/panels/TopPanel/UpdateNodesButton'; +import { useWorkflowEditorSettingsModal } from 'features/nodes/components/flow/panels/TopRightPanel/WorkflowEditorSettings'; import { WorkflowName } from 'features/nodes/components/sidePanel/WorkflowName'; import { selectWorkflowName } from 'features/nodes/store/workflowSlice'; -import WorkflowLibraryMenu from 'features/workflowLibrary/components/WorkflowLibraryMenu/WorkflowLibraryMenu'; import { memo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { PiGearSixFill } from 'react-icons/pi'; const TopCenterPanel = () => { const name = useAppSelector(selectWorkflowName); + const modal = useWorkflowEditorSettingsModal(); + + const { t } = useTranslation(); return ( @@ -22,7 +27,12 @@ const TopCenterPanel = () => { - + } + onClick={modal.setTrue} + /> ); }; diff --git a/invokeai/frontend/web/src/features/nodes/components/sidePanel/NewWorkflowButton.tsx b/invokeai/frontend/web/src/features/nodes/components/sidePanel/NewWorkflowButton.tsx deleted file mode 100644 index 1fa11e2dbec..00000000000 --- a/invokeai/frontend/web/src/features/nodes/components/sidePanel/NewWorkflowButton.tsx +++ /dev/null @@ -1,34 +0,0 @@ -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'; diff --git a/invokeai/frontend/web/src/features/nodes/components/sidePanel/WorkflowListMenu/ActiveWorkflowNameAndActions.tsx b/invokeai/frontend/web/src/features/nodes/components/sidePanel/WorkflowListMenu/ActiveWorkflowNameAndActions.tsx index 31bb655522f..3bb2dff02bb 100644 --- a/invokeai/frontend/web/src/features/nodes/components/sidePanel/WorkflowListMenu/ActiveWorkflowNameAndActions.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/sidePanel/WorkflowListMenu/ActiveWorkflowNameAndActions.tsx @@ -1,9 +1,9 @@ import { Flex, Spacer } from '@invoke-ai/ui-library'; import { useAppSelector } from 'app/store/storeHooks'; -import { NewWorkflowButton } from 'features/nodes/components/sidePanel/NewWorkflowButton'; import { WorkflowListMenuTrigger } from 'features/nodes/components/sidePanel/WorkflowListMenu/WorkflowListMenuTrigger'; import { WorkflowViewEditToggleButton } from 'features/nodes/components/sidePanel/WorkflowViewEditToggleButton'; import { selectWorkflowMode } from 'features/nodes/store/workflowSlice'; +import { WorkflowLibraryMenu } from 'features/workflowLibrary/components/WorkflowLibraryMenu/WorkflowLibraryMenu'; import { memo } from 'react'; import SaveWorkflowButton from './SaveWorkflowButton'; @@ -17,7 +17,7 @@ export const ActiveWorkflowNameAndActions = memo(() => { {mode === 'edit' && } - + ); }); diff --git a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/SettingsMenuItem.tsx b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/SettingsMenuItem.tsx deleted file mode 100644 index 59699427951..00000000000 --- a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/SettingsMenuItem.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { MenuItem } from '@invoke-ai/ui-library'; -import { useWorkflowEditorSettingsModal } from 'features/nodes/components/flow/panels/TopRightPanel/WorkflowEditorSettings'; -import { memo } from 'react'; -import { useTranslation } from 'react-i18next'; -import { PiGearSixFill } from 'react-icons/pi'; - -const DownloadWorkflowMenuItem = () => { - const { t } = useTranslation(); - const modal = useWorkflowEditorSettingsModal(); - - return ( - } onClick={modal.setTrue}> - {t('nodes.workflowSettings')} - - ); -}; - -export default memo(DownloadWorkflowMenuItem); diff --git a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/WorkflowLibraryMenu.tsx b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/WorkflowLibraryMenu.tsx index 73e9f5d4ba6..25da6bd4dea 100644 --- a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/WorkflowLibraryMenu.tsx +++ b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/WorkflowLibraryMenu.tsx @@ -13,13 +13,12 @@ import LoadWorkflowFromGraphMenuItem from 'features/workflowLibrary/components/W import { NewWorkflowMenuItem } from 'features/workflowLibrary/components/WorkflowLibraryMenu/NewWorkflowMenuItem'; import SaveWorkflowAsMenuItem from 'features/workflowLibrary/components/WorkflowLibraryMenu/SaveWorkflowAsMenuItem'; import SaveWorkflowMenuItem from 'features/workflowLibrary/components/WorkflowLibraryMenu/SaveWorkflowMenuItem'; -import SettingsMenuItem from 'features/workflowLibrary/components/WorkflowLibraryMenu/SettingsMenuItem'; import UploadWorkflowMenuItem from 'features/workflowLibrary/components/WorkflowLibraryMenu/UploadWorkflowMenuItem'; import { memo } from 'react'; import { useTranslation } from 'react-i18next'; import { PiDotsThreeOutlineFill } from 'react-icons/pi'; -const WorkflowLibraryMenu = () => { +export const WorkflowLibraryMenu = memo(() => { const { t } = useTranslation(); const { isOpen, onOpen, onClose } = useDisclosure(); const shift = useShiftModifier(); @@ -31,6 +30,8 @@ const WorkflowLibraryMenu = () => { aria-label={t('workflows.workflowEditorMenu')} icon={} pointerEvents="auto" + size="sm" + variant="ghost" /> @@ -39,13 +40,10 @@ const WorkflowLibraryMenu = () => { - - {shift && } {shift && } ); -}; - -export default memo(WorkflowLibraryMenu); +}); +WorkflowLibraryMenu.displayName = 'WorkflowLibraryMenu';