[makeFormActions] Gestion de plusieurs actions save
Closed this issue · 0 comments
Besoin
Sur mon application, les formulaires sont toujours en éditions, et les boutons d'actions sont réunis dans une button bar fixée en bas de l'écran.
Sur un formulaire, j'ai plusieurs actions de "save" : une qui sauvegarde simplement le formulaire, et d'autres qui sauvegardent + une action de workflow métier (validation / dévalidation/ ...).
Constat
Le makeFormActions
ne supporte qu'une seule action de save.
Cela m'oblige à appeler makeFormActions plusieurs fois, une fois par service de "save".
actions = makeFormActionsMec(this.entity, {
getLoadParams: () => grosSiteViewStore.withView(({id}) => id && [+id]),
load: getMontageInfo,
save: saveMontageInfo
});
topActions = makeFormActionsMec(
this.entity,
save: toperMontage
});
Je dois alors agréger à la main les loading
de chaque action pour piloter l'anti-rejeu sur mes boutons.
/** Obtient les props d'un panel / boutons */
@computed
get panelProps(): GlobalPanelProps {
return {loading: this.actions.isLoading || this.topActions.isLoading};
}
Proposition
Le makeFormActions
pourrait prendre en entrée un nombre arbitraire de save.
Avec du TypeScript barbare, on pourrait produire un objet d'actions avec une propriété par save, ayant le même nom, mais wrappé comme un save normal (avec gestion du loading).