feat(dashboard): Setup V2 collections (#6935)

This commit is contained in:
Kasper Fabricius Kristensen authored and GitHub committed 2024-04-04 14:06:44 +02:00
1 parent 06b2f0a8dc
commit 6c6e5307cf
28 files changed
+58 -50

No files matched your search

@@ -1,5 +1,4 @@
import type { import type {
AdminCollectionsRes,
AdminCustomerGroupsRes, AdminCustomerGroupsRes,
AdminCustomersRes, AdminCustomersRes,
AdminDiscountsRes, AdminDiscountsRes,
@@ -264,47 +263,6 @@ export const v1Routes: RouteObject[] = [
}, },
], ],
}, },
{
path: "/collections",
handle: {
crumb: () => "Collections",
},
children: [
{
path: "",
lazy: () => import("../../routes/collections/collection-list"),
children: [
{
path: "create",
lazy: () =>
import("../../routes/collections/collection-create"),
},
],
},
{
path: ":id",
handle: {
crumb: (data: AdminCollectionsRes) => data.collection.title,
},
lazy: () =>
import("../../routes/collections/collection-detail"),
children: [
{
path: "edit",
lazy: () =>
import("../../routes/collections/collection-edit"),
},
{
path: "add-products",
lazy: () =>
import(
"../../routes/collections/collection-add-products"
),
},
],
},
],
},
{ {
path: "/inventory", path: "/inventory",
handle: { handle: {
@@ -5,6 +5,7 @@ import { SettingsLayout } from "../../components/layout/settings-layout"
import { Outlet } from "react-router-dom" import { Outlet } from "react-router-dom"
import { Spinner } from "@medusajs/icons" import { Spinner } from "@medusajs/icons"
import { AdminCollectionsRes } from "@medusajs/medusa"
import { SalesChannelDTO, UserDTO } from "@medusajs/types" import { SalesChannelDTO, UserDTO } from "@medusajs/types"
import { ErrorBoundary } from "../../components/error/error-boundary" import { ErrorBoundary } from "../../components/error/error-boundary"
import { useV2Session } from "../../lib/api-v2" import { useV2Session } from "../../lib/api-v2"
@@ -90,6 +91,48 @@ export const v2Routes: RouteObject[] = [
}, },
], ],
}, },
{
path: "/collections",
handle: {
crumb: () => "Collections",
},
children: [
{
path: "",
lazy: () =>
import("../../v2-routes/collections/collection-list"),
children: [
{
path: "create",
lazy: () =>
import("../../v2-routes/collections/collection-create"),
},
],
},
{
path: ":id",
lazy: () =>
import("../../v2-routes/collections/collection-detail"),
handle: {
crumb: (data: AdminCollectionsRes) => data.collection.title,
},
children: [
{
path: "edit",
lazy: () =>
import("../../v2-routes/collections/collection-edit"),
},
{
path: "products",
lazy: () =>
import(
"../../v2-routes/collections/collection-add-products"
),
},
],
},
],
},
], ],
}, },
], ],
@@ -1,6 +1,6 @@
import { PencilSquare, Trash } from "@medusajs/icons" import { PencilSquare, Plus, Trash } from "@medusajs/icons"
import type { Product, ProductCollection } from "@medusajs/medusa" import type { Product, ProductCollection } from "@medusajs/medusa"
import { Button, Checkbox, Container, Heading, usePrompt } from "@medusajs/ui" import { Checkbox, Container, Heading, usePrompt } from "@medusajs/ui"
import { createColumnHelper } from "@tanstack/react-table" import { createColumnHelper } from "@tanstack/react-table"
import { import {
adminProductKeys, adminProductKeys,
@@ -9,7 +9,6 @@ import {
} from "medusa-react" } from "medusa-react"
import { useMemo } from "react" import { useMemo } from "react"
import { useTranslation } from "react-i18next" import { useTranslation } from "react-i18next"
import { Link } from "react-router-dom"
import { ActionMenu } from "../../../../../components/common/action-menu" import { ActionMenu } from "../../../../../components/common/action-menu"
import { DataTable } from "../../../../../components/table/data-table" import { DataTable } from "../../../../../components/table/data-table"
import { useProductTableColumns } from "../../../../../hooks/table/columns/use-product-table-columns" import { useProductTableColumns } from "../../../../../hooks/table/columns/use-product-table-columns"
@@ -96,11 +95,19 @@ export const CollectionProductSection = ({
<Container className="divide-y p-0"> <Container className="divide-y p-0">
<div className="flex items-center justify-between px-6 py-4"> <div className="flex items-center justify-between px-6 py-4">
<Heading level="h2">{t("products.domain")}</Heading> <Heading level="h2">{t("products.domain")}</Heading>
<Link to={`/collections/${collection.id}/add-products`}> <ActionMenu
<Button size="small" variant="secondary"> groups={[
{t("general.add")} {
</Button> actions: [
</Link> {
icon: <Plus />,
label: t("actions.add"),
to: "products",
},
],
},
]}
/>
</div> </div>
<DataTable <DataTable
table={table} table={table}