UNPKG

renaissance-spa

Version:
75 lines (65 loc) 1.91 kB
// Generated by CoffeeScript 2.7.0 (function () { // spa adapter var SpaAdapter; SpaAdapter = class SpaAdapter { constructor() { this.meta = { 'containerSelector': '.spa-container' }; this.pages = {}; this; } /* Get nodes by selector @param {string} selector @returns {object} NodeList */ // TODO: Should be moved to general utils module _getNodes(selector) { // try to use query selector all on slctr with attribute if (selector.match(/^.+\[.+\]$/)) { return document.querySelectorAll(slctr); } // default - use standard selector statements // node if (typeof selector === 'object') { return [selector]; // id } else if (selector.charAt(0) === '#') { selector = selector.substring(1); return [document.getElementById(selector)]; // class } else if (selector.charAt(0) === '.') { selector = selector.substring(1); return document.getElementsByClassName(selector); // tag } else if (typeof selector === 'string') { return document.getElementsByTagName(selector); } } /* Register a spa container @param {string} name @param {string} slctr @returns {*} */ register(name, slctr) { return this.pages[name] = slctr; } /* Go to given page @param {string} name @returns {*} */ goto(name) { var container, spaContainers; spaContainers = Array.from(this._getNodes(this.meta.containerSelector)); container = this._getNodes(this.pages[name])[0]; spaContainers.forEach(function (el, idx) { var cont; cont = spaContainers[idx]; return cont.style.display = 'none'; }); return container.style.display = 'block'; } }; module.exports = SpaAdapter; }).call(this); //# sourceMappingURL=Adapter.js.map