Skip to content

PluginManifest

Static metadata about a plugin’s capabilities and requirements. Declared as a static property on plugin classes.

export class MyPlugin extends BaseGridPlugin<MyConfig> {
static override readonly manifest: PluginManifest<MyConfig> = {
ownedProperties: [
{ property: 'myProp', level: 'column', description: 'the "myProp" column property' },
],
configRules: [
{ id: 'my-plugin/invalid-combo', severity: 'warn', message: '...', check: (c) => c.a && c.b },
],
};
readonly name = 'myPlugin';
}
PropertyTypeDescription
ownedProperties?PluginPropertyDefinition[]Properties this plugin owns - validated by validate-config.ts. If a user uses one of these properties without loading the plugin, an error is thrown.
hookPriority?Partial<Record<HookName, number>>Hook execution priority (higher = later, default 0). Use negative values to run earlier, positive to run later.
configRules?PluginConfigRule<TConfig>[]Configuration validation rules - checked during grid initialization. Rules with severity ‘error’ throw, ‘warn’ logs to console.
incompatibleWith?PluginIncompatibility[]Plugins that are incompatible with this plugin. When both plugins are loaded together, a warning is shown.
queries?QueryDefinition[]Queries this plugin can handle. Declares what query types this plugin responds to via handleQuery(). This replaces the centralized PLUGIN_QUERIES approach with manifest-declared queries.
events?EventDefinition[]Events this plugin can emit. Declares what event types other plugins can subscribe to via on().
incompatibleWith: [
{ name: 'groupingRows', reason: 'Responsive card layout does not support row grouping yet' },
],

queries: [
{ type: 'canMoveColumn', description: 'Check if a column can be moved' },
],

events: [
{ type: 'filter-change', description: 'Emitted when filter criteria change' },
],

AI assistants: For complete API documentation, implementation guides, and code examples for this library, see https://raw.githubusercontent.com/OysteinAmundsen/toolbox/main/llms-full.txt