@gamesberry/karmyc-core
Version:
A flexible and powerful layout management system for React applications
94 lines (93 loc) • 2.68 kB
TypeScript
import { Action, IActionPlugin, IActionRegistry, IActionRegistryOptions, IActionValidationResult, TActionValidator } from '../types/actions';
/**
* Métadonnées d'une action.
*/
export interface ActionMetadata {
menuType?: string;
label?: string;
icon?: string;
isEnabled?: () => boolean;
isVisible?: () => boolean;
order?: number;
actionType?: string;
}
/**
* Handler d'action.
*/
export interface ActionHandler {
(params: any): void;
}
/**
* Action Registry
* Gère l'enregistrement et l'exécution des actions et plugins
*/
declare class ActionRegistry implements IActionRegistry {
private plugins;
private validators;
private actionHandlers;
private menuActionsByType;
private options;
private actionTypes;
constructor(options?: IActionRegistryOptions);
/**
* Enregistre un plugin d'action
*/
registerPlugin(plugin: IActionPlugin): void;
/**
* Désenregistre un plugin d'action
*/
unregisterPlugin(id: string): void;
/**
* Enregistre un validateur pour un type d'action
*/
registerValidator(actionType: string, validator: TActionValidator): void;
/**
* Désenregistre tous les validateurs pour un type d'action
*/
unregisterValidators(actionType: string): void;
/**
* Enregistre un gestionnaire d'action avec métadonnées optionnelles
*/
registerActionHandler(actionId: string, handler: ActionHandler, metadata?: ActionMetadata): void;
/**
* Désenregistre un gestionnaire d'action
*/
unregisterActionHandler(actionId: string): void;
/**
* Valide une action
*/
validateAction(action: Action): IActionValidationResult;
/**
* Gère une action en l'envoyant aux plugins pertinents
*/
handleAction(action: Action): void;
/**
* Exécute une action spécifique
*/
executeAction(actionId: string, params: any): boolean;
/**
* Récupère les actions disponibles pour un type de menu
*/
getMenuActions(menuType: string): Array<{
id: string;
handler: ActionHandler;
} & ActionMetadata>;
/**
* Enregistre un nouveau type d'action
*/
registerActionType(type: string): void;
/**
* Récupère tous les types d'actions enregistrés
*/
getActionTypes(): string[];
/**
* Vérifie si un type d'action est enregistré
*/
hasActionType(type: string): boolean;
/**
* Génère la clé de traduction de la description d'une action
*/
getActionDescription(type: string): string;
}
export declare const actionRegistry: ActionRegistry;
export { ActionRegistry };