Descargo de responsabilidad: Muy contento con la dirección aquí y gracias por todo el trabajo hasta ahora, ya que hay mucha potencia en el nuevo sistema. ¿Solo necesitamos asegurarnos de mantener algunas capacidades equivalentes? …
En mi Componente, TLP, actualmente estoy estableciendo el atributo de estilo de la etiqueta externa del Elemento de Lista de Temas dinámicamente:
Estableciendo el color background: a un valor RGB único para que coincida con el color dominante de la imagen. Esto idealmente debería hacerse en el bucle de Ember.
También estoy estableciendo grid-row-end para determinar rápidamente el tamaño del elemento de mampostería. Esto es muy rápido y eficiente y evita mucho Javascript. Sin embargo, para esto, uso Javascript ya que depende de los tamaños finales en el DOM.
Ambas son personalizaciones críticas para el Componente de Tema y, sin ellas, no sería compatible.
Esta primera modificación de estilo se logra actualmente con una vinculación directa de atributos de estilo con modifyClass, que entiendo que es un método obsoleto.
¿Sería posible tener una API en el nuevo mundo para esto, por favor?
¿O tal vez me he perdido una forma existente de hacer esto?
Sin embargo, esto no es algo que crea que se pueda lograr con clases.
¿Sigue siendo modifyClass válido? (Sintaxis recién actualizada; sería bueno si es así hacer referencia a esa guía)
¿Todavía puedo usar eso para acceder al atributo de estilo de la etiqueta contenedora?
Los componentes clásicos son diferentes en que históricamente proporcionaron acceso a los atributos del nivel de la etiqueta contenedora fuera de la plantilla, por lo que era sencillo modificarlos dinámicamente en el código.
Ah, tienes razón. Hay un aviso de deprecación en la consola.
Aviso de deprecación: Modificar ‘component:topic-list-item’ con ‘modifyClass’ está obsoleto. Usa el transformador de valor ‘topic-list-columns’ y otras nuevas API del plugin topic-list en su lugar.
modifyClass en sí mismo no está obsoleto. Es un método de personalización arriesgado y debes tomar precauciones al usarlo (como se describe en la documentación que @don enlazó), pero no tenemos planes inminentes para eliminarlo.
La razón por la que imprimimos un mensaje de obsolescencia para component:topic-list y component:topic-list-items es que esos componentes son la implementación heredada de la lista de temas y no se utilizan cuando la lista de temas de Glimmer está habilitada. Ahora, tenemos un conjunto de componentes de Glimmer como components/topic-list/item.
Por lo tanto, técnicamente, podrías usar modifyClass en esos nuevos componentes. Pero, debido a que son componentes de Glimmer, no podrás modificar la etiqueta de estilo a través de la clase JS, por lo que no ayudará con el problema en el OP.
Tenemos un modo similar de ‘mampostería’ en el componente temático oficial d-topic-thumbnails, por lo que vale la pena ver cómo se implementa. Agregamos una clase única a cada ‘fila’ de la lista de temas:
Luego, renderizamos una etiqueta <style> dinámica en un plugin-outlet separado, que apunta a esos nombres de clase:
Dicho esto… es un poco complicado, así que tal vez deberíamos considerar agregar un valueTransformer específico para permitir cambiar el atributo style=. Es un poco complicado debido a las protecciones xss/htmlSafe de Ember en ese atributo… pero estoy seguro de que podríamos hacer que algo funcione.
Podríamos introducir transformadores específicos en ciertos lugares. Pero no veo que añadamos una API general que te permita adjuntarte a cualquier elemento/componente.
En cuanto a la discusión del atributo style=, hice esta PR. Intentaré que se revise/combine: