X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/7f902e41c7a6a18a754bb889c2655aa4fba736ec..refs/pull/1096/head:/resources/assets/js/components/index.js diff --git a/resources/assets/js/components/index.js b/resources/assets/js/components/index.js index 43466a0d9..768e0983f 100644 --- a/resources/assets/js/components/index.js +++ b/resources/assets/js/components/index.js @@ -6,23 +6,56 @@ let componentMapping = { 'notification': require('./notification'), 'chapter-toggle': require('./chapter-toggle'), 'expand-toggle': require('./expand-toggle'), + 'entity-selector-popup': require('./entity-selector-popup'), + 'entity-selector': require('./entity-selector'), + 'sidebar': require('./sidebar'), + 'page-picker': require('./page-picker'), + 'page-comments': require('./page-comments'), + 'wysiwyg-editor': require('./wysiwyg-editor'), + 'markdown-editor': require('./markdown-editor'), + 'editor-toolbox': require('./editor-toolbox'), + 'image-picker': require('./image-picker'), + 'collapsible': require('./collapsible'), + 'toggle-switch': require('./toggle-switch'), + 'page-display': require('./page-display'), + 'shelf-sort': require('./shelf-sort'), + 'homepage-control': require('./homepage-control'), }; window.components = {}; let componentNames = Object.keys(componentMapping); -for (let i = 0, len = componentNames.length; i < len; i++) { - let name = componentNames[i]; - let elems = document.querySelectorAll(`[${name}]`); - if (elems.length === 0) continue; +/** + * Initialize components of the given name within the given element. + * @param {String} componentName + * @param {HTMLElement|Document} parentElement + */ +function initComponent(componentName, parentElement) { + let elems = parentElement.querySelectorAll(`[${componentName}]`); + if (elems.length === 0) return; - let component = componentMapping[name]; - if (typeof window.components[name] === "undefined") window.components[name] = []; + let component = componentMapping[componentName]; + if (typeof window.components[componentName] === "undefined") window.components[componentName] = []; for (let j = 0, jLen = elems.length; j < jLen; j++) { - let instance = new component(elems[j]); - if (typeof elems[j].components === 'undefined') elems[j].components = {}; - elems[j].components[name] = instance; - window.components[name].push(instance); + let instance = new component(elems[j]); + if (typeof elems[j].components === 'undefined') elems[j].components = {}; + elems[j].components[componentName] = instance; + window.components[componentName].push(instance); } -} \ No newline at end of file +} + +/** + * Initialize all components found within the given element. + * @param parentElement + */ +function initAll(parentElement) { + if (typeof parentElement === 'undefined') parentElement = document; + for (let i = 0, len = componentNames.length; i < len; i++) { + initComponent(componentNames[i], parentElement); + } +} + +window.components.init = initAll; + +export default initAll; \ No newline at end of file