codegouvfr / react-dsfr

🇫🇷 The Frech Government Design system React toolkit
https://react-dsfr.codegouv.studio
MIT License
403 stars 49 forks source link

Composant Modal - Typage retour fonction createModal #279

Closed benoit-tb closed 1 month ago

benoit-tb commented 1 month ago

Bonjour,

Il pourrait être intéressant de typer le retour de la fonction createModal, pour que nous puissions réutiliser ce type dans nos applications.

Je m'explique.

Dans certains cas, lorsque nous créons notre modale :

const validationIncompleteModal = createModal({
  id: 'ma-modale',
});

et que, nous passons cette modale dans un composant enfant :

<MonComposantEnfant modal={validationIncompleteModal} />

On est obligé de typer dans nos projets le retour de createModal.

export default function MonComposantEnfant({modal} : {modal: MonTypeModal})

Cela donnerait donc quelque chose comme suit au niveau du projet react-dsfr :

export type Modal = {
    buttonProps: {
        /** Only for analytics, feel free to overwrite */
        id: string;
        "aria-controls": string;
        "data-fr-opened": boolean;
    };
    Component: (props: ModalProps) => JSX.Element;
    close: () => void;
    open: () => void;
    isOpenedByDefault: boolean;
    id: string;
};

et

export function createModal(params: { isOpenedByDefault: boolean; id: string }): Modal {

Je vous laisse me faire et retour, et n'hésitez pas à revenir vers moi au besoin.

Merci et bonne journée !

NB : j'ai voulu faire une PR sur le projet, mais je ne dois pas être autorisé

ddecrulle commented 1 month ago

Le type dont tu as besoin c'est : type Modal = ReturnType<typeof createModal> ?

benoit-tb commented 1 month ago

En effet, ça fait le job !

Merci Dylan.