Styling: Host via property
The following example features 3 variations:
disabled
style differently if a property is settype
style if type has a certain valuewidth
map a property to a css variable
class MyEl extends LitElement {
static get properties() {
disabled: { type: Boolean, reflect: true },
width: { type: String },
type: { type: String, reflect: true },
}
static get styles() {
return css`
:host {
width: var(--my-el-width)px;
}
:host([disabled]) {
background: grey;
}
:host([type=bar]) {
background: green;
}
`;
}
constructor() {
super();
this.disabled = false;
this.width = '200px';
this.type = 'foo';
}
updated(changedProperties) {
if (changedProperties.has('width')) {
// this is only supported on evergreen browsers; for IE11 a little more work is needed
this.style.setProperty('--my-el-width', this.width);
}
}
}