Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ajout du fil d'ariane aux composants design system #3247

Merged
merged 5 commits into from
Jul 11, 2024

Conversation

mariheck
Copy link
Contributor

@mariheck mariheck commented Jul 2, 2024

No description provided.

@@ -11,7 +11,7 @@ const buttonSizeToIconSize: Record<ButtonSize, IconSize> = {

type BreadcrumbsProps = {
/** Liste des boutons à afficher dans le fil d'ariane */
buttons: {
buttons?: {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pourquoi avoir rendu boutons optionnels ?
S'il n'y a pas d'élément, autant de ne pas afficher le composant

@@ -37,13 +45,15 @@ export const Breadcrumbs = ({buttons, size, onClick}: BreadcrumbsProps) => {
className="flex items-center shrink-0 gap-x-1"
>
<Button
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pourquoi ne pas avoir garder l'ancienne structure link.path ? <Link /> : <div/> ?

Ca permet de ne pas avoir à styliser le Button pour fake un aspect disabled ou de disabled un bouton tout court.

D'ailleurs ça ne devrait pas être des Button mais des Link, car un bouton avec href, cela créé un <a> qui lorsque l'user click dessus, recharge toute la page au lieu de se servir du router de l'app. J'ai noté ça sur les compos avec des boutons et href de setup dessus, faut absolument qu'on trouve une solution.

Sur le nommage je mettrais links ou items pour etre plus générique à la place de buttons .

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je ne peux pas utiliser le composant <Link/>, car selon le projet il sera importé soit de react-router-dom, soit de next/link. D'ailleurs la balise <Link/> crée aussi une balise <a/>. Et je ne pense pas qu'il faille s'appuyer sur react-router-dom dans les composants DS alors qu'on prépare la migration vers next.

Pour les boutons avec href on pourrait peut être régler le problème avec router.push ou history.push depuis le onClick en attendant de pouvoir l'intégrer directement au composant après la migration de l'app (je n'étais pas encore tombée sur ce problème).

Sinon j'ai utilisé le composant Button partout pour réutiliser ce qui est déjà fait en terme de fonctionnalité avec href et onClick, mais aussi pour utiliser les mises en formes déjà faites (padding, taille de texte et espacements en fonction de la taille de bouton choisie). Si j'utilise une <div/> je dois refaire toute la mise en forme, c'est plus simple de mettre un bouton en disabled.

Ok pour le nommage, je remplace par items du coup.

Copy link
Contributor

@cparthur cparthur Jul 9, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je sais c'est relou pour les balises <Link /> :/

Oui je pense que c'est une bonne option le onClick avec le fonction de framework donnée par l'app qui l'utilise.
Tu fais un test avec ce compo?

okok pour la <div /> 👍

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

J'ai fait la mise à jour, ça a l'air de bien marcher 🙂

buttons: {
label: string;
href?: string;
onClick?: () => void;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Il me semble qu'un balise <a/> n'a pas de props onClick et je ne vois pas pourquoi l'on voudrait afficher un bouton à la place d'un lien dans un fil d'ariane.

À moins que ce soit parce qu'il existait un compo FilArianeButtons, mais il est utilisé dans un dossier old alors je ne voudrais pas que l'on développe des choses pour être retro-compatibles avec du code que l'on va supprimer.

À la limite tu peux garder les vieux fil d'ariane dans le dossier charts/old pour que l'autre continue de marcher.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Le composant <BarChartCardWithSubrows/> ne devrait pas être dans charts/old selon moi. Même si on revoit la carte pour se caler aux autres graphiques, on aura besoin du fil d'ariane pour naviguer entre les différents axes et actualiser les données du graphes. Et pour le moment ce graphique est utilisé à deux endroits de l'app sans remplacement prévu à moyen terme à ma connaissance

Pour le onClick, je l'ai mis au niveau de chaque item / button pour des utilisations comme dans mon commentaire au dessus, mais aussi au niveau du composant avec renvoi de l'index sélectionné pour des utilisations comme dans le graphe où un href ne répond pas au besoin.

Copy link
Contributor

@cparthur cparthur Jul 9, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

À mon sens il doit être dans old car il utilise l'ancien composant ChartCard.

Okok pour les onClick 👍

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ça marche, mais dans ce cas là il faut garder en tête que ce n'est pas un composant amené à disparaitre, mais à refactoriser...

buttons: {
label: string;
href?: string;
onClick?: () => void;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Il me semble qu'un balise <a/> n'a pas de props onClick et je ne vois pas pourquoi l'on voudrait afficher un bouton à la place d'un lien dans un fil d'ariane.

À moins que ce soit parce qu'il existait un compo FilArianeButtons, mais il est utilisé dans un dossier old alors je ne voudrais pas que l'on développe des choses pour être retro-compatibles avec du code que l'on va supprimer.

À la limite tu peux garder les vieux fil d'ariane dans le dossier charts/old pour que l'autre continue de marcher.

onClick?: () => void;
}[];
/** Click détecté sur un des boutons, avec envoi de son index */
onClick?: (index: number) => void;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je ne comprends pas trop pourquoi mettre un onClick à ce niveau là.
Je vois que tu l'utilises dans une story, si c'est juste pour ce cas d'usage alors il ne faut pas polluer les composants du DS avec des propriétés de test

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ce n'est pas une propriété de test, il est utilisé de cette manière dans le composant <BarChartCardWithSubrows/>, et permet de connaitre l'item sélectionné depuis la composant parent dans le cas où un href ne répond pas au besoin.

@mariheck mariheck merged commit f494a0d into upcoming_develop Jul 11, 2024
14 of 21 checks passed
@mariheck mariheck deleted the ds-breadcrumbs branch July 11, 2024 10:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants