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/create avatar component #231

Merged
merged 22 commits into from
Nov 14, 2023
Merged

Feat/create avatar component #231

merged 22 commits into from
Nov 14, 2023

Conversation

mattgoud
Copy link
Collaborator

@mattgoud mattgoud commented Oct 23, 2023

Context and needs:
We need to create a component Avatar.

Formulation US:
As a PUIK user, I want to use Avatar component.

Informations :

❓ Types of changes

  • 📖 Documentation (updates to the documentation or readme)
  • 🐞 Bug fix (a non-breaking change that fixes an issue)
  • 👌 Enhancement (improving an existing functionality)
  • 📦 New feature (a non-breaking change that adds functionality)
  • ⚠️ Breaking change (fix or feature that would cause existing functionality to change)

📚 Description

📝 Checklist

  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.
  • I have added tests to cover my changes
  • The component exists on old Prestashop UIKit and my pull request on migrating documentation is accepted.

@mattgoud mattgoud added the Feature Type: New Feature label Oct 23, 2023
@mattgoud mattgoud self-assigned this Oct 23, 2023
@mattgoud mattgoud linked an issue Oct 23, 2023 that may be closed by this pull request
@mattgoud mattgoud removed the request for review from FrancoisQtr November 7, 2023 08:11
Comment on lines 5 to 11
export const avatarColors = [
'neutral',
'blue',
'yellow',
'green',
'purple',
] as const

Choose a reason for hiding this comment

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

Il faudrait pas un 'white' ?

Choose a reason for hiding this comment

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

C'est un vieux commentaire ca (il se peut que j'avais commencé a review il y a longtemps et que j'avais pas fini)

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

oui il n'y a plus de color variants, la prop color a été supprimée.

color: {
type: String as PropType<PuikAvatarBgColor>,
required: false,
default: 'neutral',

Choose a reason for hiding this comment

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

Si on veut une couleur 'white', est-ce que ce serait pas blanc la couleur par default ?

Choose a reason for hiding this comment

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

C'est un vieux commentaire ca (il se peut que j'avais commencé a review il y a longtemps et que j'avais pas fini)

Comment on lines +54 to +58
src: {
type: String,
required: false,
default: '',
},

Choose a reason for hiding this comment

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

Pour les avatars avec une photo/image, qu'est-ce qu'on veut comme comportement si je prend une photo avec du transparent ? Genre un png ?

Est-ce qu'on laisse la transparence ? Dans ce cas faudrait enlever la couleur par default :O

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

bien vu ! le cas où l'image est transparente n'a pas été prévu. Je vois ça

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Après avoir testé, je pense que c'est à l'utilisateur de jouer sur le background avec la prop "mode" (soit fond noir si 'primary' soit fond blanc si 'reverse')

Comment on lines +24 to +28
id: {
type: String,
required: false,
default: undefined,
},

Choose a reason for hiding this comment

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

On en a besoin de l'id ?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

ça peut toujours être utile pour les utilisateurs si besoin de target facilement les éléments puik (dans la même veine que data-test). C'est une prop qui n'est pas requise donc pas contraignant de la laisser. T'en pense quoi ?

const initials = computed(() => {
const firstInitial = props.firstname
? props.firstname
.replace(/[^a-zA-Z0-9]/g, '')

Choose a reason for hiding this comment

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

Il est la pour quoi le replace ?

Choose a reason for hiding this comment

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

Aaah je crois que j'ai, c'est pour checker si le filou ne mets pas des trucs genre '--Mike--' ??

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

C'est ça ! c'est par rapport à notre discussion concernant le fait de supprimer les caractères spéciaux

Comment on lines 59 to 75
const initialsValue = props.singleInitial
? firstInitial || lastInitial || 'P'
: firstInitial && lastInitial
? firstInitial + lastInitial
: firstInitial && props.firstname.length > 1
? firstInitial +
props.firstname
.replace(/[^a-zA-Z0-9]/g, '')
.charAt(1)
.toUpperCase()
: lastInitial && props.lastname.length > 1
? lastInitial +
props.lastname
.replace(/[^a-zA-Z0-9]/g, '')
.charAt(1)
.toUpperCase()
: 'PS'

Choose a reason for hiding this comment

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

Whaaaaat ??? 👀

La regle c'est:

  • Si je veux une seule lettre => je prend la premiere lettre du prenom ou la premiere lettre du nom ou P
  • Si je ne veux pas qu'une seule lettre:
    • Si j'ai la premiere lettre du prenom et du nom => je concatene les deux
    • Sinon Si j'ai la premiere lettre du prenom et que le prenom fait au moins 2 lettres => je prend les 2 premieres lettre du prenom
    • Sinon Si j'ai la premiere lettre du nom et que le nom fait au moins 2 lettres => je prend les 2 premieres lettre du nom
    • Sinon je mets PS

C'est bien ca ?

Ouaaah je pense (si j'ai bien tout compris) que tu te fais un peu chier pour pas grand chose frere, je pense que t'aurais juste besoin de trim ta string :O

Genre ton bout de code serait un truc genre:

  • (firstInitial + lastInitial).trim() || 'PS'

J'ai pas pris en compte le "est-ce qu'on veut qu'une seule lettre ou pas?" parce que pose la question de est-ce qu'on veut vraiment ce comportement pour le cas ou ni le nom ni le prenom ne sont renseignés ?

Copy link
Collaborator Author

@mattgoud mattgoud Nov 8, 2023

Choose a reason for hiding this comment

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

la fonction à été modifiée et une refacto est en cours
la logique est un peu poussée et à été validée par @FrancoisQtr :

Si je veux une seule lettre => je prend la premiere lettre du prenom ou la premiere lettre du nom ou P
=> avec priorité à firstname (prend la première lettre de lastname si la prop firstname n'est pas renseignée) sinon valeur par défault 'P'

Sinon Si j'ai la premiere lettre du prenom et que le prenom fait au moins 2 lettres => je prend les 2 premieres lettre du prenom
=> pas tout à fait, si singleInitial est à false (valeur par défaut) et que firstname et lastname sont renseignés alors tu prends la première lettre de firstname et la première de lastname.
=> si il manque firstname ou lastname alors tu prends les deux premières lettres de la prop renseignée (soit firstname, soit lastname) sinon valeur par défaut 'PS'

@mattgoud mattgoud merged commit 9d3ef80 into main Nov 14, 2023
4 of 5 checks passed
@mattgoud mattgoud deleted the feat/create-avatar-component branch November 14, 2023 13:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Feature Type: New Feature
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[COMPONENT] Create Avatar component
3 participants