| const { menavDetectVersion } = require('../shared'); |
|
|
| const createMenavEvents = require('./events'); |
| const getConfig = require('./getConfig'); |
| const updateElement = require('./updateElement'); |
| const addElement = require('./addElement'); |
| const removeElement = require('./removeElement'); |
| const getAllElements = require('./getAllElements'); |
|
|
| function getDefaultElementId(element) { |
| const type = element.getAttribute('data-type'); |
| if (type === 'nav-item') { |
| return element.getAttribute('data-id'); |
| } else if (type === 'social-link') { |
| return element.getAttribute('data-url'); |
| } else { |
| |
| return element.getAttribute('data-id') || element.getAttribute('data-name'); |
| } |
| } |
|
|
| function findDefaultElement(type, id) { |
| let selector; |
| if (type === 'nav-item') { |
| selector = `[data-type="${type}"][data-id="${id}"]`; |
| } else if (type === 'social-link') { |
| selector = `[data-type="${type}"][data-url="${id}"]`; |
| } else if (type === 'site') { |
| |
| return ( |
| document.querySelector(`[data-type="${type}"][data-url="${id}"]`) || |
| document.querySelector(`[data-type="${type}"][data-id="${id}"]`) || |
| document.querySelector(`[data-type="${type}"][data-name="${id}"]`) |
| ); |
| } else { |
| |
| return ( |
| document.querySelector(`[data-type="${type}"][data-id="${id}"]`) || |
| document.querySelector(`[data-type="${type}"][data-name="${id}"]`) |
| ); |
| } |
| return document.querySelector(selector); |
| } |
|
|
| |
| const existing = window.MeNav && typeof window.MeNav === 'object' ? window.MeNav : {}; |
| const events = |
| existing.events && typeof existing.events === 'object' ? existing.events : createMenavEvents(); |
|
|
| window.MeNav = Object.assign(existing, { |
| version: menavDetectVersion(), |
|
|
| getConfig: getConfig, |
|
|
| |
| _getElementId: getDefaultElementId, |
|
|
| |
| _findElement: findDefaultElement, |
|
|
| |
| updateElement: updateElement, |
| addElement: addElement, |
| removeElement: removeElement, |
| getAllElements: getAllElements, |
|
|
| |
| events: events, |
| }); |
|
|
| module.exports = window.MeNav; |
|
|