Disclaimer: muito satisfeito com a direção aqui e obrigado por todo o trabalho até agora, pois há muito poder no novo sistema. Apenas precisamos garantir que mantemos algumas capacidades equivalentes? …
No meu Componente, TLP, estou atualmente definindo o atributo de estilo da tag externa do Item da Lista de Tópicos dinamicamente:
definindo a cor background: para um valor RGB exclusivo para corresponder à cor dominante da imagem. Isso deve ser feito idealmente no loop Ember.
Também estou definindo grid-row-end para determinar rapidamente o tamanho do elemento de alvenaria. Isso é muito rápido e eficiente e evita muito Javascript. No entanto, para isso, estou usando Javascript, pois depende dos tamanhos finais no DOM.
Ambas são personalizações críticas para o Componente de Tema e, sem elas, não seria suportável.
Esta primeira alteração de estilo é atualmente realizada com uma ligação direta de atributo de estilo com modifyClass, que entendo ser um método obsoleto.
Seria possível ter uma API no novo mundo para isso, por favor?
Ou talvez eu tenha perdido uma maneira existente de fazer isso?
No entanto, isso não é algo que acredito que possa ser alcançado com classes.
Então modifyClass ainda é válido? (Apenas sintaxe atualizada - pode ser bom, se for o caso, referenciar esse guia)
Ainda posso usá-lo para acessar o atributo de estilo da tag de fechamento?
Componentes Clássicos são diferentes no sentido de que historicamente forneceram acesso a atributos de nível de tag de fechamento fora do template, então eram fáceis de modificar dinamicamente no código.
Ah, você está certo. Há um aviso de depreciação no console.
Aviso de depreciação: Modificar ‘component:topic-list-item’ com ‘modifyClass’ está obsoleto. Use o transformador de valor ‘topic-list-columns’ e outras novas APIs do plugin topic-list em vez disso.
modifyClass em si não está obsoleto. É um método de personalização arriscado, e você deve tomar precauções ao usá-lo (conforme descrito na documentação que @don vinculou), mas não temos planos iminentes de removê-lo.
O motivo pelo qual estamos exibindo uma mensagem de obsolescência para component:topic-list e component:topic-list-items é que esses componentes são a implementação legada da lista de tópicos e não são usados quando a lista de tópicos do glimmer está habilitada. Agora, temos um conjunto de componentes glimmer como components/topic-list/item.
Portanto, tecnicamente, você poderia usar modifyClass nesses novos componentes. Mas, como são componentes glimmer, você não poderá modificar a tag de estilo através da classe JS, então isso não ajudará com o problema na postagem original.
Temos um modo semelhante de ‘masonry’ no componente de tema oficial d-topic-thumbnails, então vale a pena ver como isso é implementado. Adicionamos uma classe única a cada ‘linha’ da lista de tópicos:
Em seguida, renderizamos uma tag <style> dinâmica em um plugin-outlet separado, que visa esses nomes de classe:
Dito isso… é um pouco complicado, então talvez devêssemos considerar adicionar um valueTransformer específico para permitir a alteração do atributo style=. É um pouco complicado por causa das proteções xss/htmlSafe do Ember nesse atributo… mas tenho certeza de que poderíamos fazer algo funcionar.
Poderíamos introduzir transformadores específicos em certos locais. Mas não vejo a gente adicionando uma API geral que permitiria a você se conectar a qualquer elemento/componente.
Quanto à discussão sobre o atributo style=, eu fiz este PR. Tentarei que ele seja revisado/mesclado: