diff options
Diffstat (limited to 'ext/mixed/js/display.js')
-rw-r--r-- | ext/mixed/js/display.js | 43 |
1 files changed, 31 insertions, 12 deletions
diff --git a/ext/mixed/js/display.js b/ext/mixed/js/display.js index f79ba303..2ee5b608 100644 --- a/ext/mixed/js/display.js +++ b/ext/mixed/js/display.js @@ -90,6 +90,10 @@ class Display extends EventDispatcher { this._contentScrollBodyElement = document.querySelector('#content-body'); this._contentScrollFocusElement = document.querySelector('#content-scroll-focus'); this._windowScroll = new WindowScroll(this._contentScrollElement); + this._contentSidebar = document.querySelector('#content-sidebar'); + this._closeButton = document.querySelector('#close-button'); + this._navigationPreviousButton = document.querySelector('#navigate-previous-button'); + this._navigationNextButton = document.querySelector('#navigate-next-button'); this.registerActions([ ['close', () => { this.onEscape(); }], @@ -406,6 +410,10 @@ class Display extends EventDispatcher { return query; } + close() { + // NOP + } + // Message handlers _onMessage({action, params}, sender, callback) { @@ -543,6 +551,11 @@ class Display extends EventDispatcher { this.setContent(details); } + _onCloseButtonClick(e) { + e.preventDefault(); + this.close(); + } + _onSourceTermView(e) { e.preventDefault(); this._sourceTermView(); @@ -769,16 +782,16 @@ class Display extends EventDispatcher { this._interactive = interactive; if (interactive) { - const actionPrevious = document.querySelector('.action-previous'); - const actionNext = document.querySelector('.action-next'); - this._persistentEventListeners.addEventListener(document, 'keydown', this.onKeyDown.bind(this), false); this._persistentEventListeners.addEventListener(document, 'wheel', this._onWheel.bind(this), {passive: false}); - if (actionPrevious !== null) { - this._persistentEventListeners.addEventListener(actionPrevious, 'click', this._onSourceTermView.bind(this)); + if (this._closeButton !== null) { + this._persistentEventListeners.addEventListener(this._closeButton, 'click', this._onCloseButtonClick.bind(this)); + } + if (this._navigationPreviousButton !== null) { + this._persistentEventListeners.addEventListener(this._navigationPreviousButton, 'click', this._onSourceTermView.bind(this)); } - if (actionNext !== null) { - this._persistentEventListeners.addEventListener(actionNext, 'click', this._onNextTermView.bind(this)); + if (this._navigationNextButton !== null) { + this._persistentEventListeners.addEventListener(this._navigationNextButton, 'click', this._onNextTermView.bind(this)); } } else { this._persistentEventListeners.removeAllEventListeners(); @@ -943,7 +956,7 @@ class Display extends EventDispatcher { errorExtensionUnloaded.hidden = false; } - this._updateNavigation(null, null); + this._updateNavigation(false, false); this._setNoContentVisible(false); this._setTitleText(''); } @@ -984,10 +997,16 @@ class Display extends EventDispatcher { } _updateNavigation(previous, next) { - if (this._navigationHeader === null) { return; } - this._navigationHeader.hidden = !(previous || next); - this._navigationHeader.dataset.hasPrevious = `${!!previous}`; - this._navigationHeader.dataset.hasNext = `${!!next}`; + if (this._contentSidebar !== null) { + this._contentSidebar.dataset.hasNavigationPrevious = `${previous}`; + this._contentSidebar.dataset.hasNavigationNext = `${next}`; + } + if (this._navigationPreviousButton !== null) { + this._navigationPreviousButton.disabled = !previous; + } + if (this._navigationNextButton !== null) { + this._navigationNextButton.disabled = !next; + } } async _updateAdderButtons(token, isTerms, definitions) { |