diff --git a/packages/serverless-workflow-diagram-editor/src/react-flow/diagram/Diagram.css b/packages/serverless-workflow-diagram-editor/src/react-flow/diagram/Diagram.css index 42d7c67..2e588e7 100644 --- a/packages/serverless-workflow-diagram-editor/src/react-flow/diagram/Diagram.css +++ b/packages/serverless-workflow-diagram-editor/src/react-flow/diagram/Diagram.css @@ -402,6 +402,57 @@ } /* end validation errors */ + + .dec-start-end-node { + position: relative; + display: flex; + justify-content: center; + align-items: center; + } + + .dec-start-node, + .dec-end-node { + width: 72px; + height: 72px; + border-radius: 50%; + display: flex; + justify-content: center; + align-items: center; + position: relative; + background: var(--color-background, white); + } + + .dec-start-node { + border: 1px solid #aea6a6; + background-color: #f2f2f2; + } + + .dec-end-node { + border: 1px solid #aea6a6; + background-color: #e7e3e3; + } + + .dec-end-node-inner { + position: absolute; + inset: 6px; + border-radius: 50%; + border: 1px solid #aea6a6; + background-color: #e7e3e3; + pointer-events: none; + } + + .dec-start-end-node.selected .dec-start-node { + box-shadow: 0 0 0 4px rgba(209, 204, 204, 0.3); + } + + .dec-start-end-node.selected .dec-end-node { + box-shadow: 0 0 0 4px rgba(209, 204, 204, 0.3); + } + + .dec-start-node:hover, + .dec-end-node:hover { + box-shadow: 0 0 0 4px rgba(209, 204, 204, 0.3); + } } /* custom edges */ diff --git a/packages/serverless-workflow-diagram-editor/src/react-flow/nodes/Nodes.tsx b/packages/serverless-workflow-diagram-editor/src/react-flow/nodes/Nodes.tsx index 9a9efe6..c676b5e 100644 --- a/packages/serverless-workflow-diagram-editor/src/react-flow/nodes/Nodes.tsx +++ b/packages/serverless-workflow-diagram-editor/src/react-flow/nodes/Nodes.tsx @@ -182,26 +182,18 @@ function TerminalNodeContent({ id, type }: { id: string; type: TerminalNodeType ); } -// TODO: These props are just a placeholder -interface PlaceholderProps { - id: string; - data: BaseNodeData; - selected: boolean; - type: string; -} - -// TODO: This content is just a placeholder -function PlaceholderContent({ id, data, selected, type }: PlaceholderProps) { +function StartEndNode({ id, data, selected, type }: NodeContentProps) { + const isStart = type === GraphNodeType.Start; return (
- -
- {`${type}\n${data.label}`} + {!isStart && } +
+ {!isStart &&
}
- + {isStart && }
); } @@ -210,14 +202,14 @@ function PlaceholderContent({ id, data, selected, type }: PlaceholderProps) { export type StartNodeType = RF.Node; export function StartNode({ id, data, selected, type }: RF.NodeProps) { // TODO: This component is just a placeholder - return ; + return ; } /* end node */ export type EndNodeType = RF.Node; export function EndNode({ id, data, selected, type }: RF.NodeProps) { // TODO: This component is just a placeholder - return ; + return ; } /* entry node */ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8d88428..5e458c1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -93,6 +93,9 @@ catalogs: jsdom: specifier: ^29.1.0 version: 29.1.1 + lint-staged: + specifier: ^17.0.8 + version: 17.0.8 lucide-react: specifier: ^1.21.0 version: 1.21.0 @@ -153,7 +156,7 @@ importers: specifier: 'catalog:' version: 9.1.7 lint-staged: - specifier: 17.0.8 + specifier: 'catalog:' version: 17.0.8 oxfmt: specifier: 'catalog:'