@jadis/create
Version:
Jadis boilerplate generator
73 lines (56 loc) • 1.67 kB
JavaScript
import { createElement, createSelector, html, Jadis } from '@jadis/core';
import style from './MainPage.css?inline';
import { myRouter } from '../../router';
import Counter from '../../components/counter';
import logo from '../../assets/logo.svg';
class MainPage extends Jadis {
static selector = createSelector('main-page');
templateHtml() {
return html`
<div class="header"></div>
<div>
<input type="text" placeholder="Enter your name" id="nameInput" />
<button id="greetButton">Greet</button>
</div>
<div class="wrapper"></div>
`;
}
templateCss() {
return style;
}
onConnect() {
createElement('img', { src: logo }, this.headerElement);
this.wrapperElement.replaceChildren(
...Array.from({ length: 3 }).map((_, i) => this.#createCounter(i))
);
this.on(this.buttonElement, 'click', () => this.#onButtonClick());
}
#onButtonClick() {
myRouter.gotoName('hello', { name: this.inputElement.value });
}
#createCounter(id) {
const counter = new Counter();
counter.events.register('change', (count) => {
return console.log(`Counter id ${id}:`, count);
});
return counter;
}
/** @returns {HTMLInputElement} */
get inputElement() {
return this.getElement('input');
}
/** @returns {HtmlButtonElement} */
get buttonElement() {
return this.getElement('button');
}
/** @returns {HTMLDivElement} */
get wrapperElement() {
return this.getElement('.wrapper');
}
/** @returns {HTMLDivElement} */
get headerElement() {
return this.getElement('.header');
}
}
MainPage.register();
export default MainPage;