From 3ecbec9685d766fb5e46292fc12b75b69faa13fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Frane=20Poli=C4=87?= <16856471+fPolic@users.noreply.github.com> Date: Fri, 14 Jun 2024 11:18:23 +0200 Subject: [PATCH] feat(dashboard): inventory details variants section (#7705) --- .../variants-section.tsx | 61 +++++++++++++++++++ .../inventory-detail/inventory-detail.tsx | 4 +- .../inventory/inventory-detail/loader.ts | 2 +- .../product-variant-inventory-item.ts | 3 +- 4 files changed, 67 insertions(+), 3 deletions(-) create mode 100644 packages/admin-next/dashboard/src/routes/inventory/inventory-detail/components/inventory-item-variants/variants-section.tsx diff --git a/packages/admin-next/dashboard/src/routes/inventory/inventory-detail/components/inventory-item-variants/variants-section.tsx b/packages/admin-next/dashboard/src/routes/inventory/inventory-detail/components/inventory-item-variants/variants-section.tsx new file mode 100644 index 0000000000..06a0c7bbf5 --- /dev/null +++ b/packages/admin-next/dashboard/src/routes/inventory/inventory-detail/components/inventory-item-variants/variants-section.tsx @@ -0,0 +1,61 @@ +import { Container, Heading, IconButton } from "@medusajs/ui" +import { useTranslation } from "react-i18next" +import { ArrowUpRightOnBox } from "@medusajs/icons" +import { useNavigate } from "react-router-dom" + +import { ProductVariantDTO } from "@medusajs/types" +import { Thumbnail } from "../../../../../components/common/thumbnail" + +type InventoryItemVariantsSectionProps = { + variants: ProductVariantDTO[] +} + +export const InventoryItemVariantsSection = ({ + variants, +}: InventoryItemVariantsSectionProps) => { + const { t } = useTranslation() + const navigate = useNavigate() + + if (!variants?.length) { + return null + } + + return ( + +
+ {t("inventory.associatedVariants")} +
+ +
+ {variants.map((variant) => ( +
+
+
+ +
+
+ + {variant.title} + + + {variant.options.map((o) => o.value).join(" ⋅ ")} + +
+ navigate(`/products/${variant.product.id}`)} // TODO: navigate to variant details when implemented + > + + +
+
+ ))} +
+
+ ) +} diff --git a/packages/admin-next/dashboard/src/routes/inventory/inventory-detail/inventory-detail.tsx b/packages/admin-next/dashboard/src/routes/inventory/inventory-detail/inventory-detail.tsx index 5ccd4be21a..8929e48aaa 100644 --- a/packages/admin-next/dashboard/src/routes/inventory/inventory-detail/inventory-detail.tsx +++ b/packages/admin-next/dashboard/src/routes/inventory/inventory-detail/inventory-detail.tsx @@ -6,6 +6,7 @@ import { InventoryItemLocationLevelsSection } from "./components/inventory-item- import { InventoryItemReservationsSection } from "./components/inventory-item-reservations" import { JsonViewSection } from "../../../components/common/json-view-section" import { useInventoryItem } from "../../../hooks/api/inventory" +import { InventoryItemVariantsSection } from "./components/inventory-item-variants/variants-section" import { inventoryItemLoader } from "./loader" export const InventoryDetail = () => { @@ -23,7 +24,7 @@ export const InventoryDetail = () => { } = useInventoryItem( id!, { - fields: "*variants", + fields: "*variants,*variants.product,*variants.options", }, { initialData, @@ -54,6 +55,7 @@ export const InventoryDetail = () => {
+
diff --git a/packages/admin-next/dashboard/src/routes/inventory/inventory-detail/loader.ts b/packages/admin-next/dashboard/src/routes/inventory/inventory-detail/loader.ts index ebb6bd67cf..d51f996d2e 100644 --- a/packages/admin-next/dashboard/src/routes/inventory/inventory-detail/loader.ts +++ b/packages/admin-next/dashboard/src/routes/inventory/inventory-detail/loader.ts @@ -9,7 +9,7 @@ const inventoryDetailQuery = (id: string) => ({ queryKey: inventoryItemsQueryKeys.detail(id), queryFn: async () => sdk.admin.inventoryItem.retrieve(id, { - fields: "*variant", + fields: "*variants,*variants.product,*variants.options", }), }) diff --git a/packages/modules/link-modules/src/definitions/product-variant-inventory-item.ts b/packages/modules/link-modules/src/definitions/product-variant-inventory-item.ts index dfc42f0c4a..a4687d493c 100644 --- a/packages/modules/link-modules/src/definitions/product-variant-inventory-item.ts +++ b/packages/modules/link-modules/src/definitions/product-variant-inventory-item.ts @@ -62,13 +62,14 @@ export const ProductVariantInventoryItem: ModuleJoinerConfig = { { serviceName: Modules.INVENTORY, fieldAlias: { - variant: "variant_link.variant", + variants: "variant_link.variant", }, relationship: { serviceName: LINKS.ProductVariantInventoryItem, primaryKey: "inventory_item_id", foreignKey: "id", alias: "variant_link", + isList: true, }, }, ],