blaze-2d
Version:
A fast and simple WebGL 2 2D game engine written in TypeScript
64 lines (62 loc) • 1.82 kB
JavaScript
import BlazeElement from "./element";
const fUHOvJbsFBcF = document.createElement("style");
fUHOvJbsFBcF.textContent = `.blzList {
display: flex;
flex-direction: column;
overflow-y: scroll;
padding: 0.5rem;
}
`;
document.head.appendChild(fUHOvJbsFBcF);
export default class BlazeList extends BlazeElement {
/**
* Create a {@link BlazeList}.
*
* @param autoScroll Wether or not new items should be scrolled into view
*/
constructor(autoScroll = true) {
const element = document.createElement("div");
element.classList.add("blzList");
super(element);
this.items = [];
this.autoScroll = autoScroll;
}
/**
* Adds the given items to the list.
*
* @param items The items to add
*/
addItems(...items) {
this.items.push(...items);
for (const item of items) {
this.element.appendChild(item.element);
}
const lastItem = items[items.length - 1];
if (this.autoScroll) {
if (this.element.scrollHeight - this.element.scrollTop <=
this.element.clientHeight + lastItem.element.clientHeight * 6)
this.element.scrollTo(0, this.element.scrollHeight);
}
}
removeItem(item) {
let index;
if (typeof item === "number") {
index = item;
}
else {
index = this.items.findIndex((curr) => curr === item);
}
if (index < 0 || index >= this.items.length)
return;
this.items[index].element.remove();
this.items.splice(index, 1);
}
/**
* Removes all items from the list.
*/
clearItems() {
this.items.length = 0;
this.element.replaceChildren();
}
}
//# sourceMappingURL=list.js.map