From 0cabebdf196a41be1fe996844969a5a5285c9ce9 Mon Sep 17 00:00:00 2001 From: SirStendec Date: Wed, 11 Nov 2015 16:03:27 -0500 Subject: [PATCH] More style tweaking. Did a bit of work on the Chat Room Management menu (still disabled). Added server history to moderation cards. Fixed gulpfile to actually work with the new styles that are compiled into the script. --- dark.css | 40 +--- gulpfile.js | 15 +- src/badges.js | 2 + src/ember/chatview.js | 10 +- src/ember/moderation-card.js | 111 ++++++++-- src/ember/room.js | 15 +- src/ext/betterttv.js | 1 + src/main.js | 2 +- src/styles/chat-background.css | 39 ++-- src/styles/chat-separator-3d-inset.css | 6 +- src/styles/chat-separator-3d.css | 6 +- src/styles/chat-separator-wide.css | 6 +- src/styles/chat-separator.css | 6 +- src/ui/styles.js | 4 +- style.css | 295 ++++++++++++++++--------- 15 files changed, 336 insertions(+), 222 deletions(-) diff --git a/dark.css b/dark.css index 0f33d367..696bc969 100644 --- a/dark.css +++ b/dark.css @@ -63,35 +63,6 @@ color: #fff !important; } -/* moderation card */ - -.ember-chat-container.dark .ember-chat .ffz-moderation-card, -.chat-container.dark .ember-chat .ffz-moderation-card, -.app-main.theatre .ember-chat .ffz-moderation-card { - border-color: #1b1b20; -} - -.ember-chat-container.dark .ember-chat .moderation-card:focus, -.chat-container.dark .ember-chat .moderation-card:focus, -.app-main.theatre .ember-chat .moderation-card:focus { - border-color: #cbcbcb; -} - -.ember-chat-container.dark .ember-chat .moderation-card .interface, -.chat-container.dark .ember-chat .moderation-card .interface, -.app-main.theatre .ember-chat .moderation-card .interface { - background-color: #232329; -} - -.ffz-no-blue .ember-chat-container.dark .ember-chat .moderation-card .interface, -.ffz-no-blue .chat-container.dark .ember-chat .moderation-card .interface, -.ffz-no-blue .app-main.theatre .ember-chat .moderation-card .interface { - background-color: #232323; -} - -.moderation-card h3.name a { color: #fff !important; } - - /* stats */ .ffz-dark .stats-and-actions, .ffz-dark #main_col .content #stats_and_actions { @@ -531,7 +502,7 @@ /* FrankerFaceZ Menu */ -.ffz-dark .ember-chat .chat-menu .list-header { +/*.ffz-dark .ember-chat .chat-menu .list-header { border-top-color: rgba(255,255,255,0.2); } @@ -553,7 +524,7 @@ .ffz-dark .ffz-ui-popup ul.menu li.active a { border-top-color: rgb(16,16,16); -} +}*/ /* New User Prompt */ @@ -975,7 +946,7 @@ } .ffz-dark .conversations-list .conversations-list-header { - background: #19191f; + background: #121218; border-bottom: 1px solid #32323e; color: #fff } @@ -989,7 +960,7 @@ } .ffz-dark .conversations-list .conversations-list-item:hover { - background-color: #121217 + background-color: #121218; } .ffz-dark .conversation-window { @@ -1007,6 +978,9 @@ .ffz-dark .conversation-header { background: #121217; box-shadow: none; +} + +.ffz-dark .conversation-window:not(.collapsed) .conversation-header { border-bottom: 1px solid rgba(255,255,255,0.2); } diff --git a/gulpfile.js b/gulpfile.js index 97ff6c69..071873ab 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -45,7 +45,7 @@ gulp.task('prepare', ['clean'], function() { //gulp.task('templates', ['prepare'], function() { -// gulp.src(['build/templates/**/*.hbs']) +// return gulp.src(['build/templates/**/*.hbs']) // .pipe(jsEscape()) // .pipe(wrap('Handlebars.compile(<%= contents %>)')) // .pipe(declare({ @@ -63,7 +63,7 @@ gulp.task('prepare', ['clean'], function() { gulp.task('styles', ['prepare'], function() { - gulp.src(['build/styles/**/*.css']) + return gulp.src(['build/styles/**/*.css']) .pipe(minifyCss()) .pipe(jsEscape()) .pipe(declare({ @@ -74,14 +74,14 @@ gulp.task('styles', ['prepare'], function() { return declare.processNameByPath((match && match.length > 1) ? match[1] : filePath); } })) - .pipe(concat('styles.js')) + .pipe(concat('compiled_styles.js')) .pipe(gulp.dest('build/')) .on('error', util.log) }); -gulp.task('scripts', ['prepare', 'styles'], function() { - gulp.src(['build/main.js']) +gulp.task('scripts', ['styles'], function() { + return gulp.src(['build/main.js']) .pipe(browserify()) .pipe(concat('script.js')) .pipe(header('(function(window) {')) @@ -94,7 +94,7 @@ gulp.task('scripts', ['prepare', 'styles'], function() { }); gulp.task('watch', ['default', 'server'], function() { - gulp.watch('src/**/*', ['default']); + return gulp.watch('src/**/*', ['default']); }); gulp.task('default', ['scripts']); @@ -130,7 +130,7 @@ gulp.task('upload', ['default'], function() { .on('error', util.log); }); -gulp.task('clear_cache', ['upload'], function() { +gulp.task('clear_cache', ['upload'], function(cb) { // Load credentials from an external file. var contents = fs.readFileSync('credentials.json', 'utf8'), cred = JSON.parse(contents); @@ -167,6 +167,7 @@ gulp.task('clear_cache', ['upload'], function() { return util.log("[FAIL] Non-200 Status: " + request.statusCode); util.log("[SUCCESS] Cache cleared."); + cb(); }); }); diff --git a/src/badges.js b/src/badges.js index 8069db51..453e0301 100644 --- a/src/badges.js +++ b/src/badges.js @@ -88,6 +88,7 @@ FFZ.settings_info.transparent_badges = { this.toggle_style('badges-blank', val === 3 || val === 4); this.toggle_style('badges-circular-small', val === 4); this.toggle_style('badges-transparent', val === 5); + document.body.classList.toggle('ffz-transparent-badges', val === 5); } }; @@ -104,6 +105,7 @@ FFZ.prototype.setup_badges = function() { this.toggle_style('badges-blank', val === 3 || val === 4); this.toggle_style('badges-circular-small', val === 4); this.toggle_style('badges-transparent', val === 5); + document.body.classList.toggle('ffz-transparent-badges', val === 5); } this.toggle_style('badges-legacy', this.settings.legacy_badges === 3); diff --git a/src/ember/chatview.js b/src/ember/chatview.js index 4170960e..e49f0c1d 100644 --- a/src/ember/chatview.js +++ b/src/ember/chatview.js @@ -716,10 +716,10 @@ FFZ.prototype._modify_cview = function(view) { tabs.innerHTML = ""; var link = document.createElement('a'), - view = this, - total_unread = 0; + view = this; + //total_unread = 0; - for(var room_id in f.rooms) { + /*for(var room_id in f.rooms) { var room = f.rooms[room_id] && f.rooms[room_id].room, is_unread = room && room.get('unreadCount') > 0; @@ -728,11 +728,11 @@ FFZ.prototype._modify_cview = function(view) { total_unread++; } else if ( room ) room._ffz_was_unread = false; - } + }*/ link.className = 'button glyph-only tooltip'; link.title = "Chat Room Management"; - link.innerHTML = constants.ROOMS + '' + (total_unread || '') + ''; + link.innerHTML = constants.ROOMS; // + '' + (total_unread || '') + ''; link.addEventListener('click', function() { var controller = view.get('controller'); diff --git a/src/ember/moderation-card.js b/src/ember/moderation-card.js index 83929d55..536dafc8 100644 --- a/src/ember/moderation-card.js +++ b/src/ember/moderation-card.js @@ -724,38 +724,82 @@ FFZ.prototype.setup_mod_card = function() { if ( f.settings.mod_card_history ) { var Chat = App.__container__.lookup('controller:chat'), room = Chat && Chat.get('currentRoom'), - ffz_room = room && f.rooms && f.rooms[room.get('id')], - user_history = ffz_room && ffz_room.user_history && ffz_room.user_history[controller.get('cardInfo.user.id')]; + tmiSession = room.tmiSession || (window.TMI && TMI._sessions && TMI._sessions[0]), + room_id = room.get('id'), + user_id = controller.get('cardInfo.user.id'), + ffz_room = room && f.rooms && f.rooms[room_id], + user_history = ffz_room && ffz_room.user_history && ffz_room.user_history[user_id] || [], - if ( user_history && user_history.length ) { - var history = document.createElement('ul'); - history.className = 'interface clearfix chat-history'; + history = document.createElement('ul'); - for(var i=0; i < user_history.length; i++) { - var line = user_history[i], - l_el = document.createElement('li'); + history.className = 'interface clearfix chat-history'; - l_el.className = 'message-line chat-line clearfix'; + if ( user_history.length < 20 ) { + var before = user_history.length > 0 ? user_history[0].date.getTime() : Date.now(); + f.ws_send("user_history", [room_id, user_id, 50 - user_history.length], function(success, data) { + if ( ! success ) + return; - if ( line.style ) - l_el.classList.add(line.style); + var i = data.length, + was_at_top = history && history.scrollTop >= (history.scrollHeight - history.clientHeight), + first = true; - l_el.innerHTML = (helpers ? '' + helpers.getTime(line.date) + ' ' : '') + '' + (line.style === 'action' ? '*' + line.from + ' ' : '') + f.render_tokens(line.cachedTokens) + ''; + while(i--) { + var msg = data[i]; + if ( ! msg ) + continue; - // Interactivity - jQuery('a.deleted-link', l_el).click(f._deleted_link_click); - jQuery('img.emoticon', l_el).click(function(e) { f._click_emote(this, e) }); - jQuery('.html-tooltip', l_el).tipsy({html:true}); + if ( typeof msg.date === "string" || typeof msg.date === "number" ) + msg.date = utils.parse_date(msg.date); - // Append - history.appendChild(l_el); - } + if ( ! msg.date || msg.date.getTime() >= before ) + continue; - el.appendChild(history); + if ( first ) { + first = false; + history.insertBefore(f._build_mod_card_history({ + date: msg.date, + from: "jtv", + style: "admin", + cachedTokens: ["(Server History Above)"] + }), history.firstElementChild); + } - // Lazy scroll-to-bottom - history.scrollTop = history.scrollHeight; + if ( ! msg.style ) { + if ( msg.from === "jtv" ) + msg.style = "admin"; + else if ( msg.from === "twitchnotify" ) + msg.style = "notification"; + } + + if ( msg.tags && typeof msg.tags.emotes === "string" ) + try { + msg.tags.emotes = JSON.parse(msg.tags.emotes); + } catch(err) { + f.log("Error Parsing JSON Emotes: " + err); + msg.tags.emotes = {}; + } + + if ( ! msg.cachedTokens || ! msg.cachedTokens.length ) + f.tokenize_chat_line(msg, true, room.get('roomProperties.hide_chat_links')); + + history.insertBefore(f._build_mod_card_history(msg), history.firstElementChild); + if ( history.childElementCount >= 50 ) + break; + } + + if ( was_at_top ) + setTimeout(function() { history.scrollTop = history.scrollHeight; }); + }); } + + for(var i=0; i < user_history.length; i++) + history.appendChild(f._build_mod_card_history(user_history[i])); + + el.appendChild(history); + + // Lazy scroll-to-bottom + history.scrollTop = history.scrollHeight; } // Reposition the menu if it's off-screen. @@ -785,6 +829,29 @@ FFZ.prototype.setup_mod_card = function() { } +FFZ.prototype._build_mod_card_history = function(line) { + var l_el = document.createElement('li'), + f = this; + + l_el.className = 'message-line chat-line clearfix'; + + if ( line.ffz_has_mention ) + l_el.classList.add('ffz-mentioned'); + + if ( line.style ) + l_el.classList.add(line.style); + + l_el.innerHTML = (helpers ? '' + helpers.getTime(line.date) + ' ' : '') + '' + (line.style === 'action' ? '*' + line.from + ' ' : '') + f.render_tokens(line.cachedTokens) + ''; + + // Interactivity + jQuery('a.deleted-link', l_el).click(f._deleted_link_click); + jQuery('img.emoticon', l_el).click(function(e) { f._click_emote(this, e) }); + jQuery('.html-tooltip', l_el).tipsy({html:true}); + + return l_el; +} + + // ---------------- // Aliases // ---------------- diff --git a/src/ember/room.js b/src/ember/room.js index 079a9c97..885366d7 100644 --- a/src/ember/room.js +++ b/src/ember/room.js @@ -1201,20 +1201,7 @@ FFZ.prototype._modify_room = function(room) { was_at_top = history && history.scrollTop >= (history.scrollHeight - history.clientHeight); if ( history ) { - var l_el = document.createElement('li'); - l_el.className = 'message-line chat-line clearfix'; - - if ( msg.style ) - l_el.classList.add(msg.style); - - l_el.innerHTML = (helpers ? '' + helpers.getTime(msg.date) + ' ' : '') + '' + (msg.style === 'action' ? '*' + msg.from + ' ' : '') + f.render_tokens(msg.cachedTokens) + ''; - - // Interactivity - jQuery('a.deleted-link', l_el).click(f._deleted_link_click); - jQuery('img.emoticon', l_el).click(function(e) { f._click_emote(this, e) }); - jQuery('.html-tooltip', l_el).tipsy({html:true}); - - history.appendChild(l_el); + history.appendChild(f._build_mod_card_history(msg)); if ( was_at_top ) setTimeout(function() { history.scrollTop = history.scrollHeight; }) diff --git a/src/ext/betterttv.js b/src/ext/betterttv.js index 8ea6a260..06d2637c 100644 --- a/src/ext/betterttv.js +++ b/src/ext/betterttv.js @@ -77,6 +77,7 @@ FFZ.prototype.setup_bttv = function(delay) { this.toggle_style('badges-transparent'); // Disable other features too. + document.body.classList.remove('ffz-transparent-badges'); document.body.classList.remove("ffz-sidebar-swap"); document.body.classList.remove("ffz-portrait"); document.body.classList.remove("ffz-flip-dashboard"); diff --git a/src/main.js b/src/main.js index 2459a354..ed9f7ae0 100644 --- a/src/main.js +++ b/src/main.js @@ -22,7 +22,7 @@ FFZ.get = function() { return FFZ.instance; } // Version var VER = FFZ.version_info = { - major: 3, minor: 5, revision: 63, + major: 3, minor: 5, revision: 65, toString: function() { return [VER.major, VER.minor, VER.revision].join(".") + (VER.extra || ""); } diff --git a/src/styles/chat-background.css b/src/styles/chat-background.css index 3df6b9d3..1b6246bc 100644 --- a/src/styles/chat-background.css +++ b/src/styles/chat-background.css @@ -14,10 +14,10 @@ .theatre .chat-history .chat-line:nth-child(2n+0):before, .theatre .ember-chat .chat-lines > div:nth-child(2n+0) .chat-line:before, -.chat-container.dark .chat-lines > div:nth-child(2n+0) .chat-line:before, -.ember-chat-container.dark .chat-lines > div:nth-child(2n+0) .chat-line:before, -.chat-container.force-dark .chat-lines > div:nth-child(2n+0) .chat-line:before, -.ember-chat-container.force-dark .chat-lines > div:nth-child(2n+0) .chat-line:before { +.dark .chat-history .chat-line:nth-child(2n+0):before, +.force-dark .chat-history .chat-line:nth-child(2n+0):before, +.dark .chat-lines > div:nth-child(2n+0) .chat-line:before, +.force-dark .chat-lines > div:nth-child(2n+0) .chat-line:before { background-color: rgba(255,255,255, 0.05); } @@ -38,21 +38,20 @@ /* DEPRECIATED: DARK THEME: Mention Backgrounds */ .ffz-dark .chat-history .chat-line.ffz-mentioned:before, -.theatre .ember-chat .chat-line.ffz-mentioned:before, -.chat-container.dark .chat-line.ffz-mentioned:before, -.chat-container.force-dark .chat-line.ffz-mentioned:before, -.ember-chat-container.dark .chat-line.ffz-mentioned:before, -.ember-chat-container.force-dark .chat-line.ffz-mentioned:before { +.theatre .chat-line.ffz-mentioned:before, +.dark .chat-line.ffz-mentioned:before, +.force-dark .chat-line.ffz-mentioned:before { background-color: rgba(255,0,0, 0.2) !important; } .theatre .chat-lines > div:nth-child(2n+0) .chat-line.ffz-mentioned:before, -.chat-container.dark .chat-lines > div:nth-child(2n+0) .chat-line.ffz-mentioned:before, -.ember-chat-container.dark .chat-lines > div:nth-child(2n+0) .chat-line.ffz-mentioned:before, -.chat-container.force-dark .chat-lines > div:nth-child(2n+0) .chat-line.ffz-mentioned:before, -.ember-chat-container.force-dark .chat-lines > div:nth-child(2n+0) .chat-line.ffz-mentioned:before { +.dark .chat-history .chat-line.ffz-mentioned:nth-child(2n+0):before, +.force-dark .chat-history .chat-line.ffz-mentioned:nth-child(2n+0):before, + +.dark .chat-lines > div:nth-child(2n+0) .chat-line.ffz-mentioned:before, +.force-dark .chat-lines > div:nth-child(2n+0) .chat-line.ffz-mentioned:before { background-color: rgba(255,0,0, 0.3) !important; } @@ -61,17 +60,13 @@ /* Chat Mentions */ /* TODO: Move this by itself */ -.ember-chat .mentioned:empty, -.ember-chat .mentioning:empty, -.chat-history .mentioned:empty, -.chat-history .mentioning:empty { +.mentioned:empty, +.mentioning:empty { display: none; } -.ember-chat .chat-line .mentioned, -.ember-chat .chat-line .mentioning, -.chat-history .chat-line .mentioned, -.chat-history .chat-line .mentioning { +.chat-line .mentioned, +.chat-line .mentioning { border-radius: 10px; padding: 3px 7px; font-weight: bold; @@ -83,6 +78,8 @@ .ffz-dark .chat-history .mentioned, .ffz-dark .chat-history .mentioning, +.app-main.theatre .chat-container .chat-line .mentioned, +.app-main.theatre .chat-container .chat-line .mentioning, .chat-container.dark .chat-line .mentioned, .chat-container.dark .chat-line .mentioning, .chat-container.force-dark .chat-line .mentioned, diff --git a/src/styles/chat-separator-3d-inset.css b/src/styles/chat-separator-3d-inset.css index 207c57a5..0f64d2ca 100644 --- a/src/styles/chat-separator-3d-inset.css +++ b/src/styles/chat-separator-3d-inset.css @@ -10,10 +10,8 @@ .theatre .conversation-chat-lines > div:before, .theatre .chat-line:before, -.chat-container.dark .chat-line:before, -.chat-container.force-dark .chat-line:before, -.ember-chat-container.dark .chat-line:before, -.ember-chat-container.force-dark .chat-line:before { +.dark .chat-line:before, +.force-dark .chat-line:before { border-top-color: #000; border-bottom-color: rgba(255,255,255, 0.1); } \ No newline at end of file diff --git a/src/styles/chat-separator-3d.css b/src/styles/chat-separator-3d.css index 92d17ce5..a4b17c1a 100644 --- a/src/styles/chat-separator-3d.css +++ b/src/styles/chat-separator-3d.css @@ -9,9 +9,7 @@ .theatre .conversation-chat-lines > div:before, .theatre .chat-line:before, -.chat-container.dark .chat-line:before, -.chat-container.force-dark .chat-line:before, -.ember-chat-container.dark .chat-line:before, -.ember-chat-container.force-dark .chat-line:before { +.dark .chat-line:before, +.force-dark .chat-line:before { border-top-color: rgba(255,255,255, 0.1); } \ No newline at end of file diff --git a/src/styles/chat-separator-wide.css b/src/styles/chat-separator-wide.css index 287dd1bf..d7d22f18 100644 --- a/src/styles/chat-separator-wide.css +++ b/src/styles/chat-separator-wide.css @@ -9,9 +9,7 @@ .theatre .conversation-chat-lines > div:before, .theatre .chat-line:before, -.chat-container.dark .chat-line:before, -.chat-container.force-dark .chat-line:before, -.ember-chat-container.dark .chat-line:before, -.ember-chat-container.force-dark .chat-line:before { +.dark .chat-line:before, +.force-dark .chat-line:before { border-top-color: #000; } \ No newline at end of file diff --git a/src/styles/chat-separator.css b/src/styles/chat-separator.css index ca798fee..2aad25cd 100644 --- a/src/styles/chat-separator.css +++ b/src/styles/chat-separator.css @@ -9,10 +9,8 @@ .theatre .conversation-chat-lines > div:before, .theatre .chat-line:before, -.chat-container.dark .chat-line:before, -.chat-container.force-dark .chat-line:before, -.ember-chat-container.dark .chat-line:before, -.ember-chat-container.force-dark .chat-line:before { +.dark .chat-line:before, +.force-dark .chat-line:before { border-bottom-color: #000; } diff --git a/src/ui/styles.js b/src/ui/styles.js index 39465d82..b8b8a4b0 100644 --- a/src/ui/styles.js +++ b/src/ui/styles.js @@ -1,7 +1,7 @@ var FFZ = window.FrankerFaceZ, utils = require('../utils'), constants = require('../constants'); - styles = require('../styles'); + styles = require('../compiled_styles'); FFZ.prototype.setup_css = function() { document.body.classList.toggle('ffz-flip-dashboard', this.settings.flip_dashboard); @@ -49,6 +49,6 @@ FFZ.prototype.toggle_style = function(key, enabled) { return; this._toggle_style_state[key] = enabled; - + utils.update_css(this._toggle_style, key, enabled ? styles[key] || null : null); } \ No newline at end of file diff --git a/style.css b/style.css index 847cd8fe..0a3af431 100644 --- a/style.css +++ b/style.css @@ -290,7 +290,7 @@ body:not(.ffz-minimal-chat-input):not(.ffz-menu-replace) .emoticon-selector-togg .ffz-theater-stats .app-main.theatre .channel-stats .stat { color: #aaa; } .ffz-theater-stats .app-main.theatre .channel-stats span:not(.live-count) svg path { - fill: rgba(255,255,255,0.35) !important; + fill: rgba(255,255,255,0.35); } .ffz-theater-stats .app-main.theatre .follow-button .notify:before, @@ -443,6 +443,76 @@ body:not(.ffz-minimal-chat-input):not(.ffz-menu-replace) .emoticon-selector-togg #ffz-race-popup table th { border-bottom: 1px solid; } +/* Dark Menu */ + +#ffz-chat-menu { background-color: transparent !important; } + +.ffz-dark .ember-chat .chat-menu .list-header, +.theatre .ember-chat .chat-menu .list-header, +.dark .ember-chat .chat-menu .list-header, +.force-dark .ember-chat .chat-menu .list-header { + border-top-color: rgba(255,255,255, 0.2); +} + +.ffz-dark .chat-menu.ffz-ui-popup .ffz-ui-menu-page .chat-menu-content .heading, +.theatre .chat-menu.ffz-ui-popup .ffz-ui-menu-page .chat-menu-content .heading, +.dark .chat-menu.ffz-ui-popup .ffz-ui-menu-page .chat-menu-content .heading, +.force-dark .chat-menu.ffz-ui-popup .ffz-ui-menu-page .chat-menu-content .heading, + +.ffz-dark .chat-menu.ffz-ui-popup .ffz-ui-menu-page .emoticon-grid .heading, +.theatre .chat-menu.ffz-ui-popup .ffz-ui-menu-page .emoticon-grid .heading, +.dark .chat-menu.ffz-ui-popup .ffz-ui-menu-page .emoticon-grid .heading, +.force-dark .chat-menu.ffz-ui-popup .ffz-ui-menu-page .emoticon-grid .heading, + +.ffz-dark .ffz-ui-popup ul.menu, +.theatre .ffz-ui-popup ul.menu, +.dark .ffz-ui-popup ul.menu, +.force-dark .ffz-ui-popup ul.menu, + +.ffz-dark .ffz-ui-popup ul.menu a, +.theatre .ffz-ui-popup ul.menu a, +.dark .ffz-ui-popup ul.menu a, +.force-dark .ffz-ui-popup ul.menu a, + +.ffz-sidebar-swap.ffz-dark .ffz-ui-popup ul.menu a, +.ffz-sidebar-swap .theatre .ffz-ui-popup ul.menu a, +.ffz-sidebar-swap .dark .ffz-ui-popup ul.menu a, +.ffz-sidebar-swap .force-dark .ffz-ui-popup ul.menu a { + border-color: #32323e; +} + +.ffz-dark .ffz-ui-popup ul.menu, +.theatre .ffz-ui-popup ul.menu, +.dark .ffz-ui-popup ul.menu, +.force-dark .ffz-ui-popup ul.menu { + background-color: #212121; +} + +.ffz-dark .ffz-ui-popup ul.menu li.active, +.theatre .ffz-ui-popup ul.menu li.active, +.dark .ffz-ui-popup ul.menu li.active, +.force-dark .ffz-ui-popup ul.menu li.active { + background-color: #101010; +} + +.ffz-dark .ffz-ui-popup ul.menu li.active a, +.theatre .ffz-ui-popup ul.menu li.active a, +.dark .ffz-ui-popup ul.menu li.active a, +.force-dark .ffz-ui-popup ul.menu li.active a { + border-top-color: #101010; +} + +.ffz-dark .ffz-ui-popup.emoticon-selector .emoticon-selector-box, +.theatre .ffz-ui-popup.emoticon-selector .emoticon-selector-box, +.dark .ffz-ui-popup.emoticon-selector .emoticon-selector-box, +.force-dark .ffz-ui-popup.emoticon-selector .emoticon-selector-box { + background-color: #101010; + color: #c3c3c3; + border-color: #32323e; +} + + + /* Menu Options */ .emoticon-selector .emoticon-selector-box .subscribe-message { @@ -598,7 +668,7 @@ body:not(.ffz-minimal-chat-input):not(.ffz-menu-replace) .emoticon-selector-togg pointer-events: auto; } -.ember-chat .chat-interface .ffz-ui-popup.emoticon-selector .emoticon-selector-box .emoticon-grid { background-color: transparent; } +.ember-chat .chat-interface .ffz-ui-popup.emoticon-selector .emoticon-selector-box .emoticon-grid { background-color: transparent !important; } .app-main.theatre .ffz-ui-popup ul.menu, .chat-container.dark .ffz-ui-popup ul.menu, @@ -852,21 +922,27 @@ span.ffz-handle:after { left: 8px } box-shadow: 0 0 1px 1px rgba(255,255,255,0.25); } -.ffz-dark .chat-history::-webkit-scrollbar-thumb, .ffz-dark .table::-webkit-scrollbar-thumb, .ffz-dark .conversation-window .conversation-content::-webkit-scrollbar-thumb, .ffz-dark .conversations-list .conversations-list-inner::-webkit-scrollbar-thumb, -.app-main.theatre .conversation-window .conversation-content::-webkit-scrollbar-thumb, -.app-main.theatre .conversations-list .conversations-list-inner::-webkit-scrollbar-thumb, -.ember-chat-container.dark .emoticon-selector-box .all-emotes::-webkit-scrollbar-thumb, -.chat-container.dark .emoticon-selector-box .all-emotes::-webkit-scrollbar-thumb, -.app-main.theatre .emoticon-selector-box .all-emotes::-webkit-scrollbar-thumb, -.ember-chat-container.dark .ffz-ui-menu-page::-webkit-scrollbar-thumb, -.chat-container.dark .ffz-ui-menu-page::-webkit-scrollbar-thumb, -.app-main.theatre .ffz-ui-menu-page::-webkit-scrollbar-thumb, -.ember-chat-container.dark .ffz-ui-sub-menu-page::-webkit-scrollbar-thumb, -.chat-container.dark .ffz-ui-sub-menu-page::-webkit-scrollbar-thumb, -.app-main.theatre .ffz-ui-sub-menu-page::-webkit-scrollbar-thumb { + +.theatre .conversation-window .conversation-content::-webkit-scrollbar-thumb, +.theatre .conversations-list .conversations-list-inner::-webkit-scrollbar-thumb, + +.theatre .chat-history::-webkit-scrollbar-thumb, +.theatre .emoticon-selector-box .all-emotes::-webkit-scrollbar-thumb, +.theatre .ffz-ui-menu-page::-webkit-scrollbar-thumb, +.theatre .ffz-ui-sub-menu-page::-webkit-scrollbar-thumb + +.dark .chat-history::-webkit-scrollbar-thumb, +.dark .emoticon-selector-box .all-emotes::-webkit-scrollbar-thumb, +.dark .ffz-ui-menu-page::-webkit-scrollbar-thumb, +.dark .ffz-ui-sub-menu-page::-webkit-scrollbar-thumb, + +.force-dark .chat-history::-webkit-scrollbar-thumb, +.force-dark .emoticon-selector-box .all-emotes::-webkit-scrollbar-thumb, +.force-dark .ffz-ui-menu-page::-webkit-scrollbar-thumb, +.force-dark .ffz-ui-sub-menu-page::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.6); box-shadow: 0 0 1px 1px rgba(0,0,0,0.25); } @@ -875,25 +951,25 @@ span.ffz-handle:after { left: 8px } img.channel_background[src="null"] { display: none; } -.ember-chat .ffz-moderation-card { +.ffz-moderation-card { border: 2px solid #cbcbcb; max-width: 340px; /*box-shadow: #808080 0 0 5px;*/ } -.ember-chat .ffz-moderation-card .extra-interface { +.ffz-moderation-card .extra-interface { padding-top: 0; } -.ember-chat .ffz-moderation-card .extra-interface + .extra-interface { +.ffz-moderation-card .extra-interface + .extra-interface { margin-top: -10px; } -.ember-chat .ffz-moderation-card.ffz-has-info h3.name { +.ffz-moderation-card.ffz-has-info h3.name { margin-top: 0; } -.ember-chat .ffz-moderation-card .info { +.ffz-moderation-card .info { float: none; position: relative; z-index: 4; @@ -902,72 +978,101 @@ img.channel_background[src="null"] { display: none; } line-height: 18px; } -.ember-chat .ffz-moderation-card .info.channel-stats .stat { - color: #fff; +.ffz-moderation-card .info.channel-stats .stat { + color: #fff !important; } -.ember-chat .ffz-moderation-card .info.channel-stats .stat svg { +.ffz-moderation-card .info.channel-stats .stat svg { margin: 1px 5px 1px 0; pointer-events: none; } -.ember-chat .ffz-moderation-card .info svg path { fill: #fff; } +.ffz-moderation-card .info svg path { fill: #fff !important; } -.ember-chat .ffz-moderation-card button { +.ffz-moderation-card button { margin: 0; padding: 0 5px; } -.ember-chat .ffz-moderation-card button:not(.glyph-only):hover, -.ember-chat .ffz-moderation-card button:not(.glyph-only):focus { +.ffz-moderation-card button:not(.glyph-only):hover, +.ffz-moderation-card button:not(.glyph-only):focus { color: #fff; background-color: rgba(117,80,186, 1); } -.ember-chat .ffz-moderation-card button.message { +.ffz-moderation-card button.message { height: 30px; width: 28px; } -.ember-chat .ffz-moderation-card.ffz-is-mod .interface .mod-controls:last-of-type, -.ember-chat .ffz-moderation-card .interface span.right { +.ffz-moderation-card.ffz-is-mod .interface .mod-controls:last-of-type, +.ffz-moderation-card .interface span.right { float: right; } -.ember-chat .ffz-moderation-card:focus { +.ffz-moderation-card:focus { outline: none; border-color: #444; /*box-shadow: #000 0 0 5px;*/ } -.ember-chat .ffz-moderation-card .interface:not(:last-of-type) { +.ffz-moderation-card .interface:not(:last-of-type) { border-bottom: none; } -.ember-chat .ffz-moderation-card .interface { +.ffz-moderation-card .interface { border-top: none; } -.ember-chat .ffz-moderation-card h3.name { display: inline-block; } +.ffz-moderation-card h3.name { display: inline-block; } -.ember-chat .ffz-moderation-card .info, -.ember-chat .ffz-moderation-card h3.name { +.ffz-moderation-card .info, +.ffz-moderation-card h3.name { text-shadow: black 0 0 5px; } -.ember-chat .ffz-moderation-card .channel_background { +.ffz-moderation-card .channel_background { width: 100%; top: 0; } -body:not(.ffz-chat-purge-icon) .ember-chat .mod-icons .purge { display: none; } +/* dark moderation card */ -.ember-chat .mod-icons .purge { +.dark .ffz-moderation-card, +.force-dark .ffz-moderation-card, +.theatre .ffz-moderation-card { + border-color: #1b1b20; +} + +.dark .ffz-moderation-card:focus, +.force-dark .ffz-moderation-card:focus, +.theatre .ffz-moderation-card:focus { + border-color: #cbcbcb; +} + +.dark .ffz-moderation-card .interface, +.force-dark .ffz-moderation-card .interface, +.theatre .ffz-moderation-card .interface { + background-color: #232329; +} + +.ffz-no-blue .dark .ember-chat .moderation-card .interface, +.ffz-no-blue .force-dark .ember-chat .moderation-card .interface, +.ffz-no-blue .theatre .ember-chat .moderation-card .interface { + background-color: #232323; +} + +.moderation-card h3.name a { color: #fff !important; } + + +/* purge icon */ + +.mod-icons .purge { background-image: url('//cdn.frankerfacez.com/script/PurgeButton.svg'); background-repeat: no-repeat; } -.ember-chat .mod-icons .custom { +.mod-icons .custom { text-indent: 0; text-align: center; text-decoration: none; @@ -1454,7 +1559,7 @@ body.ffz-minimal-chat-input .ember-chat .chat-interface .textarea-contain textar list-style-type: none; padding: 0; max-height: 200px; - overflow-y: scroll; + overflow-y: auto; } .chat-history.interface li:first-child { padding-top: 10px; } @@ -1618,51 +1723,6 @@ body:not([data-current-path^="user."]) .ffz-sidebar-swap .ember-chat .chat-inter border-right-color: transparent; } -/* Badge Styles */ - -/*.ffz-rounded-badges .conversation-window .badges .badge:not(.subscriber), -.ffz-rounded-badges .ember-chat .badges .badge:not(.subscriber) { border-radius: 2px; }*/ - -/*.ffz-circular-blank-badges .conversation-window .badges .badge:not(.subscriber), -.ffz-circular-small-badges .conversation-window .badges .badge:not(.subscriber), -.ffz-circular-badges .conversation-window .badges .badge:not(.subscriber), -.ffz-circular-blank-badges .ember-chat .badges .badge:not(.subscriber), -.ffz-circular-small-badges .ember-chat .badges .badge:not(.subscriber), -.ffz-circular-badges .ember-chat .badges .badge:not(.subscriber) { - border-radius: 9px; - background-size: 16px; - background-repeat: no-repeat; - background-position: center center; -} - -.ffz-circular-small-badges .conversation-window .badges .badge:not(.subscriber), -.ffz-circular-blank-badges .conversation-window .badges .badge:not(.subscriber), -.ffz-circular-small-badges .ember-chat .badges .badge:not(.subscriber), -.ffz-circular-blank-badges .ember-chat .badges .badge:not(.subscriber) { - background-size: 0px; -} - -.ffz-circular-small-badges .conversation-window .badges .badge:not(.subscriber), -.ffz-circular-small-badges .ember-chat .badges .badge:not(.subscriber) { - height: 10px; - min-width: 10px; - margin: 5px 3px 5px 0; -} - -.ffz-transparent-badges .conversation-window .badges .badge, -.ffz-transparent-badges .ember-chat .badges .badge { - background-color: transparent !important; -} - -.ffz-transparent-badges:not(.ffz-dark) .app-main:not(.theatre) .conversation-window .badges .badge:not(.ffz-badge-0):not(.subscriber), -.ffz-transparent-badges > .chat-container:not(.dark):not(.force-dark) .ember-chat .badges .badge:not(.ffz-badge-0):not(.subscriber), -.ffz-transparent-badges > .ember-chat-container:not(.dark):not(.force-dark) .ember-chat .badges .badge:not(.ffz-badge-0):not(.subscriber), -.ffz-transparent-badges .app-main:not(.theatre) .chat-container:not(.dark):not(.force-dark) .ember-chat .badges .badge:not(.ffz-badge-0):not(.subscriber), -.ffz-transparent-badges .app-main:not(.theatre) .ember-chat-container:not(.dark):not(.force-dark) .ember-chat .badges .badge:not(.ffz-badge-0):not(.subscriber) { - filter: invert(100%); - -webkit-filter: invert(100%); -}*/ - /* No Blue */ .ffz-no-blue .theatre .conversations-list-icon, @@ -1671,8 +1731,6 @@ body:not([data-current-path^="user."]) .ffz-sidebar-swap .ember-chat .chat-inter .ffz-no-blue.ffz-dark .conversations-list, .ffz-no-blue .theatre .conversation-window, .ffz-no-blue.ffz-dark .conversation-window, -.ffz-no-blue .theatre .conversations-list .conversations-list-header, -.ffz-no-blue.ffz-dark .conversations-list .conversations-list-header, .ffz-no-blue #large_nav .content, .ffz-no-blue #small_nav .content, @@ -1777,6 +1835,8 @@ body:not([data-current-path^="user."]) .ffz-sidebar-swap .ember-chat .chat-inter .ffz-no-blue .theatre .conversation-header, .ffz-no-blue.ffz-dark .conversation-header, +.ffz-no-blue .theatre .conversations-list .conversations-list-header, +.ffz-no-blue.ffz-dark .conversations-list .conversations-list-header, .ffz-no-blue .theatre .conversation-window.has-focus .conversation-header, .ffz-no-blue.ffz-dark .conversation-window.has-focus .conversation-header, .ffz-no-blue .theatre .conversations-list .conversations-list-item:hover, @@ -1993,22 +2053,25 @@ body:not(.ffz-conv-title-clickable) .conversation-header a.conversation-header-n .conversation-window.has-unread .conversation-header .conversation-header-name { color: #fff !important; } -.ffz-top-conversations .conversation-window.collapsed .conversation-header, -.conversations-list .conversations-list-item:last-of-type { +.ffz-top-conversations:not(.ffz-bttv) .conversation-window.collapsed .conversation-header { + box-shadow: none; +} + +.conversations-list:not(.ffz-bttv) .conversations-list-item:last-of-type { border-bottom: none !important; } -.ffz-top-conversations .conversations-content .conversations-list-icon, -.ffz-top-conversations .conversation-window { +.ffz-top-conversations:not(.ffz-bttv) .conversations-content .conversations-list-icon, +.ffz-top-conversations:not(.ffz-bttv) .conversation-window { + border: 1px solid #dedede; border-top: 0; - border-bottom: 1px solid #dedede; } -.ffz-top-conversations.ffz-dark .conversations-content .conversations-list-icon, -.ffz-top-conversations.ffz-dark .conversation-window, -.ffz-top-conversations .theatre .conversations-content .conversations-list-icon, -.ffz-top-conversations .theatre .conversation-window { - border-bottom-color: rgba(255,255,255,0.2); +.ffz-top-conversations.ffz-dark:not(.ffz-bttv) .conversations-content .conversations-list-icon, +.ffz-top-conversations.ffz-dark:not(.ffz-bttv) .conversation-window, +.ffz-top-conversations:not(.ffz-bttv) .theatre .conversations-content .conversations-list-icon, +.ffz-top-conversations:not(.ffz-bttv) .theatre .conversation-window { + border-color: rgba(255,255,255,0.2); } .ffz-top-conversations .conversations-content { @@ -2024,14 +2087,44 @@ body:not(.ffz-conv-title-clickable) .conversation-header a.conversation-header-n .ffz-top-conversations .conversations-list { bottom: inherit; - top: 46px; + top: 54px; } -.ffz-top-conversations .conversations-list:before, -.ffz-top-conversations .conversations-list:after { - display:none; +.ffz-top-conversations.ffz-bttv .conversations-list { top: 46px; } + +.ffz-top-conversations.ffz-bttv .conversations-list:before, +.ffz-top-conversations.ffz-bttv .conversations-list:after { display: none; } + +.ffz-top-conversations:not(.ffz-bttv) .conversations-list:before, +.ffz-top-conversations:not(.ffz-bttv) .conversations-list:after { + bottom: 100%; + top: auto; } +.ffz-top-conversations:not(.ffz-bttv) .conversations-list:before { + border-top-color: transparent; + border-bottom-color: #dedede; +} + +.ffz-top-conversations:not(.ffz-bttv) .conversations-list:after { + border-top-color: transparent; + border-bottom-color: #f2f2f2; +} + + +.ffz-dark.ffz-top-conversations:not(.ffz-bttv) .conversations-list:before, +.ffz-top-conversations:not(.ffz-bttv) .theatre .conversations-list:before { + border-top-color: transparent; + border-bottom-color: #32323e; +} + +.ffz-dark.ffz-top-conversations:not(.ffz-bttv) .conversations-list:after, +.ffz-top-conversations:not(.ffz-bttv) .theatre .conversations-list:after { + border-top-color: transparent; + border-bottom-color: #121212; +} + + .ffz-top-conversations .theatre .player-controls-bottom { padding-bottom: 0; }