콀보 μμ νλͺ©μμ μΈλΆ μ€νμΌμ μ¬μ©νκ³ μΆμ§λ§ νλͺ©μ΄ μλμ° λ λ΄μ μκΈ° λλ¬Έμ μλνμ§ μμ΅λλ€.
ꡬ체μ μΈ μλ리μ€λ flag-icon-cssλ₯Ό μ¬μ©νμ¬ μΈμ΄ μ ν 콀보 μμμ νλκ·Έ μμ΄μ½μ νμνλ κ²μ λλ€. νλκ·Έλ₯Ό νμνλ €λ©΄ flag-icon-css μ€νμΌμ μΌλΆ CSS ν΄λμ€κ° μλ span νκ·Έλ₯Ό μ μ©ν΄μΌ νμ§λ§ shadow DOMμΌλ‘ μΈν΄ μ νλμ§ μμ΅λλ€. 콀보 μμ νλͺ©μ ListBoxμμμ κ°μ΄ "μ¬λ‘―"μ΄μ΄μΌ ν©λκΉ? ListBox νλͺ©μ κ²½μ° νλκ·Έ μμ΄μ½μ νμνλ κ²μ΄ μ’μ΅λλ€.
μ΅κ·Όμ stackoverflowμ λν μ§λ¬Έμ μ΄μμ΅λλ€. μμΈν λ΄μ©μ https://stackoverflow.com/questions/55170886 μ μ°Έμ‘°
μ¬μ© κ°λ₯ν ν΄κ²° λ°©λ²μ΄ μμ΅λκΉ?
μΈλΆ μ€νμΌμ shadow DOMμ μΉ¨ν¬νμ§ μκΈ° λλ¬Έμ shadow DOM λ΄λΆμ CSS νμΌμ κ°μ ΈμμΌ ν©λλ€.
μλ§λ μ΄ StackOverflow μ€λ λκ° λμ
ν΄λΉ μ€λ λμ λ λ²μ§Έ λ΅λ³μ κΈ°λ°μΌλ‘ <link rel="stylesheet">
λ shadow DOM λ΄λΆμμ μλν΄μΌ ν©λλ€. λ°λΌμ λ€μκ³Ό κ°μ κ²μ΄ ComponentRenderer
μμ μλν μ μμ΅λλ€.
Element link = new Element("link");
link.setAttribute("rel", "stylesheet");
link.setAttribute("href", "./frontend/bower_components/flag-icon-css/css/flag-icon.min.css");
item.getElement().appendChild(link);
...λλ 첫 λ²μ§Έ λ΅λ³μμ μ μν @import
:
Element style = new Element("style");
style.setProperty("innerHTML", "<strong i="15">@import</strong> \"./frontend/bower_components/flag-icon-css/css/flag-icon.min.css\"");
item.getElement().appendChild(style);
νμ§λ§ μ΄ μ€λν«μ μ§μ ν μ€νΈνμ§λ μμμ΅λλ€.
@steffen-harbich-itc, μ΄λ¬ν μ κ·Ό λ°©μ μ€ νλ λλ λ€λ₯Έ λ°©λ²μ μ¬μ©νμ¬ μλνλλ‘ κ΄λ¦¬νμ΅λκΉ? λ£κ³ μΆμ΅λλ€. :)
λλ λΉμ μ λ λ²μ§Έ μ μμ μλνκ³ ν¨κ³Όκ° μμμ΅λλ€. λλ 첫 λ²μ§Έ μ κ·Όμ μλνμ§ μμλ€. κ·Έλ¬λ λ΄ shared-styles.htmlμ " @import ..."λ₯Ό μΆκ°νλ €κ³ νμ΅λλ€.
<dom-module id="my-combo-box-theme" theme-for="vaadin-combo-box">
<template>
<style>...
νμ§λ§ μλνμ§ μμμ΅λλ€.
λ°λΌμ μ΄ λ¬Έμ μ λν ν΄κ²° λ°©λ²μ μ¬μ©ν μ μμ§λ§ IMOμλ μ¬μ ν ListItemκ³Ό λμ‘°μ μΌλ‘ bahaviorμ μΌμΉνμ§ μλ κ²μ΄ μμ΅λλ€.
μ μ΄λ νλμ μ κ·Ό λ°©μμ΄ ν¨κ³Όκ° μλ€λ μμμ λ£λ κ²μ΄ μ’μ΅λλ€!
곡μ μ€νμΌ μ κ·Ό λ°©μμ λν΄: theme-for="vaadin-combo-box-item"
μ€μ ν΄μΌ ν©λλ€. μλνλ©΄ μ΄κ²μ΄ μ€νμΌμ΄ μ½μ
λμ΄μΌ νλ μμμ΄κΈ° λλ¬Έμ
λλ€. κ·Έλ¬λ μ΄ λ λλ¬λ vaadin-combo-box-item
μ μΆκ°λ κ΅¬μ± μμ μ¬μ΄μ μΆκ° μΉ κ΅¬μ± μμ(λ°λΌμ μλμ° λ£¨νΈ)λ₯Ό μμ±νκΈ° λλ¬Έμ ComponentRenderer
μμλ μ¬μ ν μλνμ§ μμ μ μμ΅λλ€.
νλͺ©μ μ€νμΌμ± λ° νλͺ©μ΄ Shadow DOM λ΄λΆμ μμ΄μΌ νλμ§ μ¬λΆλ μΉ κ΅¬μ± μμμ κ΄λ ¨μ΄ μμΌλ―λ‘(μ΄ μ μ₯μμλ ν΄λΉ νλͺ©μ λν Java λνΌλ§ ν¬ν¨λμ΄ μμ) μ΄ ν°μΌμ vaadin-combo-box μ μ₯μλ‘ μ΄λνκ² μ΅λλ€.
μ΄λ₯Ό μ²λ¦¬νλ μ¬λ°λ₯Έ λ°©λ²μ λ€μκ³Ό κ°μ΄ dom-module
λ₯Ό λ§λλ κ²μ
λλ€.
<dom-module id="my-item-css" theme-for="vaadin-combo-box-item">
<template>
<style>
/* styles from flag-icons.css */
</style>
</template>
</dom-module>
@import
μ¬μ©νλ©΄ μλμ΄ λ³΄μ₯λμ§ μμΌλ©° κΆμ₯λμ§ μμ΅λλ€.
μ΄ λ¬Έμ μ λν μ¬μ΄ μμ μ¬νμ μμΌλ©° vaadin-combo-box
κ΅¬μ± μμμλ§ κ΅νλμ§ μμ΅λλ€.
μ λ¬Έμ μ¬μ΄νΈμμ shadow DOM λ° μΈλΆ CSSμ μ ν μ¬νμ λ¬Έμνν΄μΌ ν©λλ€.
κ·Έλ μ§ μμΌλ©΄ μ¬κΈ°μμ μ°λ¦¬κ° ν μΌμ΄ μμ΅λλ€. λ²κ·Έκ° μλλ―λ‘ λ«κ² μ΅λλ€.
λλ μ¬μ ν 콀보 μμ νλͺ©μ΄ shadow DOM λ΄μ λ°°μΉλμ§ μκ³ λ³λμ μ¬λ‘―μ λ°°μΉλμ΄μΌ νλ€κ³ μμν©λλ€.
콀보 μμ νλͺ©μ shadow DOM λ΄μ λ°°μΉλμ§ μκ³ λ³λμ μ¬λ‘―μ λ°°μΉλμ΄μΌ ν©λλ€.
μ΄κ²μ λ€μ μ£Όμ 릴리μ€μμ μ μ¬μ μΈ μ£Όμ λ³κ²½ μ¬νμΌλ‘ κ°μ£Όν μ μμ΅λλ€.
νλͺ©μ λ
ΈμΆνλ κ²μ κ°μ μ€ν¬λ‘€λ¬ κ΅¬μ± μμμ ν¨κ» μλνλ λ°©μμΌλ‘ μνλμ΄μΌ ν©λλ€( iron-list
μμ λ€λ₯Έ κ²μΌλ‘ νμ€ν λ³κ²½λ¨ - κ²°μ ν΄μΌ ν¨).