47 lines
960 B
TypeScript
47 lines
960 B
TypeScript
|
import { DeesElement, property, html, customElement, type TemplateResult, css, cssManager } from '@design.estate/dees-element';
|
||
|
import * as domtools from '@design.estate/dees-domtools';
|
||
|
|
||
|
declare global {
|
||
|
interface HTMLElementTagNameMap {
|
||
|
'first-element': FirstElement;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@customElement('first-element')
|
||
|
export class FirstElement extends DeesElement {
|
||
|
public static demo = () => html`
|
||
|
<first-element .aProp="${'test'}"></first-element>
|
||
|
`;
|
||
|
|
||
|
@property({
|
||
|
type: String
|
||
|
})
|
||
|
public aProp: string = 'loading...';
|
||
|
|
||
|
|
||
|
constructor() {
|
||
|
super();
|
||
|
domtools.DomTools.setupDomTools();
|
||
|
}
|
||
|
|
||
|
public static styles = [
|
||
|
cssManager.defaultStyles,
|
||
|
css`
|
||
|
:host {
|
||
|
display: block;
|
||
|
background: blue;
|
||
|
color: white;
|
||
|
padding: 10px;
|
||
|
text-align: center;
|
||
|
}
|
||
|
`
|
||
|
]
|
||
|
|
||
|
public render(): TemplateResult {
|
||
|
return html`
|
||
|
<div class="mainbox">
|
||
|
${this.aProp}
|
||
|
</div>
|
||
|
`;
|
||
|
}
|
||
|
}
|