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

feat(Slider): add new slider component #893

Merged
merged 14 commits into from
Oct 29, 2024
Merged

feat(Slider): add new slider component #893

merged 14 commits into from
Oct 29, 2024

Conversation

savutsang
Copy link
Contributor

@savutsang savutsang commented Jun 3, 2024

DS-281

Description

  • We use MUI/base as the base of the Slider.
  • The input(s) are not part of the component.
  • We had to use "::before" to create the thumb because of the hover affect (bigger size), if we resized or scale the element directly, it would also impact the Tooltip.
  • It use a custom Tooltip in CSS because when we used our Tooltip component it was lagging, and not efficient.

@savutsang savutsang requested a review from a team as a code owner June 3, 2024 18:43
Copy link

github-actions bot commented Jun 3, 2024

Storybook for this build: https://ds.equisoft.io/pr-893/

Copy link

github-actions bot commented Jun 3, 2024

Webapp for this build: https://ds.equisoft.io/pr-893/webapp/

Copy link
Contributor

@LarryMatte LarryMatte left a comment

Choose a reason for hiding this comment

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

  • Il manquerait le tooltip lorsque l'utilisateur interagit avec le composant en utilisant les touches (flèches) du clavier. Présentement le tooltip est seulement affiché lorsqu'un user utilise la souris. MUI semble avoir la feature.

  • Présentement, il n'y a pas de label associé à l'input et ça vient créer une failure au niveau de l'a11y. La valeur de l'attribut for du label pointe vers l'id du <span> qui englobe le slider au complet. Je ne sais pas à qu'elle point nous avons le contrôle là dessus, mais il faudrait qu'il soit associé à l'id de l'input type="range". Sinon, en regardant ce que MUI ont, ils semblent avoir un aria-label sur les thumbs. Ça pourrait également venir fixer le problème.

Sinon un petit commentaire en lien avec une couleur.

packages/react/src/components/slider/slider.tsx Outdated Show resolved Hide resolved
Copy link
Contributor

@meriouma meriouma left a comment

Choose a reason for hiding this comment

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

Cool POC avec mui. LGTM pour le code. Je laisse Larry et Marc regarder le reste.

packages/react/src/components/slider/slider.tsx Outdated Show resolved Hide resolved
Copy link

@maboilard maboilard left a comment

Choose a reason for hiding this comment

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

Quelques petits commentaires:

  • Le font-size et le line-height du label et des numéros sont trop grands
  • La couleur des numéros n'est pas la bonne. Le token devrait référer sur le alias token "color-content-subtle"
  • La couleur de border du Slider-thumb n'est pas la même que sur les maquettes Figma

@savutsang savutsang changed the title feat(slider): add new slider component feat(Slider): add new slider component Jun 20, 2024
@savutsang
Copy link
Contributor Author

  • Il manquerait le tooltip lorsque l'utilisateur interagit avec le composant en utilisant les touches (flèches) du clavier. Présentement le tooltip est seulement affiché lorsqu'un user utilise la souris. MUI semble avoir la feature.

Done

  • Présentement, il n'y a pas de label associé à l'input et ça vient créer une failure au niveau de l'a11y. La valeur de l'attribut for du label pointe vers l'id du <span> qui englobe le slider au complet. Je ne sais pas à qu'elle point nous avons le contrôle là dessus, mais il faudrait qu'il soit associé à l'id de l'input type="range". Sinon, en regardant ce que MUI ont, ils semblent avoir un aria-label sur les thumbs. Ça pourrait également venir fixer le problème.

Done, le input a maintenant le meme id que le label for.

@savutsang
Copy link
Contributor Author

savutsang commented Jul 18, 2024

  • Le font-size et le line-height du label et des numéros sont trop grands

Fixed

  • La couleur des numéros n'est pas la bonne. Le token devrait référer sur le alias token "color-content-subtle"

Done, j'ai ajoute un nouveau component token pour ca slider-rail-label-text-color

  • La couleur de border du Slider-thumb n'est pas la même que sur les maquettes Figma

Done

maboilard
maboilard previously approved these changes Jul 18, 2024
Copy link

@maboilard maboilard left a comment

Choose a reason for hiding this comment

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

LGTM!

Copy link
Contributor

@LarryMatte LarryMatte left a comment

Choose a reason for hiding this comment

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

Dans la variant Range, les deux input ont le même id, il faudrait qu'il soit différent.
Screenshot 2024-07-18 at 9 59 51 AM

@savutsang
Copy link
Contributor Author

savutsang commented Jul 18, 2024

Dans la variant Range, les deux input ont le même id, il faudrait qu'il soit différent.

Ah bien vu. Mais ca serait quoi la resolution pour l'accessibilite dans ce cas? Je pourrais pt utiliser aria-label comme cette exemple pour ce cas ci, sauf qu'il faudrait que le user nous passe les 2 labels.

@LarryMatte
Copy link
Contributor

LarryMatte commented Jul 18, 2024

Dans la variant Range, les deux input ont le même id, il faudrait qu'il soit différent.

Ah bien vu. Mais ca serait quoi la resolution pour l'accessibilite dans ce cas? Si je fais comme cette exemple, je pourrais utiliser aria-label dans ce cas, mais faudrait le user me passe les 2 different labels https://www.w3.org/WAI/ARIA/apg/patterns/slider-multithumb/examples/slider-multithumb/

Tu pourrais p-e avoir un aria-label sur chacun des inputs, utiliser le label associé au composant et lui ajouter le mot "range".

<label>Patate</label>
...
<input aria-label="Patate range" />
<input aria-label="Patate range" />

C'est ce que semble faire MUI
Screenshot 2024-07-18 at 11 40 05 AM
Screenshot 2024-07-18 at 11 47 12 AM

Si nous voulons y aller avec un truc similaire à ce que tu as partagé. Nous pourrions ajouter un min et max au aria-label et ensuite ajouter le label.

<label>Patate</label>
...
<input aria-label="Minimum Patate" />
<input aria-label="Maximum Patate" />

Mais je crois que c'est p-e trop spécifique et p-e que dans certain cas, ça ne fonctionnerait p-e pas aussi bien tout dépendant du label associé.

packages/react/src/components/slider/slider.tsx Outdated Show resolved Hide resolved
packages/react/src/components/slider/slider.tsx Outdated Show resolved Hide resolved
packages/react/src/components/slider/slider.tsx Outdated Show resolved Hide resolved
| 'color-background-indicator-selected'
| 'color-background-indicator-active'
| 'color-border-brand'
| 'color-border-brand-bold'
Copy link
Contributor

Choose a reason for hiding this comment

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

J'ai l'impression que ça va être à ajuster dans dans theme-directory? @hebernardEquisoft @pylafleur

Copy link
Contributor

Choose a reason for hiding this comment

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

Mmhhhm tant que c'est pas un renaming de tokens, tout devrait être beau!

Copy link
Contributor

Choose a reason for hiding this comment

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

Faudra pas l'ajouter aux themes pour pas que ce soit weird? Quoiqu'en même temps, elle sert juste pour le slider en ce moment.

Copy link
Contributor Author

@savutsang savutsang Aug 21, 2024

Choose a reason for hiding this comment

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

Je pense c'est un renaming pour vous. J'explique ce qui se passe ici.

Le global-header utilisait avant 'color-border-brand', en regardant ca avec MA pourquoi le slider n'avait pas la bonne couleur malgre le bon token Figma, on s'est rendu compte que ce token n'avait pas bonne couleur.

On a renomme 'color-border-brand' a 'color-border-brand-bold' (utilise par global-header seulement)
On a ajoute le nouveau 'color-border-brand' avec la bonne couleur (utilise par Slider seulement)

WilliamsTardif
WilliamsTardif previously approved these changes Sep 20, 2024
packages/react/src/components/slider/slider.tsx Outdated Show resolved Hide resolved
meriouma
meriouma previously approved these changes Sep 28, 2024
Comment on lines 10 to 11
background-color: ${({ theme }) => theme.component['tooltip-popper-container-default-background-color']};
border: 1px solid ${({ theme }) => theme.component['tooltip-popper-container-border-color']};
Copy link
Contributor

@meriouma meriouma Sep 28, 2024

Choose a reason for hiding this comment

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

Ça existe pas, mais je pense que c'est un exemple d'endroits où on devrait utiliser des alias tokens plutôt. On devrait jamais référencer des component tokens en dehors du component qui les "déclare" je crois.

Copy link
Contributor Author

@savutsang savutsang Oct 24, 2024

Choose a reason for hiding this comment

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

Je comprend le point mais c'est plutot une replique du component Tooltip. Idealement on utiliserait directement le component Tooltip ici si on n'avait pas de probleme visuel durant le dragging.

Copy link
Contributor

Choose a reason for hiding this comment

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

Hmm, je comprends pourquoi tu l'as fait. Mais j'ai peur que ça ouvre la porte à des mauvaises pratiques. On pourra en rediscuter, il y a une réflexion à avoir aussi sur ce qu'on expose par rapport aux component tokens.

Copy link
Contributor Author

@savutsang savutsang Oct 29, 2024

Choose a reason for hiding this comment

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

On pourrait pt creer une version CSS du Tooltip dans le folder Tooltip a place, comme ca on pourrait le reutiliser ailleur si on rencontre le meme besoin. Le truc qui me gosse avec ca c'est que le component Tooltip ne s'en sert pas.

padding: 0 12px;
`;

const StyledSlider = styled(BaseSlider)`
Copy link
Contributor

Choose a reason for hiding this comment

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

Est-ce que certaines des dimensions devraient être exprimées en rem ou en variable css plutôt?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Ca sera fixe dans un autre billet.

@savutsang savutsang enabled auto-merge (squash) October 21, 2024 20:06
@savutsang
Copy link
Contributor Author

Ready for review

Copy link
Contributor

@meriouma meriouma left a comment

Choose a reason for hiding this comment

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

Dernier petit détail, sinon LGTM.

packages/react/src/components/slider/slider.tsx Outdated Show resolved Hide resolved
Comment on lines 10 to 11
background-color: ${({ theme }) => theme.component['tooltip-popper-container-default-background-color']};
border: 1px solid ${({ theme }) => theme.component['tooltip-popper-container-border-color']};
Copy link
Contributor

Choose a reason for hiding this comment

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

Hmm, je comprends pourquoi tu l'as fait. Mais j'ai peur que ça ouvre la porte à des mauvaises pratiques. On pourra en rediscuter, il y a une réflexion à avoir aussi sur ce qu'on expose par rapport aux component tokens.

meriouma
meriouma previously approved these changes Oct 29, 2024
@savutsang savutsang merged commit 4d8cdab into master Oct 29, 2024
22 checks passed
@savutsang savutsang deleted the dev/DS-281 branch October 29, 2024 20:33
LarryMatte pushed a commit that referenced this pull request Jan 9, 2025
* feat(slider): add new slider component

* fix: undo changing alias-tokens

* fix: update tokens

* fix: comments

* fix: comments

* fix: extract code

* fix: aria-label

* fix: lock and snapshot
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.

6 participants