More or less finish rendering framework

This commit is contained in:
2025-10-20 11:09:18 +02:00
parent 7263ae6f5f
commit d35a47e4b0
6 changed files with 377 additions and 150 deletions

View File

@@ -0,0 +1,40 @@
import {
RenderTemplate,
StringIndexedObject
} from './rendering';
const renderList = <T extends StringIndexedObject>(
data: T,
template: RenderTemplate,
name: string, id: number
): HTMLElement => {
const parent = renderer( data, template );
parent.id = `${ name }--${ id }`;
return parent;
};
const renderer = <T extends StringIndexedObject>( data: T, template: RenderTemplate ): HTMLElement => {
const parent = document.createElement( template.type );
for ( let i = 0; i < template.children.length; i++ ) {
const element = template.children[i]!;
parent.appendChild( renderer( data, element ) );
}
if ( template.children.length === 0 ) {
if ( template.attribute ) {
parent.innerText = String( data[ template.attribute ] );
} else {
parent.innerText = String( data );
}
}
return parent;
};
export default {
renderList
};