From 6db96c80d05730a9188937599baba2602f4e2a92 Mon Sep 17 00:00:00 2001 From: Kasper Fabricius Kristensen <45367945+kasperkristensen@users.noreply.github.com> Date: Wed, 5 Feb 2025 13:53:30 +0100 Subject: [PATCH] fix(ui,types): Add Metadata form for collection (#11300) **What** - Adds missing Metadata form for collections - Fixes type of metadata in update payload - Fixes an issue where deleting the last row of a metadata form would prevent adding new ones. Resolves SUP-784 --- .changeset/blue-files-work.md | 6 +++++ .../forms/metadata-form/metadata-form.tsx | 9 +++++++ .../providers/router-provider/route-map.tsx | 5 ++++ .../collection-metadata.tsx | 26 +++++++++++++++++++ .../collections/collection-metadata/index.ts | 1 + .../src/http/collection/admin/payloads.ts | 2 +- 6 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 .changeset/blue-files-work.md create mode 100644 packages/admin/dashboard/src/routes/collections/collection-metadata/collection-metadata.tsx create mode 100644 packages/admin/dashboard/src/routes/collections/collection-metadata/index.ts diff --git a/.changeset/blue-files-work.md b/.changeset/blue-files-work.md new file mode 100644 index 0000000000..0edc577355 --- /dev/null +++ b/.changeset/blue-files-work.md @@ -0,0 +1,6 @@ +--- +"@medusajs/dashboard": patch +"@medusajs/types": patch +--- + +fix(ui,types): Add Metadata form for collection diff --git a/packages/admin/dashboard/src/components/forms/metadata-form/metadata-form.tsx b/packages/admin/dashboard/src/components/forms/metadata-form/metadata-form.tsx index 19bee56d37..0748c989d5 100644 --- a/packages/admin/dashboard/src/components/forms/metadata-form/metadata-form.tsx +++ b/packages/admin/dashboard/src/components/forms/metadata-form/metadata-form.tsx @@ -113,6 +113,15 @@ const InnerForm = ({ function deleteRow(index: number) { remove(index) + + // If the last row is deleted, add a new blank row + if (fields.length === 1) { + insert(0, { + key: "", + value: "", + disabled: false, + }) + } } function insertRow(index: number, position: "above" | "below") { diff --git a/packages/admin/dashboard/src/providers/router-provider/route-map.tsx b/packages/admin/dashboard/src/providers/router-provider/route-map.tsx index 5d8fc1f958..d47846e10c 100644 --- a/packages/admin/dashboard/src/providers/router-provider/route-map.tsx +++ b/packages/admin/dashboard/src/providers/router-provider/route-map.tsx @@ -520,6 +520,11 @@ export const RouteMap: RouteObject[] = [ "../../routes/collections/collection-add-products" ), }, + { + path: "metadata/edit", + lazy: () => + import("../../routes/collections/collection-metadata"), + }, ], }, ], diff --git a/packages/admin/dashboard/src/routes/collections/collection-metadata/collection-metadata.tsx b/packages/admin/dashboard/src/routes/collections/collection-metadata/collection-metadata.tsx new file mode 100644 index 0000000000..05b0605fa7 --- /dev/null +++ b/packages/admin/dashboard/src/routes/collections/collection-metadata/collection-metadata.tsx @@ -0,0 +1,26 @@ +import { useParams } from "react-router-dom" +import { MetadataForm } from "../../../components/forms/metadata-form/metadata-form" +import { useCollection, useUpdateCollection } from "../../../hooks/api" + +export const CollectionMetadata = () => { + const { id } = useParams() + + const { collection, isPending, isError, error } = useCollection(id!) + + const { mutateAsync, isPending: isMutating } = useUpdateCollection( + collection?.id! + ) + + if (isError) { + throw error + } + + return ( + + ) +} diff --git a/packages/admin/dashboard/src/routes/collections/collection-metadata/index.ts b/packages/admin/dashboard/src/routes/collections/collection-metadata/index.ts new file mode 100644 index 0000000000..b7e494fbae --- /dev/null +++ b/packages/admin/dashboard/src/routes/collections/collection-metadata/index.ts @@ -0,0 +1 @@ +export { CollectionMetadata as Component } from "./collection-metadata" diff --git a/packages/core/types/src/http/collection/admin/payloads.ts b/packages/core/types/src/http/collection/admin/payloads.ts index 9f6ffe05d8..510801e685 100644 --- a/packages/core/types/src/http/collection/admin/payloads.ts +++ b/packages/core/types/src/http/collection/admin/payloads.ts @@ -25,7 +25,7 @@ export interface AdminUpdateCollection { /** * Key-value pairs of custom data. */ - metadata?: Record + metadata?: Record | null } export interface AdminUpdateCollectionProducts {