import { FormEvent } from 'react'; import { useTranslation } from 'react-i18next'; import Checkbox from '~/components/common/form/checkbox'; import Selector from '~/components/common/form/selector'; import TextBox from '~/components/common/form/textbox'; import BackToDashboard from '~/components/common/navigation/back_to_dashboard'; import FormLayout from '~/components/layouts/form_layout'; import useSearchParam from '~/hooks/use_search_param'; import { Collection } from '~/types/app'; export type FormLinkData = { name: string; description: string | null; url: string; favorite: boolean; collectionId: Collection['id']; }; interface FormLinkProps { title: string; canSubmit: boolean; disableHomeLink?: boolean; data: FormLinkData; errors?: Record>; collections: Collection[]; disableInputs?: boolean; submitBtnDanger?: boolean; setData: (name: string, value: any) => void; handleSubmit: () => void; } export default function FormLink({ title, canSubmit, disableHomeLink, data, errors, collections, disableInputs = false, submitBtnDanger = false, setData, handleSubmit, }: FormLinkProps) { const { t } = useTranslation('common'); const collectionId = Number(useSearchParam('collectionId')) ?? collections?.[0].id; const onSubmit = (event: FormEvent) => { event.preventDefault(); handleSubmit(); }; return ( setData('collectionId', value)} options={collections.map(({ id, name }) => ({ label: name, value: id, }))} required /> ); }