49 lines
1.3 KiB
JavaScript
49 lines
1.3 KiB
JavaScript
|
const { BrowserWindow } = require('electron').remote
|
||
|
const shell = require('electron').shell
|
||
|
|
||
|
const listenToWindowBtn = document.getElementById('listen-to-window')
|
||
|
const focusModalBtn = document.getElementById('focus-on-modal-window')
|
||
|
|
||
|
const links = document.querySelectorAll('a[href]')
|
||
|
|
||
|
let win
|
||
|
|
||
|
listenToWindowBtn.addEventListener('click', () => {
|
||
|
const modalPath = 'https://electronjs.org'
|
||
|
win = new BrowserWindow({ width: 600, height: 400 })
|
||
|
|
||
|
const hideFocusBtn = () => {
|
||
|
focusModalBtn.classList.add('disappear')
|
||
|
focusModalBtn.classList.remove('smooth-appear')
|
||
|
focusModalBtn.removeEventListener('click', clickHandler)
|
||
|
}
|
||
|
|
||
|
const showFocusBtn = (btn) => {
|
||
|
if (!win) return
|
||
|
focusModalBtn.classList.add('smooth-appear')
|
||
|
focusModalBtn.classList.remove('disappear')
|
||
|
focusModalBtn.addEventListener('click', clickHandler)
|
||
|
}
|
||
|
|
||
|
win.on('focus', hideFocusBtn)
|
||
|
win.on('blur', showFocusBtn)
|
||
|
win.on('close', () => {
|
||
|
hideFocusBtn()
|
||
|
win = null
|
||
|
})
|
||
|
win.loadURL(modalPath)
|
||
|
win.show()
|
||
|
|
||
|
const clickHandler = () => { win.focus() }
|
||
|
})
|
||
|
|
||
|
Array.prototype.forEach.call(links, (link) => {
|
||
|
const url = link.getAttribute('href')
|
||
|
if (url.indexOf('http') === 0) {
|
||
|
link.addEventListener('click', (e) => {
|
||
|
e.preventDefault()
|
||
|
shell.openExternal(url)
|
||
|
})
|
||
|
}
|
||
|
})
|