면책 조항: 현재 진행 방향에 매우 만족하며, 새 시스템에 상당한 기능이 포함되어 있어 지금까지의 노력에 감사드립니다. 다만, 기존과 동등한 기능들을 유지할 수 있도록 확인이 필요합니다. …
제 Component(TLP)에서는 현재 Topic List Item 외부 태그의 style 속성을 동적으로 설정하고 있습니다:
이미지의 우세한 색상과 일치하도록 background: 색상을 고유한 RGB 값으로 설정합니다. 이상적으로는 Ember 루프 내에서 처리되어야 합니다.
또한 grid-row-end를 설정하여 마스노리(masonry) 요소의 크기를 빠르게 결정하고 있습니다. 이는 매우 빠르고 효율적이며 많은 JavaScript 코드를 피할 수 있습니다. 하지만 이 부분은 DOM의 최종 크기에 의존하기 때문에 JavaScript를 사용해야 합니다.
modifyClass 자체는 비추천(deprecated) 상태가 아닙니다. 이는 위험한 커스터마이징 메서드이며, 사용 시 주의가 필요합니다(@don이 링크한 문서에 설명되어 있음). 하지만 이를 제거할 당장 계획은 없습니다.
component:topic-list와 component:topic-list-items에 대해 비추천 메시지를 출력하는 이유는, 해당 컴포넌트들이 토픽 목록의 레거시 구현체이기 때문입니다. glimmer 토픽 목록이 활성화된 경우 이 컴포넌트들은 사용되지 않습니다. 현재 components/topic-list/item과 같은 glimmer 컴포넌트 세트를 갖추고 있습니다.
따라서 기술적으로는 새로운 컴포넌트에 modifyClass를 사용할 수 있습니다. 하지만 이들은 glimmer 컴포넌트이므로 JS 클래스를 통해 스타일 태그를 수정할 수 없어, OP의 문제를 해결하는 데 도움이 되지 않습니다.
공식 d-topic-thumbnails 테마 컴포넌트에는 유사한 ‘masonry’ 모드가 있으므로, 그 구현 방식을 살펴볼 가치가 있습니다. 우리는 토픽 목록의 각 'row’에 고유한 클래스를 추가합니다:
그 다음, 별도의 plugin-outlet에서 동적인 <style> 태그를 렌더링하여 해당 클래스 이름을 대상으로 합니다:
그럼에도 불구하고… 이 방식은 다소 복잡합니다. 따라서 style= 속성을 변경할 수 있도록 특정 valueTransformer를 추가하는 방안을 고려해 볼 수도 있습니다. Ember의 해당 속성에 대한 xss/htmlSafe 보호 기능 때문에 조금 까다롭지만… 뭔가 작동하는 것을 만들어낼 수 있을 것이라고 확신합니다.