calidae / normandy-vue

A WIP collection of OOCSS Objects written in Vue
MIT License
4 stars 2 forks source link

Grid-item: necessita la prop width? #7

Open afontcu opened 7 years ago

afontcu commented 7 years ago

Vaig crear la prop width al Grid-item, però veient que la idea de Normandy-vue és mapejar les classes de Normandy-css, potser si tindria sentit eliminar tota la lògica de la prop (que no és poca) i que el grid es modifiqués amb classes u-1/2 i tal, com tota la resta.

xevops commented 7 years ago

i com ho fariem per indicar el width? directament amb class? <Grid-item class="u-1/2"> ...... </Grid-item>

afontcu commented 7 years ago

"i que el grid es modifiqués amb classes u-1/2 i tal, com tota la resta"

😄

xevops commented 7 years ago

xD

Jo ho deia més que res per si valia la pena mantenir la prop witdh sense tota la lògica que té ara, de manera que simplement es limiti a pintar el que se li passi, així es pot utilitzar 'class' nomès per afegir aquelles classes extra quan calgui (tant poc com sigui possible). Alhora també em sembla lògic que el component Grid-item tingui una prop width per indicar l'amplada.

afontcu commented 7 years ago

Entenc que la prop hauria de validar el valor igualment, no? Vull dir, hauria d'acceptar 1/2 i rebutjar 3/2. És més, hauria de rebutjar qualsevol fracció no disponible a Normandy-CSS (com ho fem?).

Per altra banda, tot i que una prop width podria ser útil en tant que seria molt comuna als GridItem, em preocupa on posem la línia: la resta d'utilitats també han de tenir prop? Hi haurà més Objects que "mereixin" una prop que només mapeja una classe d'utilitat? Em sembla que obriria un meló complicat de gestionar.

afontcu commented 7 years ago

Donant-hi voltes crec que el més lògic és que el Grid-item no s'ocupi de definir el width, sinó que es faci a partir de classes d'utilitat (com a la resta d'elements).

El que podem fer és afegir una referència a aquestes utilitats a la descripció del component, ja que quasi bé sempre es faran servir conjuntament.

M'assigno la tasca per netejar el Grid-item, que el simplifcarà una barbaritat.

oriolfg commented 7 years ago

No crec que la prop hagi de rebutjar fraccions que no siguin al normady-css, si fos així ningú podria afegir-se fraccions personalitzades, i potser a algú li interessa fer-ho i li estém impedint. Quina necessitat real hi ha per impedir-ho i rebutjar fraccions?

afontcu commented 7 years ago

Les props de la resta d'objectes no són personalitzables: al Media no se li pot afegir un nou valor a la prop size, per exemple. I entenc que així ha de ser! Perquè normandy-vue mapeja els modificadors de normandy-css.

Per aquesta mateixa lògica, si la prop width acaba escrivint modificadors u-1/2, caldria que tingués la mateixa consistència: validar que el valor tingui una equivalència a normandy-css.

Això és complicat, per això penso que el més pràctic és eliminar la prop width i que l'amplada es defineixi amb modificadors, com es fa a la resta d'objects i com es fa amb la resta d'utilitats.

El motiu pel qual vaig afegir la prop width era perquè en la primera idea de vue-objects no tenia intenció de mapejar normandy-css. Un cop és així, la prop penso que afegeix una complexitat que queda resolta canviant

<Grid>
  <GridItem width="1/2" />
</Grid>

per

<Grid>
  <GridItem class="u-1/2" />
</Grid>

(altra cosa, que tinc en ment, és que les utilitats tinguin totes una forma estàndard de definir-se als objects, de manera que no haguem d'escriure les classes a pèl. És un altre debat).