From aa76c2b54be33e759207dc963ed21b6b1a380125 Mon Sep 17 00:00:00 2001 From: Joao Correia Date: Thu, 23 Jan 2025 02:48:25 +0000 Subject: [PATCH] Work on workflow builder: - Made number of approvers dynamic with many select inputs as needed - Tracking approval select input changes with step.assignees - Fetching teachers and corporates from backend - Responsive styling when rendering several select inputs --- .../WorkflowEditableStepComponent.tsx | 88 +++++++++++-------- .../ApprovalWorkflows/WorkflowForm.tsx | 39 +++++--- .../ApprovalWorkflows/WorkflowStepNumber.tsx | 2 +- .../ApprovalWorkflows/WorkflowStepSelects.tsx | 85 ++++++++++-------- src/interfaces/approval.workflow.ts | 3 +- src/pages/approval-workflows/create.tsx | 43 +++++++-- src/pages/approval-workflows/index.tsx | 7 +- 7 files changed, 165 insertions(+), 102 deletions(-) diff --git a/src/components/ApprovalWorkflows/WorkflowEditableStepComponent.tsx b/src/components/ApprovalWorkflows/WorkflowEditableStepComponent.tsx index 47a66601..511ff65e 100644 --- a/src/components/ApprovalWorkflows/WorkflowEditableStepComponent.tsx +++ b/src/components/ApprovalWorkflows/WorkflowEditableStepComponent.tsx @@ -1,40 +1,47 @@ import { WorkflowStep } from "@/interfaces/approval.workflow"; import Option from "@/interfaces/option"; -import { useState } from "react"; +import { useEffect, useState } from "react"; import { BsTrash } from "react-icons/bs"; import { LuGripHorizontal } from "react-icons/lu"; import WorkflowStepNumber from "./WorkflowStepNumber"; import WorkflowStepSelects from "./WorkflowStepSelects"; +import { CorporateUser, TeacherUser } from "@/interfaces/user"; +import { AiOutlineUserAdd } from "react-icons/ai"; -const teacherOptions: Option[] = [ - // fetch from database? -] - -const directorOptions: Option[] = [ - // fetch from database? -] +interface Props extends WorkflowStep { + entityTeachers: TeacherUser[]; + entityCorporates: CorporateUser[]; + onSelectChange: (numberOfSelects: number, index: number, value: Option | null) => void; +} export default function WorkflowEditableStepComponent({ stepType, stepNumber, - completed = false, finalStep, onDelete, -}: WorkflowStep) { + onSelectChange, + entityTeachers, + entityCorporates, +}: Props) { - const [leftValue, setLeftValue] = useState