-
Notifications
You must be signed in to change notification settings - Fork 2
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
Extend Md components' props with appropriate standard HTML attributes #134
Conversation
Please set a versioning label of either |
@aurorascharff @thomaslarsson Har dere noen tanker eller ev. andre forslag som unngår breaking changes? |
Egentlig ikke. Dette er jo desperat nødvendig, haha. Har tenkt på det. selv. Edit: extend både gamle md props og inputprops, så fjern Md props extension senere. Går det an å depracate size og legge til både size og componentsize? Edit: det funker vel ikke likevel siden size tilhører inputprops. Så kanskje umulig å ikke ha breaking. Skal tenke litt mer. |
Hva hvis
Vi kan lage en ny mappe kalt unstable/formElements/MdInput, så bruker man denne nye og vi deprecater den gamle. Da vil kun importen endres. Vi burde gjøre det samme for MdTextArea i unstable/formElements/MdTextArea som også burde extende TextArea props. Kan du sjekke om det er flere elementer det gjelder? Så flytter vi tilbake og erstatter gamle versjon og fjerner unstable mappen igjen etterhvert. Virker som best practise er depracted -> obsolete neste versjon -> så fjerne den helt i en major. |
Ja, jeg er helt enig i at det må være en major! Men jeg har bittelitt lyst på å slippe hele den runddansen med ny kopi først og deprecate + obsolete den gamle før vi er ferdig merker jeg 😓 Skjønner det er en must med f.eks. public pakker med mange bruk i forskjellige situasjoner - men er vi virkelig der med bruk av dette biblioteket? Så lenge det er en major release så tenker jeg ingen oppgraderer "ved et uhell", og fiksen - bytte size prop, er jo rimelig straight forward. Jeg kan legge til en beskrivelse ved den nye size-propen som skal brukes isteden som hjelp. Kan også ta en runde og se om det er flere komponenter som åpenbart hadde hatt nytte av den samme endringen 👍 |
Ok, enig med deg her! Så lenge vi leter etter flere komponenter det gjelder og fikser det så vi slipper flere majors 😆 |
Har jobbet en del timer i dag med å innføre dette for alle komponenter hvor det er en tydelig og gitt "indre" html-komponent som burde få tildelt alle standard attributt. Tror det er en veldig fornuftig omskriving som gir mye mer fleksibilitet og konfigurasjonsmuligheter fra utsiden ved bruk av de. Men det blir breaking changes for flere komponenter, fremst på dette med size-prop men også id-prop som tidligere var definert med number som lovlig type. Når jeg kom meg et stykke ned i listen så ser jeg at det noen steder er spesifisert otherProps på denne måten her, det gjør jo at man kan sende inn en hvilken som helst prop og at den ihvertfall blir forwarded til html-komponenten. |
Hei Kajsa! Bra du tenker på dette. Denne otherprops unknown tror jeg vi burde holde oss unna egentlig - den brukes blandt annet i ikonts for å la oss sende size ned til SVG-en fordi den feiler uten (merket det nylig). Men det vil jo si at du mister typechecking på ulovlige props helt! Så jeg skjønner hvorfor du tenkte det men jeg tror nok ikke det er lurt å innføre i input etc. |
Vi burde nok fjerne [otherprops: string]: unknown andre steder enn icon egentlig... Men beholde ...otherprops speaden men bare ikke den unknown delen. |
Godt poeng! Da gjør jeg meg ferdig med hele refaktoreringen, godt med en liten bekreftelse på at det ikke gjøres unødvendig ihvertfall 😅 |
Utrolig godt jobbet med denne refaktoreringen!!! Kanskje vi burde se etter flere breaking changes? Feks alle id?: string | number? Eller id?: string | number | undefined |
Hehe, det ble litt 😅 |
Tanken med denne propen var egentlig at den skal være required (i disse tilfellene siden vi vet at det er feil UU uten), men det er kanskje ikke best practise? |
Aha, skjønner. Men det gjelder bare MdIconButton da, det var den eneste som hadden ariaLabel som ikke var optional. Kan legge tilbake den? |
Ah, daså, ja det kan du! Har gjort det samme i helpButton forståvidt. Men der er den optional fordi vi har en default. |
Dere jobber bra sammen her @kajsaeggum og @aurorascharff ! Er det fortsatt usikkerhet rundt dette kan vi kanskje ta en diskusjon med flere, men ellers ser det ut for meg som dette blir bra håndtert :) |
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.
Testet oppgradering i eget prosjekt og ting ser fint ut!
Describe your changes
Justifying use case: Need to be able to set all different kinds of aria-props on MdInput.
aria-haspopup, aria-expanded, aria-autocomplete, aria-controls among others...
This PR extends the props of most components with the appropriate standard html attributes for the main element used within.
It also removes the use of [otherProps: string]: unknown, which previously allowed setting any prop on icons.
It also removes the use of ariaLabel as a prop, in favor of the built in aria-label prop.
This is set as a new major version because in some cases our previous custom props conflicted with one of the standard attributes and had to be renamed or got a change in type.
Breaking changes:
Checklist before requesting a review
major
,minor
orpatch
)stories
-folder?packages/react/index.tsx
?packages/css/index.css
?