diff --git a/web/app/(commonLayout)/workflow/page.tsx b/web/app/(commonLayout)/workflow/page.tsx index 4907730ab3..486978ebf2 100644 --- a/web/app/(commonLayout)/workflow/page.tsx +++ b/web/app/(commonLayout)/workflow/page.tsx @@ -52,13 +52,13 @@ const initialEdges = [ sourceHandle: 'condition1', target: '3', }, - // { - // id: '2', - // type: 'custom', - // source: '2', - // sourceHandle: 'condition2', - // target: '4', - // }, + { + id: '2', + type: 'custom', + source: '2', + sourceHandle: 'condition2', + target: '4', + }, ] const Page: FC = () => { diff --git a/web/app/components/workflow/header/index.tsx b/web/app/components/workflow/header/index.tsx index ce9d5c3a55..f8fe8336ec 100644 --- a/web/app/components/workflow/header/index.tsx +++ b/web/app/components/workflow/header/index.tsx @@ -2,6 +2,7 @@ import type { FC } from 'react' import { memo } from 'react' import { useStore } from '../store' import RunAndHistory from './run-and-history' +import Publish from './publish' import { Edit03 } from '@/app/components/base/icons/src/vender/solid/general' import { Grid01 } from '@/app/components/base/icons/src/vender/line/layout' import Button from '@/app/components/base/button' @@ -47,12 +48,7 @@ const Header: FC = () => { ) } - + ) diff --git a/web/app/components/workflow/header/publish.tsx b/web/app/components/workflow/header/publish.tsx new file mode 100644 index 0000000000..2580befe06 --- /dev/null +++ b/web/app/components/workflow/header/publish.tsx @@ -0,0 +1,65 @@ +import { useState } from 'react' +import Button from '@/app/components/base/button' +import { + PortalToFollowElem, + PortalToFollowElemContent, + PortalToFollowElemTrigger, +} from '@/app/components/base/portal-to-follow-elem' + +const Publish = () => { + const [open, setOpen] = useState(false) + + return ( + + setOpen(v => !v)}> + + + +
+
+
+ Current Draft +
+
+ Auto-Saved 3 min ago · Evan +
+ +
+
+
+ Latest Published +
+
+
+ Auto-Saved 3 min ago · Evan +
+ +
+
+
+
+
+ ) +} + +export default Publish diff --git a/web/app/components/workflow/nodes/_base/components/next-step.tsx b/web/app/components/workflow/nodes/_base/components/next-step.tsx index c977fc1354..35fd2da9a6 100644 --- a/web/app/components/workflow/nodes/_base/components/next-step.tsx +++ b/web/app/components/workflow/nodes/_base/components/next-step.tsx @@ -133,8 +133,11 @@ const NextStep = () => { !!outgoers.length && outgoers.map(outgoer => (
+
+ IS TRUE +
+ export const NodeTargetHandle = ({ id, data, -}: NodeProps) => { + handleId, + handleClassName, + nodeSelectorClassName, +}: NodeHandleProps) => { const [open, setOpen] = useState(false) const store = useStoreApi() const incomers = getIncomers({ id } as Node, store.getState().getNodes(), store.getState().edges) @@ -32,13 +41,15 @@ export const NodeTargetHandle = ({ return ( <> ` hidden absolute left-0 top-0 pointer-events-none + ${nodeSelectorClassName} ${data.hovering && '!flex'} ${open && '!flex'} `} @@ -64,18 +76,13 @@ export const NodeTargetHandle = ({ ) } -type NodeSourceHandleProps = { - handleId?: string - handleClassName?: string - nodeSelectorClassName?: string -} & Pick export const NodeSourceHandle = ({ id, data, handleId, handleClassName, nodeSelectorClassName, -}: NodeSourceHandleProps) => { +}: NodeHandleProps) => { const [open, setOpen] = useState(false) const store = useStoreApi() const connectedEdges = getConnectedEdges([{ id } as Node], store.getState().edges) diff --git a/web/app/components/workflow/nodes/_base/components/title-description-input.tsx b/web/app/components/workflow/nodes/_base/components/title-description-input.tsx index b18357397d..6fd3835809 100644 --- a/web/app/components/workflow/nodes/_base/components/title-description-input.tsx +++ b/web/app/components/workflow/nodes/_base/components/title-description-input.tsx @@ -21,7 +21,7 @@ export const TitleInput = memo(({ className={` grow mr-2 px-1 h-6 text-base text-gray-900 font-semibold rounded-lg border border-transparent appearance-none outline-none hover:bg-gray-50 - focus:border-gray-300 focus:shadow-xs focus:bg-white + focus:border-gray-300 focus:shadow-xs focus:bg-white caret-[#295EFF] `} placeholder='Add title...' /> @@ -58,7 +58,7 @@ export const DescriptionInput = memo(({ className={` w-full text-xs text-gray-900 leading-[18px] bg-transparent appearance-none outline-none resize-none - placeholder:text-gray-400 + placeholder:text-gray-400 caret-[#295EFF] `} placeholder='Add description...' autoSize diff --git a/web/app/components/workflow/nodes/_base/node.tsx b/web/app/components/workflow/nodes/_base/node.tsx index d60f9d917a..04f78fbce5 100644 --- a/web/app/components/workflow/nodes/_base/node.tsx +++ b/web/app/components/workflow/nodes/_base/node.tsx @@ -46,8 +46,14 @@ const BaseNode: FC = ({ {data.title}
- {cloneElement(children, { id: nodeId, data })} -
+ { + children && ( +
+ {cloneElement(children, { id: nodeId, data })} +
+ ) + } +
{ data.desc && (
diff --git a/web/app/components/workflow/nodes/index.tsx b/web/app/components/workflow/nodes/index.tsx index 3ba4e05d2e..e17a1a318d 100644 --- a/web/app/components/workflow/nodes/index.tsx +++ b/web/app/components/workflow/nodes/index.tsx @@ -18,7 +18,15 @@ const CustomNode = memo((props: NodeProps) => { return ( <> - + { + nodeData.type !== BlockEnum.VariableAssigner && ( + + ) + } diff --git a/web/app/components/workflow/nodes/start/node.tsx b/web/app/components/workflow/nodes/start/node.tsx index 80a2f27570..329b6d1587 100644 --- a/web/app/components/workflow/nodes/start/node.tsx +++ b/web/app/components/workflow/nodes/start/node.tsx @@ -8,6 +8,7 @@ const i18nPrefix = 'workflow.nodes.start' const Node: FC = () => { const { t } = useTranslation() const { variables } = mockData + return (
diff --git a/web/app/components/workflow/panel/run-history.tsx b/web/app/components/workflow/panel/run-history.tsx index 8e54cf8379..dbfe89793f 100644 --- a/web/app/components/workflow/panel/run-history.tsx +++ b/web/app/components/workflow/panel/run-history.tsx @@ -4,6 +4,7 @@ import { CheckCircle } from '@/app/components/base/icons/src/vender/solid/genera import { AlertCircle } from '@/app/components/base/icons/src/vender/line/alertsAndFeedback' const RunHistory = () => { + const mode = useStore(state => state.mode) const setShowRunHistory = useStore(state => state.setShowRunHistory) return ( @@ -18,15 +19,19 @@ const RunHistory = () => {
-
- -
-
Test Run#7
-
- Evan · 2 min ago + { + mode === 'workflow' && ( +
+ +
+
Test Run#7
+
+ Evan · 2 min ago +
+
-
-
+ ) + }