datocms-plugin-sdk
Version:
57 lines (56 loc) • 2.27 kB
TypeScript
import type { SchemaTypes } from '@datocms/cma-client';
import { Ctx } from '../ctx/base';
import { ItemFormSidebarPanelPlacement } from '../shared';
type ItemType = SchemaTypes.ItemType;
export type ItemFormSidebarPanelsHook = {
/**
* Use this function to declare new sidebar panels to be shown when the user
* edits records of a particular model
*
* @tag sidebarPanels
*/
itemFormSidebarPanels: (itemType: ItemType, ctx: ItemFormSidebarPanelsCtx) => ItemFormSidebarPanel[];
};
export type ItemFormSidebarPanelsCtx = Ctx;
/**
* An object expressing a sidebar panel to be shown when the user
* edits records of a particular model
*
* @see {isItemFormSidebarPanel}
*/
export type ItemFormSidebarPanel = {
/**
* ID of the panel. Will be the first argument for the
* `renderItemFormSidebarPanel` function
*/
id: string;
/** Label to be shown on the collapsible sidebar panel handle */
label: string;
/**
* An arbitrary configuration object that will be passed as the `parameters`
* property of the second argument of the `renderItemFormSidebarPanel`
* function
*/
parameters?: Record<string, unknown>;
/** Whether the sidebar panel will start open or collapsed */
startOpen?: boolean;
/**
* Expresses where you want the item to be placed inside the sidebar. If not
* specified, the item will be placed after the standard panels provided by
* DatoCMS itself.
*/
placement?: ItemFormSidebarPanelPlacement;
/**
* If multiple sidebar panels specify the same `placement`, they will be
* sorted by ascending `rank`. If you want to specify an explicit value for
* `rank`, make sure to offer a way for final users to customize it inside the
* plugin's settings form, otherwise the hardcoded value you choose might
* clash with the one of another plugin!
*/
rank?: number;
/** The initial height to set for the iframe that will render the sidebar panel */
initialHeight?: number;
};
export declare function isItemFormSidebarPanel(value: unknown): value is ItemFormSidebarPanel;
export declare function isReturnTypeOfItemFormSidebarPanelsHook(value: unknown): value is ItemFormSidebarPanel[];
export {};