Closed asanzo closed 8 months ago
The journey so far...
Form
, junto a nuestro propio PbInput
para reemplazar los de ember paper. Pero no resultó un camino tan directo como esperábamos...
div
. Para que no hagamos eso, a nuetro componente form hay que agregarle un @tagname
. Eso implica que hay que escribirlo con la sintaxis de clase. O cambiar a los componentes de glimmer.ParentMixin
para permitir que los supercomponentes puedan suscribir subcomponentes. Y un ChildMixin
, que permite a los subcomponentes suscribirse al supercomponente al momento de crearse. De esta manera, tenemos las referencias que necesitamos. Lo malo es que esto no es compatible con los nuevos componentes de glimmer
, por lo que decidimos retocarlo un poco y hacer una herencia simple debido a que no teníamos la necesidad de agregar más Mixines.PbInput
también perdemos cierta funcionalidad que nos proveía ember paper. Como por ejemplo: las validaciones custom que se deberían hacer sobre los inputs, errores custom, etcétera. Pudimos resolver estos inconvenientes excepto uno: un posible problema de renderizado. Básicamente lo que sucedía con algunos inputs es que no mostraban ningún mensaje de error aunque el input fuera incorrecto, aún cuando el estado del componente era inválido. No te permitía hacer el submit del form, pero no te daba ninguna explicación del por qué.computed properties
y es un feature que ember fue dejando de lado, decidimos probar con actualizar estos componentes a los nuevos de glimmer
. Esto nos permitiría no utilizar más las computed (se reemplazan por un getter y @tracked
properties) y con suerte resolvía nuestro problema de renderizado. div
, por lo cual lo tuvimos que hacer a mano para que todo siga quedando en el lugar que corresponde. Lamentablemente, esto trajo más bugs que soluciones. Algunos inputs no permitían escritura, los errores se mostraban mal. Descubrimos que estos nuevos componentes no permiten cambiar el estado de los supercomponentes (que es lo que hacíamos antes). Es decir, el supercomponente nos pasaba una property suya y los subcomponentes se encargaban de ir modificándola en base a lo escrito en el input. En base a esto, cambiamos la asignación directa por parametrización de actions. Pero tampoco tuvo frutos...ember papar react
? Entonces comenzamos a investigar qué componentes deberíamos reemplazas de esta biblioteca para poder utilizar directamente los de mui. Creo que eran como 6 componentes distintos aproximadamente, se podía llegar a hacer. Peeeeero, si integramos react, pareciera que no es posible mezclar componentes de ember con los de react. Es decir, a partir que pongamos un componente de react en la app, de ahi para abajo tienen que ser todos de react. Esto dificulta un montón poder parametrizar subcomponentes. Y este es uno de los problemas de resuelve ember paper react
, y no es para nada trivial. Decidimos que este no era el camino...Frustrados y abatidos decidimos volver a la pregunta: Queremos subir a Ember 4 para poder utilizar Tyepscript y ser un poco más felices? O acaso nos conviene resolver el creador de desafíos y finalmente empezar a migrar la app?
¿Será este el final de los guerreros Z?
@ezequielPereyra
@tagname
, también existe en el viejo ember: https://guides.emberjs.com/v3.4.0/components/customizing-a-components-element/this.registerData.parentName
, pasar this.registerData
, y modificarle el parentName. Pero me gustaría probar, porque debería ser posible. Acá alguien hizo un form con componentes pelados de glimmernearestOfType
y al joraca.En este punto cualquier cosa que resuelva está bien, creo, Eze.
@ezequielPereyra
* Sobre el `@tagname`, también existe en el viejo ember: https://guides.emberjs.com/v3.4.0/components/customizing-a-components-element/ * Sobre el estado, se me ocurre en vez de pasar `this.registerData.parentName`, pasar `this.registerData`, y modificarle el parentName. Pero me gustaría probar, porque debería ser posible. [Acá alguien hizo un form con componentes pelados de glimmer](https://www.jenweber.dev/building-an-octane-style-input/) * Y si querés volver al form de ember paper, podemos implementar `nearestOfType` y al joraca.
En este punto cualquier cosa que resuelva está bien, creo, Eze.
Nada de esto lo vamos a hacer pues vamos a salir de Ember.