-
Notifications
You must be signed in to change notification settings - Fork 0
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
base: main
Are you sure you want to change the base?
Conversation
Check onze buttons 💯 |
There was a problem hiding this 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!)
src/components/button/Button.jsx
Outdated
> | ||
{label} | ||
{arrow === true && <ArrowRight size={25}/>} | ||
|
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oops :P
src/components/button/Button.jsx
Outdated
|
||
function Button({label, name, onClick, arrow}) { | ||
return ( | ||
<button type="button" |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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.
src/components/button/Button.jsx
Outdated
return ( | ||
<button type="button" | ||
className={name} | ||
onClick={onClick} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Uitstekend!
src/components/button/Button.jsx
Outdated
function Button({label, name, onClick, arrow}) { | ||
return ( | ||
<button type="button" | ||
className={name} |
There was a problem hiding this comment.
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...
There was a problem hiding this comment.
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.
src/components/navbar/Navbar.jsx
Outdated
@@ -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} /> |
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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
Outdated
width: max-content; | ||
min-width: 150px; | ||
display: flex; | ||
justify-content: flex-start; |
There was a problem hiding this comment.
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 :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Weggehaald
src/components/button/Button.css
Outdated
border-radius: 7px; | ||
padding: 12px 27px; | ||
box-sizing: border-box; | ||
width: max-content; |
There was a problem hiding this comment.
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? ;)
There was a problem hiding this comment.
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.
src/components/button/Button.css
Outdated
cursor: pointer; | ||
} | ||
|
||
.button3 { |
There was a problem hiding this comment.
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!
There was a problem hiding this comment.
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.
src/components/button/Button.jsx
Outdated
import './Button.css' | ||
import {ArrowRight} from "@phosphor-icons/react"; | ||
|
||
function Button({label, name, onClick, arrow}) { |
There was a problem hiding this comment.
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!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Aangepast
src/components/button/Button.css
Outdated
.button1 { | ||
font-size: 16px; | ||
background: #171717; | ||
border: 3px solid #171717; |
There was a problem hiding this comment.
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?
There was a problem hiding this 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!") | ||
} |
There was a problem hiding this comment.
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> |
There was a problem hiding this comment.
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} |
There was a problem hiding this comment.
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}/>} |
There was a problem hiding this comment.
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} |
There was a problem hiding this comment.
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 { |
There was a problem hiding this comment.
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; | ||
} |
There was a problem hiding this comment.
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 }
No description provided.