diff --git a/src/display.js b/src/display.js index 0c438b3..c204d81 100644 --- a/src/display.js +++ b/src/display.js @@ -19,6 +19,13 @@ export class Display { } return target } + target.addEventListener('click', e => { + let target = findA(e.target) + if (!target) return + window.history.pushState(null, "", target.href) + dispatch(target.getAttribute('href')) + e.preventDefault() + }) target.addEventListener('dragstart', e => { let target = findA(e.target) if (!target || !target.draggable) return @@ -51,6 +58,9 @@ export class Display { 0.5 // Damping ) } + renderIntro(intro) { + this.target.appendChild(modal(intro)) + } render(state) { const target = document.createElement('div') target.className = 'wrapper' diff --git a/src/index.js b/src/index.js index 41da339..fc00b71 100644 --- a/src/index.js +++ b/src/index.js @@ -1,8 +1,6 @@ -import {modal, Display} from './display.js' +import {Display} from './display.js' import intro from './intro.js' -const target = document.createElement('div') - const state = {items: [], show: null, links: [] } import {items} from './data.js' @@ -51,23 +49,9 @@ const dispatch = target => { window.onpopstate = e => { dispatch(document.location.search) } -const findA = target => { - while (target.nodeName !== 'A') { - target = target.parentNode - if (!target) return - } - return target -} -document.body.addEventListener('click', e => { - let target = findA(e.target) - if (!target) return - window.history.pushState(null, "", target.href) - dispatch(target.getAttribute('href')) - e.preventDefault() -}) +const target = document.createElement('div') display = new Display('', dispatch, target) if (document.location.search) dispatch(document.location.search) -else document.body.appendChild(modal(intro)) +else display.renderIntro(intro) document.body.appendChild(target) -