diff --git a/src/css/document-blocked.css b/src/css/document-blocked.css new file mode 100644 index 000000000..a40ad0a32 --- /dev/null +++ b/src/css/document-blocked.css @@ -0,0 +1,147 @@ +/** + uBlock Origin - a browser extension to block requests. + Copyright (C) 2018-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +body { + font-size: large; + text-align: center; + } +body > div { + margin: 1.5em 0; + } +body > div > p, +body > div > div { + margin: 4px 0; + } +body > div > p:first-child { + margin: 1.5em 0 0 0; + } +a { + text-decoration: none; + } +button { + cursor: pointer; + margin: 0 1em 0.25em 1em; + padding: 0.25em 0.5em; + font-size: inherit; + } +select { + font: inherit; + padding: 2px; + } +.code { + background-color: rgba(0, 0, 0, 0.1); + font-family: monospace; + font-size: large; + line-height: 1; + padding: 4px; + word-break: break-all; + } +#warningSign { + opacity: 1; + pointer-events: none; + width: 100%; + } +#warningSign > span { + color: #f2a500; + font-size: 10em; + } +#theURL { + padding: 0; + } +#theURL > * { + margin: 0; + } +#theURL > p { + position: relative; + z-index: 10; + } +#theURL > p > span { + background-color: transparent; + top: 100%; + box-sizing: border-box; + cursor: pointer; + opacity: 0.5; + padding: 0.2em; + position: absolute; + transform: translate(0, -50%); + } +body[dir="ltr"] #theURL > p > span { + right: 0; + } +body[dir="rtl"] #theURL > p > span { + left: 0; + } +#theURL > p:hover > span { + opacity: 1; + } +#theURL > p > span:before { + content: '\f010'; + } +#theURL.collapsed > p > span:before { + content: '\f00e'; + } +#parsed { + background-color: #f8f8f8; + border: 1px solid rgba(0, 0, 0, 0.1); + border-top: none; + color: gray; + font-size: small; + overflow-x: hidden; + padding: 4px; + text-align: initial; + text-overflow: ellipsis; + } +#theURL.collapsed > #parsed { + display: none; + } +#parsed ul, #parsed li { + list-style-type: none; + } +#parsed li { + white-space: nowrap; + } +#parsed span { + display: inline-block; + } +#parsed span:first-of-type { + font-weight: bold; + } +#whyex { + font-size: smaller; + } +#whyex a { + white-space: nowrap; +} +.proceedChoice { + text-align: left; + } + +.filterList a { + opacity: 0.8; + } +.filterList a:hover { + opacity: 1; + } +.filterList:first-child .filterListSeparator { + display: none; + } +.filterList .filterListSupport[href=""] { + display: none; + } diff --git a/src/document-blocked.html b/src/document-blocked.html index a70493f0a..f4c2ecc84 100644 --- a/src/document-blocked.html +++ b/src/document-blocked.html @@ -47,7 +47,7 @@ -   diff --git a/src/js/document-blocked.js b/src/js/document-blocked.js index 09a76e257..b7a44e7be 100644 --- a/src/js/document-blocked.js +++ b/src/js/document-blocked.js @@ -21,12 +21,12 @@ /* global uDom */ +'use strict'; + /******************************************************************************/ (function() { -'use strict'; - /******************************************************************************/ var messaging = vAPI.messaging; @@ -44,14 +44,11 @@ var details = {}; (function() { var onReponseReady = function(response) { - if ( typeof response !== 'object' ) { - return; - } - var lists; - for ( var rawFilter in response ) { - if ( response.hasOwnProperty(rawFilter) === false ) { - continue; - } + if ( response instanceof Object === false ) { return; } + + let lists; + for ( let rawFilter in response ) { + if ( response.hasOwnProperty(rawFilter) === false ) { continue; } lists = response[rawFilter]; break; } @@ -59,19 +56,20 @@ var details = {}; if ( Array.isArray(lists) === false || lists.length === 0 ) { return; } + let parent = uDom.nodeFromSelector('#whyex > span:nth-of-type(2)'); - for ( let i = 0; i < lists.length; i++ ) { - let entry = lists[i]; - let elem = document.querySelector('#templates .filterList').cloneNode(true); + for ( let list of lists ) { + let elem = document.querySelector('#templates .filterList') + .cloneNode(true); let source = elem.querySelector('.filterListSource'); - source.href = 'asset-viewer.html?url=' + entry.assetKey; - source.textContent = entry.title; + source.href += encodeURIComponent(list.assetKey); + source.textContent = list.title; if ( - typeof entry.supportURL === 'string' && - entry.supportURL !== '' + typeof list.supportURL === 'string' && + list.supportURL !== '' ) { elem.querySelector('.filterListSupport') - .setAttribute('href', entry.supportURL); + .setAttribute('href', list.supportURL); } parent.appendChild(elem); } diff --git a/src/js/shortcuts.js b/src/js/shortcuts.js index 1eedabb1c..43551161e 100644 --- a/src/js/shortcuts.js +++ b/src/js/shortcuts.js @@ -24,10 +24,9 @@ (function() { // https://developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json/commands#Shortcut_values - let validStatus0Codes = new Map([ - [ 'AltLeft', 'Alt' ], - [ 'ControlLeft', 'Ctrl' ], - [ 'ControlRight', 'Ctrl' ], + let validStatus0Keys = new Map([ + [ 'alt', 'Alt' ], + [ 'control', 'Ctrl' ], ]); let validStatus1Keys = new Map([ [ 'a', 'A' ], @@ -137,9 +136,9 @@ return; } if ( status === 0 ) { - let key = validStatus0Codes.get(ev.code); - if ( key !== undefined ) { - after.add(key); + let keyName = validStatus0Keys.get(ev.key.toLowerCase()); + if ( keyName !== undefined ) { + after.add(keyName); updateCapturedShortcut(); status = 1; } @@ -166,8 +165,8 @@ ev.preventDefault(); ev.stopImmediatePropagation(); if ( status !== 1 ) { return; } - let key = validStatus0Codes.get(ev.code); - if ( key !== undefined && after.has(key) ) { + let keyName = validStatus0Keys.get(ev.key.toLowerCase()); + if ( keyName !== undefined && after.has(keyName) ) { after.clear(); updateCapturedShortcut(); status = 0;