import Typography, { ITypo, ITypoColor } from "@Front/Components/DesignSystem/Typography"; import classes from "./classes.module.scss"; import DefaultTemplate from "@Front/Components/LayoutTemplates/DefaultTemplate"; import { useRouter } from "next/router"; import TextField from "@Front/Components/DesignSystem/Form/TextField"; import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button"; import Form from "@Front/Components/DesignSystem/Form"; import Subscriptions from "@Front/Api/LeCoffreApi/Admin/Subscriptions/Subscriptions"; import { useCallback, useState } from "react"; import { TrashIcon } from "@heroicons/react/24/outline"; import PlusIcon from "@Assets/Icons/plus.svg"; export enum EForfeitType { "standard", "unlimited", } type EmailLine = { element: JSX.Element; id: number; }; export default function SubscriptionInvite() { const router = useRouter(); const nbOfCollaborators = parseInt(router.query["nbOfCollaborators"] as string); const [incrementalId, setIncrementalId] = useState(isNaN(nbOfCollaborators) ? 0 : nbOfCollaborators); const getInitialLines = () => { const linesToGet = isNaN(nbOfCollaborators) ? 1 : nbOfCollaborators; const lines: EmailLine[] = []; for (let i = 0; i < linesToGet; i++) { lines.push({ element: , id: i, }); } return lines; }; const [lines, setLines] = useState(getInitialLines()); const sendInvitations = async (e: React.FormEvent | null) => { if (!e) return; e.preventDefault(); const form = e.target as HTMLFormElement; const emails: string[] = []; Object.keys(form.elements).forEach((key) => { if (isNaN(parseInt(key))) return; const element = form.elements[key as any] as HTMLInputElement; if (element.name.includes("email_")) { emails.push(element.value); } }); try { await Subscriptions.getInstance().post({ emails, }); } catch (e) { console.error(e); } }; const addLine = useCallback(() => { const newLine: EmailLine = { element: ( ), id: incrementalId + 1, }; setIncrementalId(incrementalId + 1); setLines((prev) => [...prev, newLine]); }, [incrementalId, lines]); const deleteLine = (e: React.MouseEvent) => { const lineId = parseInt(e.currentTarget.getAttribute("data-line") as string); setLines((prev) => prev.filter((line) => line.id !== lineId)); }; return (
Inviter vos collaborateurs {!isNaN(nbOfCollaborators) && ( {nbOfCollaborators} collaborateurs à inviter )} {isNaN(nbOfCollaborators) && ( Collaborateurs illimités )}
{lines.map((line, index) => (
{line.element} {!nbOfCollaborators && ( )}
))} {isNaN(nbOfCollaborators) && (
)}
); }