feat(web): disable submit while saving + Save & create another + Cmd/Ctrl+Enter (#46)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -18,7 +18,10 @@ export function ObjectNewPage() {
|
||||
useDocumentTitle(t("objects.new"));
|
||||
useBreadcrumb([{ label: t("nav.objects"), to: "/objects" }, { label: t("objects.new") }]);
|
||||
|
||||
const onSubmit = async (values: ObjectFormValues) => {
|
||||
const onSubmit = async (
|
||||
values: ObjectFormValues,
|
||||
opts?: { createAnother?: boolean },
|
||||
): Promise<boolean> => {
|
||||
setError(null);
|
||||
|
||||
let id: string;
|
||||
@@ -32,7 +35,7 @@ export function ObjectNewPage() {
|
||||
id = created.id;
|
||||
} catch {
|
||||
setError(t("form.rejected"));
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (Object.keys(values.fields).length > 0) {
|
||||
@@ -40,12 +43,16 @@ export function ObjectNewPage() {
|
||||
await setFields.mutateAsync({ id, fields: values.fields });
|
||||
} catch (e) {
|
||||
const fieldErrorKey = e instanceof FieldRejection ? e.field : undefined;
|
||||
navigate(`/objects/${id}/edit`, { state: { fieldsError: true, fieldErrorKey } });
|
||||
return;
|
||||
const fieldErrorCode = e instanceof FieldRejection ? e.code : undefined;
|
||||
navigate(`/objects/${id}/edit`, { state: { created: true, fieldErrorKey, fieldErrorCode } });
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if (opts?.createAnother) return true;
|
||||
|
||||
navigate(`/objects/${id}`);
|
||||
return true;
|
||||
};
|
||||
|
||||
return (
|
||||
|
||||
Reference in New Issue
Block a user