31 lines
797 B
TypeScript
31 lines
797 B
TypeScript
// components/MergedWidget.ts
|
|
import { Widget } from './Widget';
|
|
|
|
export class MergedWidget extends Widget {
|
|
private children: Widget[] = [];
|
|
|
|
constructor(sizeType: 'default' | 'icon' = 'default') {
|
|
super(sizeType);
|
|
}
|
|
|
|
addWidget(widget: Widget): void {
|
|
this.children.push(widget);
|
|
}
|
|
|
|
render(): HTMLElement {
|
|
// Clear current container contents (in case render is called more than once)
|
|
this.container.innerHTML = '';
|
|
|
|
for (const widget of this.children) {
|
|
const rendered = widget.render();
|
|
|
|
// Move child nodes (not the container itself)
|
|
while (rendered.firstChild) {
|
|
this.container.appendChild(rendered.firstChild);
|
|
}
|
|
}
|
|
|
|
return this.container;
|
|
}
|
|
}
|