lms-frontend/src/components/CompositeWidget.ts
2025-04-08 00:05:15 +08:00

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;
}
}