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,
},
},
],