PluginManifest
Since v1.1.0
Static metadata about a plugin’s capabilities and requirements. Declared as a static property on plugin classes.
Example
Section titled “Example”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';}Properties
Section titled “Properties”| Property | Type | Description |
|---|---|---|
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(). |
modifiesRowStructure? | boolean | Whether this plugin’s processRows hook injects or removes rows (group headers, tree nodes, pivot aggregates, placeholders, etc.). |
Property Details
Section titled “Property Details”incompatibleWith
Section titled “incompatibleWith”incompatibleWith: [ { name: 'tree', reason: 'Both transform the entire row model in different ways' },],queries
Section titled “queries”queries: [ { type: 'canMoveColumn', description: 'Check if a column can be moved' },],events
Section titled “events”events: [ { type: 'filter-change', description: 'Emitted when filter criteria change' },],modifiesRowStructure
Section titled “modifiesRowStructure”Whether this plugin’s processRows hook injects or removes rows
(group headers, tree nodes, pivot aggregates, placeholders, etc.).
When true, the core sorting module delegates to the render scheduler
instead of sorting _rows in-place, because _rows may contain
plugin-generated marker objects that would be corrupted by a direct sort.
Plugins that only filter or reorder existing rows (e.g. Filtering,
MultiSort) should leave this unset or set it to false.