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 {