fix(dashboard): Add Breadcrumb components (#10079)

**What**
- Adds Breadcrumb component to all routes that needs breadcrumbs.
- The Breadcrumb components use a combination of loader data and useQuery to ensure that the displayed value is kept up to date if the underlying data is changed via a mutation.
- Also fixes a couple of places where the breadcrumb was not setup correctly.

Resolves CMRC-688
This commit is contained in:
Kasper Fabricius Kristensen
2024-11-15 14:13:03 +01:00
committed by GitHub
parent 8ed3d87c23
commit 493d242c12
86 changed files with 1123 additions and 344 deletions

View File

@@ -0,0 +1,24 @@
import { HttpTypes } from "@medusajs/types"
import { UIMatch } from "react-router-dom"
import { useUser } from "../../../hooks/api/users"
type UserDetailBreadcrumbProps = UIMatch<HttpTypes.AdminUserResponse>
export const UserDetailBreadcrumb = (props: UserDetailBreadcrumbProps) => {
const { id } = props.params || {}
const { user } = useUser(id!, undefined, {
initialData: props.data,
enabled: Boolean(id),
})
if (!user) {
return null
}
const name = [user.first_name, user.last_name].filter(Boolean).join(" ")
const display = name || user.email
return <span>{display}</span>
}

View File

@@ -1,2 +1,3 @@
export { UserDetailBreadcrumb as Breadcrumb } from "./breadcrumb"
export { userLoader as loader } from "./loader"
export { UserDetail as Component } from "./user-detail"

View File

@@ -1,6 +1,5 @@
import { LoaderFunctionArgs } from "react-router-dom"
import { HttpTypes } from "@medusajs/types"
import { productsQueryKeys } from "../../../hooks/api/products"
import { sdk } from "../../../lib/client"
import { queryClient } from "../../../lib/query-client"
@@ -14,8 +13,5 @@ export const userLoader = async ({ params }: LoaderFunctionArgs) => {
const id = params.id
const query = userDetailQuery(id!)
return (
queryClient.getQueryData<HttpTypes.AdminUserResponse>(query.queryKey) ??
(await queryClient.fetchQuery(query))
)
return queryClient.ensureQueryData(query)
}