From f485c782f37af9ad3e313f6b1e45b546d1ea1663 Mon Sep 17 00:00:00 2001 From: Joao Correia Date: Sun, 19 Jan 2025 19:23:56 +0000 Subject: [PATCH] Start implementing workflow step form behaviour --- .../ApprovalWorkflows/WorkflowStep.tsx | 98 ++++++++++++ .../ApprovalWorkflows/WorkflowStepNumber.tsx | 25 ++++ .../ApprovalWorkflows/WorkflowStepSelects.tsx | 53 +++++++ src/pages/approval-workflows/[id].tsx | 141 ++++++++++++++++-- src/pages/approval-workflows/index.tsx | 4 +- 5 files changed, 308 insertions(+), 13 deletions(-) create mode 100644 src/components/ApprovalWorkflows/WorkflowStep.tsx create mode 100644 src/components/ApprovalWorkflows/WorkflowStepNumber.tsx create mode 100644 src/components/ApprovalWorkflows/WorkflowStepSelects.tsx diff --git a/src/components/ApprovalWorkflows/WorkflowStep.tsx b/src/components/ApprovalWorkflows/WorkflowStep.tsx new file mode 100644 index 00000000..e451744d --- /dev/null +++ b/src/components/ApprovalWorkflows/WorkflowStep.tsx @@ -0,0 +1,98 @@ +import Option from "@/interfaces/option"; +import clsx from "clsx"; +import { useState } from "react"; +import { BsTrash } from "react-icons/bs"; +import WorkflowStepNumber from "./WorkflowStepNumber"; +import WorkflowStepSelects from "./WorkflowStepSelects"; + +export type StepType = "form-intake" | "approval-by"; + +const teacherOptions: Option[] = [ + // fetch from database? +] + +const directorOptions: Option[] = [ + // fetch from database? +] + +interface Props { + editView?: boolean, + finalStep?: boolean, + isSelected?: boolean, + stepNumber: number, + stepType: StepType, + requestedBy: string, + //requestedBy: TeacherUser | CorporateUser | MasterCorporateUser, + onDelete?: () => void; +} + +export default function WorkflowStep({ + editView = false, + finalStep = false, + isSelected = false, + stepNumber, + stepType, + requestedBy, + onDelete, +}: Props) { + // disable selectability of step if in editView + const effectiveIsSelected = editView ? false : isSelected; + + const [leftValue, setLeftValue] = useState