import { Accordion, Button, Col, Grid, Group, NumberInput, PasswordInput, Select, Text, TextInput, Title, } from "@mantine/core"; import { useForm, yupResolver } from "@mantine/form"; import { useModals } from "@mantine/modals"; import { ModalsContextProps } from "@mantine/modals/lib/context"; import * as yup from "yup"; import shareService from "../../services/share.service"; const showCreateUploadModal = ( modals: ModalsContextProps, uploadCallback: ( id: string, expiration: number, security: { password?: string; maxVisitors?: number } ) => void ) => { return modals.openModal({ title: Share, children: , }); }; const Body = ({ uploadCallback, }: { uploadCallback: ( id: string, expiration: number, security: { password?: string; maxVisitors?: number } ) => void; }) => { const modals = useModals(); const validationSchema = yup.object().shape({ link: yup.string().required().min(2).max(50), password: yup.string().min(3).max(100), maxVisitors: yup.number().min(1), }); const form = useForm({ initialValues: { link: "", password: undefined, maxVisitors: undefined, expiration: "1440", }, schema: yupResolver(validationSchema), }); return (
{ if (await shareService.isIdAlreadyInUse(values.link)) { form.setFieldError("link", "Link already in use."); } else { modals.closeAll(); uploadCallback(values.link, parseInt(values.expiration), { password: values.password, maxVisitors: values.maxVisitors, }); } })} > ({ color: theme.colors.gray[6], })} > {window.location.origin}/share/ {form.values.link == "" ? "myAwesomeShare" : form.values.link}