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

fix(tabs): init tabs with custom active index other than zero #677

Merged

Conversation

remija
Copy link

@remija remija commented Sep 9, 2020

Related issue

Unable to activate index upper than zero (default) when init Tabs component

Reference to the issue

Here you can add link to related issue

Description of the issue

It is impossible to display particular tab other than 0 index when showing Tabs component

Person(s) for reviewing proposed changes

Important

Before creating a pull request run unit tests

$ npm test

# watch for changes
$ npm test -- --watch

# For a specific file (e.g., in packages/context/__tests__/command.test.js)
$ npm test -- --watch packages/action

sisko59
sisko59 previously approved these changes Sep 9, 2020
@sisko59
Copy link
Contributor

sisko59 commented Sep 9, 2020

Félicitations pour cette première PR 🥇

@@ -1,12 +1,14 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`<Help> Render Should render Help component 1`] = `
<button
<div
Copy link
Contributor

Choose a reason for hiding this comment

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

Question : Comment ça se fait que l'on passe sur un div ici ?

Copy link
Author

Choose a reason for hiding this comment

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

Honnetement je ne sais pas car je n'ai pas modifié ce composant :) J'ai juste remarqué qu'un TU sur celui-ci ne passait pas et j'ai juste mis à jour le snapshot (Il parait qu'il y a une autre PR à ce sujet).

Copy link
Contributor

@sisko59 sisko59 Sep 10, 2020

Choose a reason for hiding this comment

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

Oui, il y a un problème actuellement avec ce test, qui fonctionne différemment entre nos poste et la build.
De mon coté pour que ma PR build, j'ai forcé exceptionnellement mon push sans la mise à jour de la snapshot car ça ne me concernait pas.
J'ai créé cette issue #675
car je suis pas sur que cette PR soit en lien malgré le titre : #673

Copy link
Contributor

Choose a reason for hiding this comment

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

Le soucis des tests est en cours d'investigation, c'est un soucis entre lerna et la CI

Copy link
Contributor

Choose a reason for hiding this comment

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

Ha oui, je pensais que c'était résolu ce souci… En l'état il faudrait attendre la correction de ce problème

Copy link
Contributor

Choose a reason for hiding this comment

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

Guillaume et Arnaud s'y sont cassé les dents pour le moment...

Copy link
Author

Choose a reason for hiding this comment

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

Qu'est-ce que je fais dans ce cas ? Je pousse le snapshot modifié ou pas ?

Copy link
Contributor

Choose a reason for hiding this comment

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

Pousse pas le help en effet, j'ai voulu le pousser aussi (j'ai le meme soucis sur ma PR), pousse que ce qui a été directement impacté par ta PR

Copy link
Author

Choose a reason for hiding this comment

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

ok, done.

@@ -1,10 +1,5 @@
import * as React from 'react';
Copy link
Contributor

Choose a reason for hiding this comment

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

thought : tu n'as rien changé à part l'indent', tu devrais peut-être supprimer cette modif'

Copy link
Author

Choose a reason for hiding this comment

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

ok


return (
<TabsStateless
activeIndex={activeIndex || state.activeIndex}
activeIndex={state.activeIndex}
{...otherProps}
onChange={onChangeEvent(onChange)(setState)(state)}
Copy link
Contributor

Choose a reason for hiding this comment

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

suggestion : on pourrait peut-être renommer onChangeEvent en setActiveIndex

Copy link
Author

Choose a reason for hiding this comment

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

pas chaud pour faire ce renommage car le onChangeEvent permet de base de modifier le activeIndex mais permet aussi d'exécuter une fonction supplémentaire (paramètre onChange)

Copy link
Contributor

Choose a reason for hiding this comment

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

Une fonction devrait toujours être nommé en fonction de ce qu'elle fait et pas comment elle est appelé :)
Ce n'est pas le sujet de la PR donc c'est pas grave si on ne le fait pas maintenant

let initialState = defaultState;

if (activeIndex) {
initialState.activeIndex = activeIndex;
Copy link
Contributor

Choose a reason for hiding this comment

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

question : Pourquoi initialState est un objet ? On n'utilise que la clé dedans activeIndex
La possibilité de mutation est un risque de dysfonctionnement, si on a besoin d'un autre state on pourra toujours à l'avenir faire un autre useState

Copy link
Contributor

Choose a reason for hiding this comment

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

En fait c'est un risque majeur, initialState étant une référence de l'objet defaultState, celle-ci étant global au module TasbCore.tsx sera commune à tous les appels à ce composant, donc un bug potentiel quand il y a 2 fois le composant dans la page.

Copy link
Author

Choose a reason for hiding this comment

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

j'ai fait en sorte que "activeIndex" soit l'état (ce n'est plus un objet). La prop "activeIndex" est obligatoire avec une valeur par défaut à 0.

let initialState = defaultState;

if (activeIndex) {
initialState.activeIndex = activeIndex;
Copy link
Contributor

Choose a reason for hiding this comment

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

En fait c'est un risque majeur, initialState étant une référence de l'objet defaultState, celle-ci étant global au module TasbCore.tsx sera commune à tous les appels à ce composant, donc un bug potentiel quand il y a 2 fois le composant dans la page.

romuleald
romuleald previously approved these changes Sep 10, 2020
youf-olivier
youf-olivier previously approved these changes Sep 11, 2020
Copy link
Contributor

@guillaume-chervet guillaume-chervet left a comment

Choose a reason for hiding this comment

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

beau boulot merci !

@guillaume-chervet guillaume-chervet merged commit 04c979a into AxaFrance:master Sep 11, 2020
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