Files
rio/frontend/code/components/overlay.ts
T
2024-06-20 13:11:19 +02:00

38 lines
1.0 KiB
TypeScript

import { ComponentId } from '../dataModels';
import { ComponentBase, ComponentState } from './componentBase';
export type OverlayState = ComponentState & {
_type_: 'Overlay-builtin';
content?: ComponentId;
};
export class OverlayComponent extends ComponentBase {
state: Required<OverlayState>;
private overlayElement: HTMLElement;
createElement(): HTMLElement {
this.overlayElement = document.createElement('div');
this.overlayElement.classList.add('rio-overlay-content');
this.overlayElement.dataset.ownerId = `${this.id}`;
document
.querySelector('.rio-overlays-container')!
.appendChild(this.overlayElement);
return document.createElement('div');
}
updateElement(
deltaState: OverlayState,
latentComponents: Set<ComponentBase>
): void {
super.updateElement(deltaState, latentComponents);
this.replaceOnlyChild(
latentComponents,
deltaState.content,
this.overlayElement
);
}
}