From 4d809dae12de1661350e3377e28aa8f722ef8fdc Mon Sep 17 00:00:00 2001 From: Serraniel Date: Sat, 7 Nov 2020 18:47:58 +0100 Subject: [PATCH] #32 Implemented settings for CSS enhancements --- src/javascript/app.js | 5 ++ src/javascript/configuration/configuration.js | 13 ++-- .../enhancements/cssEnhancements.js | 69 +++++++++++++++++++ src/stylesheets/enhancements/_lists.scss | 2 +- src/stylesheets/enhancements/_tabs.scss | 2 +- 5 files changed, 82 insertions(+), 9 deletions(-) create mode 100644 src/javascript/enhancements/cssEnhancements.js diff --git a/src/javascript/app.js b/src/javascript/app.js index 8b14f9c..d34e051 100644 --- a/src/javascript/app.js +++ b/src/javascript/app.js @@ -9,6 +9,8 @@ import { init as languageDisplay } from './enhancements/languageDisplay'; import { init as notifications } from './enhancements/notifications'; import { init as quickSearch } from './enhancements/quickSearch'; import { init as watch2getherChat } from './enhancements/watch2getherChat'; +// css +import { init as cssEnhancements } from './enhancements/cssEnhancements'; // core initCore(); @@ -23,3 +25,6 @@ languageDisplay(); notifications(); quickSearch(); watch2getherChat(); + +// css +cssEnhancements(); \ No newline at end of file diff --git a/src/javascript/configuration/configuration.js b/src/javascript/configuration/configuration.js index ec02001..3e16999 100644 --- a/src/javascript/configuration/configuration.js +++ b/src/javascript/configuration/configuration.js @@ -2,19 +2,18 @@ import { getGlobalStorageProvider } from "../browserApi/storageProvider"; import { assigned } from "../utils/helpers"; // website -export const SETTINGS_websiteDisplayQuickSearch = 'websiteDisplayQuickSearch'; // -export const SETTINGS_websiteShowNotificationsCountInTab = 'websiteShowNotificationsCountInTab'; // +export const SETTINGS_websiteDisplayQuickSearch = 'websiteDisplayQuickSearch'; +export const SETTINGS_websiteShowNotificationsCountInTab = 'websiteShowNotificationsCountInTab'; export const SETTINGS_websiteHideUnusedTabs = 'websiteHideUnusedTabs'; export const SETTINGS_websiteOptimizeListAppearance = 'websiteOptimizeListAppearance'; // anime -export const SETTINGS_animeLanguageDisplay = 'animeLanguageDisplay'; // +export const SETTINGS_animeLanguageDisplay = 'animeLanguageDisplay'; // requests -export const SETTINGS_requestBeautifyPage = 'requestBeautifyPage'; // +export const SETTINGS_requestBeautifyPage = 'requestBeautifyPage'; // player -export const SETTINGS_playerAutoplayAfterScreenshot = 'playerAutoplayAfterScreenshot'; // +export const SETTINGS_playerAutoplayAfterScreenshot = 'playerAutoplayAfterScreenshot'; // w2g -export const SETTINGS_w2gDisplayCharacterCounter = 'w2gDisplayCharacterCounter'; // - +export const SETTINGS_w2gDisplayCharacterCounter = 'w2gDisplayCharacterCounter'; class Configuration { constructor() { this.settingsCache = new Map(); diff --git a/src/javascript/enhancements/cssEnhancements.js b/src/javascript/enhancements/cssEnhancements.js new file mode 100644 index 0000000..1e01766 --- /dev/null +++ b/src/javascript/enhancements/cssEnhancements.js @@ -0,0 +1,69 @@ +import { getGlobalConfiguration, SETTINGS_websiteHideUnusedTabs, SETTINGS_websiteOptimizeListAppearance } from '../configuration/configuration'; +import * as core from '../utils/aniwatchCore'; +import * as helper from '../utils/helpers'; + +export function init() { + getGlobalConfiguration().getProperty(SETTINGS_websiteHideUnusedTabs, value => { + // if disabled, add class to avoid our css optimizations + if (!value) { + let disableFunc = node => { + if (helper.isHtmlElement(node)) { + let disableNode = node => { + node.classList.add('awp-hide-unused-disabled') + } + + if (node.tagName === 'MD-TAB-ITEM') { + disableNode(node); + } + else { + node.querySelectorAll('md-tab-item').forEach(node => disableNode(node)); + } + } + }; + + core.registerScript(node => { + disableFunc(node); + }, ".*"); + + core.runAfterLoad(() => { + disableFunc(document.body); + }, ".*"); + + core.runAfterLocationChange(() => { + disableFunc(document.body); + }, ".*"); + } + }); + + getGlobalConfiguration().getProperty(SETTINGS_websiteOptimizeListAppearance, value => { + // if disabled, add class to avoid our css optimizations + if (!value) { + let disableFunc = node => { + if (helper.isHtmlElement(node)) { + let disableNode = node => { + node.classList.add('awp-list-disabled') + } + + if (node.tagName === 'MD-LIST-ITEM') { + disableNode(node); + } + else { + node.querySelectorAll('md-list-item').forEach(node => disableNode(node)); + } + } + } + + core.registerScript(node => { + disableFunc(node); + }, ".*"); + + core.runAfterLoad(() => { + disableFunc(document.body); + }, ".*"); + + core.runAfterLocationChange(() => { + disableFunc(document.body); + }, ".*"); + } + }); +} \ No newline at end of file diff --git a/src/stylesheets/enhancements/_lists.scss b/src/stylesheets/enhancements/_lists.scss index 078205e..3edef41 100644 --- a/src/stylesheets/enhancements/_lists.scss +++ b/src/stylesheets/enhancements/_lists.scss @@ -1,5 +1,5 @@ md-list-item { - &:not(:last-child) { + &:not(:last-child):not(.awp-list-disabled) { border-bottom: 1px solid $gray; } } diff --git a/src/stylesheets/enhancements/_tabs.scss b/src/stylesheets/enhancements/_tabs.scss index 899947a..3965c1f 100644 --- a/src/stylesheets/enhancements/_tabs.scss +++ b/src/stylesheets/enhancements/_tabs.scss @@ -1,6 +1,6 @@ md-tab-item { // hide disabled tabs - &.md-disabled { + &.md-disabled:not(.awp-hide-unused-disabled) { display: none; } }