Skip to content

Commit

Permalink
feat: add HTTP Trigger node component
Browse files Browse the repository at this point in the history
  • Loading branch information
yamankatby committed Apr 27, 2023
1 parent 906c29c commit 8f385be
Show file tree
Hide file tree
Showing 5 changed files with 99 additions and 5 deletions.
23 changes: 23 additions & 0 deletions src/assets/icons/Http.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import { SVGProps } from "react";
const SvgComponent = (props: SVGProps<SVGSVGElement>) => (
<svg
xmlns="http://www.w3.org/2000/svg"
width={24}
height={24}
fill="none"
{...props}
>
<g clipPath="url(#a)">
<path
fill="currentColor"
d="M4.5 11h-2V9H1v6h1.5v-2.5h2V15H6V9H4.5v2Zm2.5-.5h1.5V15H10v-4.5h1.5V9H7v1.5Zm5.5 0H14V15h1.5v-4.5H17V9h-4.5v1.5Zm9-1.5H18v6h1.5v-2h2c.8 0 1.5-.7 1.5-1.5v-1c0-.8-.7-1.5-1.5-1.5Zm0 2.5h-2v-1h2v1Z"
/>
</g>
<defs>
<clipPath id="a">
<path fill="#fff" d="M0 0h24v24H0z" />
</clipPath>
</defs>
</svg>
);
export default SvgComponent;
3 changes: 3 additions & 0 deletions src/assets/icons/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -106,12 +106,15 @@ export { TableColumn };
import { DragVertical } from "mdi-material-ui";
export { DragVertical };

export { default as Http } from "./Http";

export {
Plus,
CursorPointer,
GestureTap,
ClockOutline,
FlashOutline,
Api,
} from "mdi-material-ui";

export * from "./AddRow";
Expand Down
47 changes: 47 additions & 0 deletions src/components/Workflow/HttpTriggerNode.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import { Http } from "@src/assets/icons";
import {
Node,
NodeName,
NodeParam,
NodeParams,
NodeToolbar,
} from "@src/components/Workflow";
import { useCallback, useState } from "react";

export default function HttpTriggerNode() {
const [name, setName] = useState("HTTP Trigger");

const [collapsed, setCollapsed] = useState(false);

const handleToggleCollapse = useCallback(() => {
setCollapsed((collapsed) => !collapsed);
}, [setCollapsed]);

return (
<Node>
<NodeToolbar
collapsed={collapsed}
onToggleCollapse={handleToggleCollapse}
>
<Http />
<NodeName
name={name}
onNameChange={setName}
tooltip="Triggered by an HTTP request"
/>
</NodeToolbar>
<NodeParams open={!collapsed}>
<NodeParam
name="Method"
tooltip="The HTTP method to listen for"
htmlFor="method"
/>
<NodeParam
name="Path"
tooltip="The path to listen for"
htmlFor="path"
/>
</NodeParams>
</Node>
);
}
8 changes: 8 additions & 0 deletions src/components/Workflow/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import HttpTriggerNode from "./HttpTriggerNode";
import Node from "./Node";
import NodeName from "./NodeName";
import NodeParam from "./NodeParam";
import NodeParams from "./NodeParams";
import NodeToolbar from "./NodeToolbar";

export { HttpTriggerNode, Node, NodeName, NodeParam, NodeParams, NodeToolbar };
23 changes: 18 additions & 5 deletions src/pages/Workflow/WorkflowPage.tsx
Original file line number Diff line number Diff line change
@@ -1,15 +1,21 @@
import { Button, ListItemIcon, Menu, MenuItem, Stack } from "@mui/material";
import {
Plus as PlusIcon,
CursorPointer as CursorPointerIcon,
Api as ApiIcon,
ClockOutline as ClockOutlineIcon,
GestureTap as GestureTapIcon,
FlashOutline as FlashOutlineIcon,
GestureTap as GestureTapIcon,
Plus as PlusIcon,
} from "@src/assets/icons";
import { HttpTriggerNode } from "@src/components/Workflow";
import Node from "@src/components/Workflow/Node";
import NodeName from "@src/components/Workflow/NodeName";
import NodeParam from "@src/components/Workflow/NodeParam";
import NodeParams from "@src/components/Workflow/NodeParams";
import NodeToolbar from "@src/components/Workflow/NodeToolbar";
import {
usePopupState,
bindToggle,
bindPopover,
bindToggle,
usePopupState,
} from "material-ui-popup-state/hooks";

export default function WorkflowPage() {
Expand All @@ -34,6 +40,12 @@ export default function WorkflowPage() {
</ListItemIcon>
Manually trigger
</MenuItem>
<MenuItem>
<ListItemIcon>
<ApiIcon />
</ListItemIcon>
HTTP trigger
</MenuItem>
<MenuItem>
<ListItemIcon>
<ClockOutlineIcon />
Expand All @@ -47,6 +59,7 @@ export default function WorkflowPage() {
Automated trigger
</MenuItem>
</Menu>
<HttpTriggerNode />
</Stack>
);
}

0 comments on commit 8f385be

Please sign in to comment.