feat: create edit collection page

This commit is contained in:
Sonny
2024-05-14 23:57:54 +02:00
committed by Sonny
parent 6b327a5b1e
commit 6b4cfd9926
13 changed files with 180 additions and 38 deletions

View File

@@ -0,0 +1,41 @@
import type Collection from '#models/collection';
import { useForm } from '@inertiajs/react';
import { useMemo } from 'react';
import FormCollection, {
FormCollectionData,
} from '~/components/form/form_collection';
export default function EditCollectionPage({
collection,
}: {
collection: Collection;
}) {
const { data, setData, put, processing, errors } =
useForm<FormCollectionData>({
name: collection.name,
description: collection.description,
visibility: collection.visibility,
});
const canSubmit = useMemo<boolean>(() => {
const isFormEdited =
data.name !== collection.name ||
data.description !== collection.description ||
data.visibility !== collection.visibility;
const isFormValid = data.name !== '';
return isFormEdited && isFormValid && !processing;
}, [data, collection]);
const handleSubmit = () => put(`/collections/${collection.id}`);
return (
<FormCollection
title="Edit a collection"
canSubmit={canSubmit}
data={data}
setData={setData}
handleSubmit={handleSubmit}
// TODO: fix this, type mistmatch (Record<string, string[]> sent by the backend, but useForm expects a Record<string, string>)
errors={errors as any}
/>
);
}