diff --git a/visual_workflow_builder/frontend_v4/src/components/ToolPalette.tsx b/visual_workflow_builder/frontend_v4/src/components/ToolPalette.tsx index b19cc1187..a1dc4a3f9 100644 --- a/visual_workflow_builder/frontend_v4/src/components/ToolPalette.tsx +++ b/visual_workflow_builder/frontend_v4/src/components/ToolPalette.tsx @@ -53,6 +53,13 @@ function mapCatalogAction(action: CatalogAction): ActionDefinition | null { }; } +function mergeCatalogActions(catalogActions: ActionDefinition[]): ActionDefinition[] { + const byType = new Map(); + ACTIONS.forEach(action => byType.set(action.type, action)); + catalogActions.forEach(action => byType.set(action.type, action)); + return ACTIONS.map(action => byType.get(action.type) || action); +} + export default function ToolPalette() { // État des catégories dépliées (toutes fermées par défaut sauf 'mouse') const [expandedCategories, setExpandedCategories] = useState(['mouse']); @@ -73,7 +80,7 @@ export default function ToolPalette() { .map((action: CatalogAction) => mapCatalogAction(action)) .filter((action: ActionDefinition | null): action is ActionDefinition => action !== null); if (!cancelled && mapped.length > 0) { - setCatalogActions(mapped); + setCatalogActions(mergeCatalogActions(mapped)); } } catch (error) { console.warn('Catalogue VWB indisponible, palette statique utilisée:', error);