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

Button-complete #6

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open

Button-complete #6

wants to merge 2 commits into from

Conversation

RallaPirate
Copy link
Collaborator

No description provided.

@RallaPirate
Copy link
Collaborator Author

Check onze buttons 💯

@novaeeken novaeeken self-requested a review December 4, 2024 16:34
Copy link
Contributor

@novaeeken novaeeken left a comment

Choose a reason for hiding this comment

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

Heeeey Rob en Gwendolyn, super goed werk geleverd! 🥳 Kijk nog eens goed naar de opmerkingen, als je daarmee aan de slag gaat maak je er een super mooi herbuikbaar component van (dat hoeft natuurlijk niet gelijk nu, je mag ook wachten tot de volgende coding wednesday!)

>
{label}
{arrow === true && <ArrowRight size={25}/>}

Copy link
Contributor

Choose a reason for hiding this comment

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

Zeg... Wat doet al deze witruimte hier?

Copy link
Collaborator

Choose a reason for hiding this comment

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

Oops :P


function Button({label, name, onClick, arrow}) {
return (
<button type="button"
Copy link
Contributor

Choose a reason for hiding this comment

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

En wat nou als ik een button wil met type=submit?

Copy link
Collaborator

Choose a reason for hiding this comment

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

Ik heb de typing weggehaald, zodat de gebruiker zelf kan kiezen welke functie de button heeft.

return (
<button type="button"
className={name}
onClick={onClick}
Copy link
Contributor

Choose a reason for hiding this comment

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

Uitstekend!

function Button({label, name, onClick, arrow}) {
return (
<button type="button"
className={name}
Copy link
Contributor

Choose a reason for hiding this comment

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

Dit werkt al top, maar wat nog beter zou zijn is om twee of drie varianten te maken. Dus iemand geeft mee "primary" of "secundary" en wij koppelen in de button dan de juiste CSS-class daaraan. Anders moeten we de CSS telkens opnieuw schrijven voor iedere gebruikte button...

Copy link
Collaborator

Choose a reason for hiding this comment

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

Ik heb in de Button.css de benaming aangpast naar .button-primary, .button-secundary en .button-tertiary.

@@ -16,7 +17,7 @@ function Navbar() {
</ul>
<div className="navbar-controls">
<p>Student login</p>
<button type="button">Inschrijven</button>
<Button name="button2" label="Inschrijven" onClick={()=> console.log("Je hebt geklikt!")} arrow={false} />
Copy link
Contributor

Choose a reason for hiding this comment

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

In plaats van name zou variant een goed idee zijn! En dan kan iemand kiezen tussen primary, secondary of inverted bijvoorbeeld

Copy link
Collaborator

Choose a reason for hiding this comment

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

I has it 'le fixed'

src/components/button/Button.css Show resolved Hide resolved
width: max-content;
min-width: 150px;
display: flex;
justify-content: flex-start;
Copy link
Contributor

Choose a reason for hiding this comment

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

Dit is de default waarde van justify-content, dus kun je weglaten :)

Copy link
Collaborator

Choose a reason for hiding this comment

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

Weggehaald

border-radius: 7px;
padding: 12px 27px;
box-sizing: border-box;
width: max-content;
Copy link
Contributor

Choose a reason for hiding this comment

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

Weten jullie ook wat dit doet? Of heb je die gewoon overgenomen van de echte code? ;)

Copy link
Collaborator

Choose a reason for hiding this comment

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

Code aangepast, tevens de arrow een left-margin van 0.5 em meegegeven voor de ruimte.

cursor: pointer;
}

.button3 {
Copy link
Contributor

Choose a reason for hiding this comment

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

Deze class bevat nu heel veel dubbele CSS in vergelijking met de andere button-classes. Kijk eens of je de CSS efficienter kunt opschrijven met een basisclass die geldt voor alle buttons, en dan extra classes met de properties die anders zijn, zoals font-size, kleur of borders!

Copy link
Collaborator

Choose a reason for hiding this comment

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

Hmm ik zie niet heel veel wat exact gelijk blijft, maar ik snap zeker wat je bedoeld.

import './Button.css'
import {ArrowRight} from "@phosphor-icons/react";

function Button({label, name, onClick, arrow}) {
Copy link
Contributor

Choose a reason for hiding this comment

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

Op basis van true of false die binnenkomt onder arrow ga je bepalen of je het icoon wel of niet wil weergeven. Bij boolean properties leest het altijd het fijnst als je de property has... of is... noemt. Denk bijvoorbeeld aan hasIcon, dat maakt het een stuk duidelijker voor collega's!

Copy link
Collaborator

Choose a reason for hiding this comment

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

Aangepast

.button1 {
font-size: 16px;
background: #171717;
border: 3px solid #171717;
Copy link
Contributor

Choose a reason for hiding this comment

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

Oh en gebruik je hier nog even de CSS-kleur-variabelen voor uit index.css?

Copy link
Contributor

@novaeeken novaeeken left a comment

Choose a reason for hiding this comment

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

Heeey jongens, we zijn er bijna! Kijk nog even naar de laatste kleine dingetjes en dan kan 'ie door :)

nostrum omnis quae, quam quis rem ut.</p>
<Button variant="button-tertiary"
onClick={() => console.log("Je hebt geklikt!")
}
Copy link
Contributor

Choose a reason for hiding this comment

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

Deze staat een beetje op een gekke plek, kan 'ie terug op de vorige regel?

label="Bekijk onze opleidingen"
arrow={true}
>
</Button>
Copy link
Contributor

Choose a reason for hiding this comment

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

Het button component neemt geen children, dus in dat geval zou 'ie self-closing moeten zijn. Echter, voelt het fijner om een button te gebruiken zoals je 'm in de HTML gewend bent. Je zou ervoor kunnen kiezen om de label-property te vervangen door de children property, zodat je de button zo kunt gebruiken:
<Button arrow={true} variant="button-tertiary" onClick={}>Bekijk onze opleidingen</Button

return (
<button className={variant}
onClick={onClick}>
{label}
Copy link
Contributor

Choose a reason for hiding this comment

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

als je label hier (en op regel 4) vervangt door children kun je 'm gebruiken zoals ik heb beschreven in de vorige comment!

<button className={variant}
onClick={onClick}>
{label}
{hasArrow === true && <ArrowRight size={25}/>}
Copy link
Contributor

Choose a reason for hiding this comment

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

Hier checken jullie expliciet (wat prima is) en het zou ook impliciet kunnen, gezien de hasArrow waarde altijd een boolean is. Dus hasArrow && <ArrowRight size={25}/> werkt ook :)


function Button({label, variant, onClick, hasArrow}) {
return (
<button className={variant}
Copy link
Contributor

Choose a reason for hiding this comment

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

Mocht je het nou extra, éxtra netjes willen doen, kun je switch statement gebruiken om de className te bepalen. Want als ik een spelfout maak in de variant die ik meegeef, dan krijgt de button geen styling omdat de CSS-class nergens mee matcht. Door de className op te bouwen met een switch statement (tussen regel 4 en 5) kun je ook altijd terugvallen op iets, als geen van de opties matcht.

cursor: pointer;
}

button > svg {
Copy link
Contributor

Choose a reason for hiding this comment

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

👍 👍 👍 Alleen kun je van button beter een specifieke class-selector maken, zoals:
.button-primary > svg, .button-secondary > svg, .button-tertiary > svg {}

display: flex;
align-items: center;
cursor: pointer;
}
Copy link
Contributor

Choose a reason for hiding this comment

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

Waarschijnlijk valt het jullie ook op dat veel van de properties nu herhaald worden (dubbele CSS). Dus als we nu besluiten dat buttons minder padding moeten krijgen, moeten we dat op drie regels aanpassen (niet ideaal). Door selectors te groepperen, kun je de declaraties die alle buttons moeten hebben 1 keer schrijven:

.button-primary, .button-secundary, .button-tertiary { zet hier alles dat hetzelfde is }

.button-primary { zet hier alle aanvullingen die alleen voor primary gelden }
.button-secondary { zet hier alle aanvullingen die alleen voor secondary gelden }
.button-tertiary { zet hier alle aanvullingen die alleen voor tertiary gelden }

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.

3 participants