diff options
author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2019-07-09 17:52:44 -0400 |
---|---|---|
committer | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2019-07-09 18:06:27 -0400 |
commit | ad897713e6acbcbd56962e8514ac866926da3cdd (patch) | |
tree | 7a16f525c2cc7a3ac2d1241544100f40091102fa /ext/fg/js | |
parent | 8b8482d2555342ee3e28b33f018b4246348e0702 (diff) |
Add support for custom popup CSS
Diffstat (limited to 'ext/fg/js')
-rw-r--r-- | ext/fg/js/float.js | 22 | ||||
-rw-r--r-- | ext/fg/js/popup.js | 13 |
2 files changed, 32 insertions, 3 deletions
diff --git a/ext/fg/js/float.js b/ext/fg/js/float.js index 1f08702d..1deb61a9 100644 --- a/ext/fg/js/float.js +++ b/ext/fg/js/float.js @@ -21,6 +21,7 @@ class DisplayFloat extends Display { constructor() { super($('#spinner'), $('#definitions')); this.autoPlayAudioTimer = null; + this.styleNode = null; $(window).on('message', utilAsync(this.onMessage.bind(this))); } @@ -62,6 +63,13 @@ class DisplayFloat extends Display { orphaned: () => { this.onOrphaned(); + }, + + setOptions: (options) => { + const css = options.general.customPopupCss; + if (css) { + this.setStyle(css); + } } }; @@ -101,6 +109,20 @@ class DisplayFloat extends Display { this.autoPlayAudioTimer = null; } } + + setStyle(css) { + const parent = document.head; + + if (this.styleNode === null) { + this.styleNode = document.createElement('style'); + } + + this.styleNode.textContent = css; + + if (this.styleNode.parentNode !== parent) { + parent.appendChild(this.styleNode); + } + } } window.yomichan_display = new DisplayFloat(); diff --git a/ext/fg/js/popup.js b/ext/fg/js/popup.js index ad81cf03..f5ccaf8b 100644 --- a/ext/fg/js/popup.js +++ b/ext/fg/js/popup.js @@ -29,10 +29,17 @@ class Popup { this.injected = null; } - inject() { + inject(options) { if (!this.injected) { this.injected = new Promise((resolve, reject) => { - this.container.addEventListener('load', resolve); + this.container.addEventListener('load', () => { + this.invokeApi('setOptions', { + general: { + customPopupCss: options.general.customPopupCss + } + }); + resolve(); + }); this.observeFullscreen(); this.onFullscreenChanged(); }); @@ -42,7 +49,7 @@ class Popup { } async show(elementRect, options) { - await this.inject(); + await this.inject(options); const containerStyle = window.getComputedStyle(this.container); const containerHeight = parseInt(containerStyle.height); |