Files
rio/frontend/code/components/classContainer.ts
2025-03-11 19:14:15 +01:00

32 lines
980 B
TypeScript

import { ComponentBase, ComponentState, DeltaState } from "./componentBase";
import { ComponentId } from "../dataModels";
export type ClassContainerState = ComponentState & {
_type_: "ClassContainer-builtin";
content: ComponentId | null;
classes: string[];
};
export class ClassContainerComponent extends ComponentBase<ClassContainerState> {
createElement(): HTMLElement {
return document.createElement("div");
}
updateElement(
deltaState: DeltaState<ClassContainerState>,
latentComponents: Set<ComponentBase>
): void {
super.updateElement(deltaState, latentComponents);
this.replaceOnlyChild(latentComponents, deltaState.content);
if (deltaState.classes !== undefined) {
// Remove all old values
this.element.className = "rio-component rio-class-container";
// Add all new values
this.element.classList.add(...deltaState.classes);
}
}
}