Back to Vendure

Page Blocks

docs/docs/reference/dashboard/extensions-api/page-blocks.mdx

3.7.23.6 KB
Original Source

DashboardPageBlockDefinition

<GenerationInfo sourceFile="packages/dashboard/src/lib/framework/extension-api/types/layout.ts" sourceLine="128" packageName="@vendure/dashboard" since="3.3.0" />

This allows you to insert a custom component into a specific location on any page in the dashboard.

ts
interface DashboardPageBlockDefinition {
    id: string;
    title?: React.ReactNode;
    location: PageBlockLocation;
    component?: React.FunctionComponent<{ context: PageContextValue }>;
    shouldRender?: (context: PageContextValue) => boolean;
    requiresPermission?: string | string[];
}
<div className="members-wrapper">

id

<MemberInfo kind="property" type={string} />

An ID for the page block. Should be unique at least to the page in which it appears.

title

<MemberInfo kind="property" type={React.ReactNode} />

An optional title for the page block

location

<MemberInfo kind="property" type={<a href='/reference/dashboard/extensions-api/page-blocks#pageblocklocation'>PageBlockLocation</a>} />

The location of the page block. It specifies the pageId, and then the relative location compared to another existing block.

component

<MemberInfo kind="property" type={React.FunctionComponent<{ context: PageContextValue }>} />

The component to be rendered inside the page block.

shouldRender

<MemberInfo kind="property" type={(context: PageContextValue) => boolean} since="3.5.0" />

Control whether to render the page block depending on your custom logic.

This can also be used to disable any built-in blocks you do not need to display.

If you need to query aspects about the current context not immediately provided in the PageContextValue, you can also use hooks such as useChannel in this function.

requiresPermission

<MemberInfo kind="property" type={string | string[]} />

If provided, the logged-in user must have one or more of the specified permissions in order for the block to render.

For more advanced control over rendering, use the shouldRender function.

</div> ## PageBlockPosition <GenerationInfo sourceFile="packages/dashboard/src/lib/framework/extension-api/types/layout.ts" sourceLine="100" packageName="@vendure/dashboard" since="3.3.0" />

The relative position of a PageBlock. This is determined by finding an existing block, and then specifying whether your custom block should come before, after, or completely replace that block.

ts
type PageBlockPosition = {
    blockId: string;
    order: 'before' | 'after' | 'replace'
}
<div className="members-wrapper">

blockId

<MemberInfo kind="property" type={string} />

order

<MemberInfo kind="property" type={'before' | 'after' | 'replace'} />

</div> ## PageBlockLocation <GenerationInfo sourceFile="packages/dashboard/src/lib/framework/extension-api/types/layout.ts" sourceLine="112" packageName="@vendure/dashboard" since="3.3.0" />

The location of a page block in the dashboard. The location can be found by turning on "developer mode" in the dashboard user menu (bottom left corner) and then clicking the < /> icon when hovering over a page block.

ts
type PageBlockLocation = {
    pageId: string;
    position: PageBlockPosition;
    column: 'main' | 'side' | 'full';
}
<div className="members-wrapper">

pageId

<MemberInfo kind="property" type={string} />

position

<MemberInfo kind="property" type={<a href='/reference/dashboard/extensions-api/page-blocks#pageblockposition'>PageBlockPosition</a>} />

column

<MemberInfo kind="property" type={'main' | 'side' | 'full'} />

</div>