@randstad-design/orbit-multitheme
Version:
multitheme Front-end code based on Randstad Human Forward components
57 lines (48 loc) • 1.66 kB
JavaScript
const Mustache = require('mustache');
/**
* The templates tool loads a template with view data. It caches template scripts.
*
* Example: loader.load('/path/to/template.html', 'selector', container, data);
*/
export class Templates {
constructor() {
this.templates = {};
this.templateFiles = {};
this.data = {};
}
/**
* Render a template
* @param {Object} template html template
* @param {Node} container
* @param {Object} data
*/
static renderTemplate(template, container, data) {
// clear and fill the container
container.innerHTML = Mustache.render(template, data);
}
/**
* <parentElement><element><template></template></element></parentElement>
* @param template - template to render
* @param templateElement - element to render template in
* @param data - data for template
* @param parentElement - element to append the template to
*/
static prependTemplate(template, templateElement, data, parentElement) {
Templates.renderTemplate(template, templateElement, data);
parentElement.insertBefore(templateElement, parentElement.firstChild);
}
/**
* <parentElement><element><template></template></element></parentElement>
* @param template - template to render
* @param templateElement - element to render template in
* @param data - data for template
* @param parentElement - element to append the template to
*/
static appendTemplate(template, templateElement, data, parentElement) {
Templates.renderTemplate(template, templateElement, data);
parentElement.insertBefore(templateElement, null);
}
static getTemplateFromPage(id) {
return document.getElementById(id).innerHTML;
}
}