-
Notifications
You must be signed in to change notification settings - Fork 83
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(datepicker): add innerRef to Datepicker #1775
Conversation
Azure Static Web Apps: Your stage site is ready! Visit it here: https://black-beach-0d62d0d03-1775.westeurope.2.azurestaticapps.net |
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.
Takk for bidraget! Jeg var visst litt rask med å approve denne. 😄
Commit-meldingen må samsvare med pakkenavnet for at Lerna skal kunne publisere endringene til npm på riktig måte. feat(datepicker):
må med andre ord endres til feat(ffe-datepicker-react):
.
component-overview er en egen pakke, så endringene i denne mappen må ha en egen commit med melding som prefixes med type og pakkenavn på samme måte, f.eks docs(component-overview):
@antidecaf Ah, takk for at du sa i fra! 😃 Må det også legges til som to forskjellige pull-requests? |
Nei, det holder med to separate commits i samme pull request |
4e38ccf
to
d92af4e
Compare
Azure Static Web Apps: Your stage site is ready! Visit it here: https://black-beach-0d62d0d03-1775.westeurope.2.azurestaticapps.net |
@antidecaf Ble det riktig nå? 😃 |
Ser sånn ut 😄 |
Beskrivelse
Datepicker har fått en innerRef man kan sende inn for å bruke ref på komponenten utenifra.
innerRef er optional og komponenten skal fungere som før ellers. Det er lagt til eksempel på bruk i Datepicker.jsx.
Om koden:
Fra før av brukte datepicker this.dateInputRef som ref, og det er litt uklart om denne fortsatt må være der for at denne endringen skal fungere. Alternativt ville jeg skrevet ref = { innerRef } på linje 352 i stedet for funksjonen, men da er det mulig mer må endres. Åpen for tilbakemeldinger med bedre måter å gjøre det på, men gitt at det er en gammel komponent føles det som den tryggeste måten å gjøre det på.
Motivasjon og kontekst
Team kjøretøy bruker ref.focus() for å kunne lenke til feil i skjemaer, og Datepicker har ikke kunne blitt referert til via ref. Denne endringen er laget for å kunne bruke ref.focus() på inputfeltet til Datepicker utenifra, via useRef().
Motivasjonen bak oppgaven har blandt annet vært denne kodesnutten, hvor vi ønsker å fjerne den øverste delen:
onClick={() => { if ("deliveryDate" === key) { const deliveryDate = document.getElementById( "datepicker-wrapper-deliveryDate" ); deliveryDate.getElementsByTagName("input")[0].focus(); } else { const errorRef: Ref = get(errors, key).ref; if (errorRef.focus) { errorRef.focus(); } } }}
Testing
Testet ved å lage en knapp som brukte innerRef.current.focus() i Datepicker.jsx, som beviste at innerRef referer til input-elementet. Ellers var det vanskelig å teste for de spesifikke tilfellene Team Kjøretøy trenger det til.
Har ikke skrevet eller oppdatert noen tester. Gjorde et forsøk, men klarte ikke å finne en god test på om input-feltet får en ref fra innerRef.