import {
connect,
RenderItemFormSidebarPanelCtx,
ItemType,
InitPropertiesAndMethods,
} from "datocms-plugin-sdk";
import "datocms-react-ui/styles.css";
import ConfigScreen from "./entrypoints/ConfigScreen";
import { render } from "./utils/render";
import SidebarButtonPanel from "./entrypoints/SidebarButtonPanel";
import { getPanelLocations } from "./utils/getPanelLocations";
connect({
// plugin setup form
renderConfigScreen(ctx) {
return render();
},
// define sidebar panel attributes
itemFormSidebarPanels(itemType: ItemType, ctx: InitPropertiesAndMethods) {
const pluginParams = ctx.plugin.attributes.parameters.values as Record<
string,
string
>;
const locationsStr = pluginParams.panelLocation;
const locationsArr = getPanelLocations(locationsStr as string);
switch (true) {
case locationsArr.includes("global"):
case locationsArr.includes(itemType.attributes.api_key):
return [
{
id: "sidebar-button",
label: pluginParams.sectionTitle,
startOpen: true,
placement: ["before", "links"],
},
];
default:
return [];
}
},
// display sidebar panel
renderItemFormSidebarPanel(
_sidebarPanelId,
ctx: RenderItemFormSidebarPanelCtx
) {
render();
},
});