1
0
Fork 0
mirror of https://github.com/FrankerFaceZ/FrankerFaceZ.git synced 2025-08-02 16:08:31 +00:00
* Fixed: Setting to display square avatars not functioning. (Closes #1042)
* Fixed: Chat message backgrounds on clips pages not appearing as full width.
* Fixed: Style of the Gain Control input element.
* Fixed: Shortcuts not being appended to live channel pages next to the channel name.
* Fixed: The Mod View button not being hidden correctly. (Closes #1044)
* Fixed: The "Hide Stream Info" button not being hidden in mod view.
* Fixed: The setting to use the FFZ logo for the emote menu button not functioning.
* Fixed: Multiple issues with portrait mode appearing incorrectly.
* Fixed: Block and Hide Thumbnails buttons not appearing on game directory pages.
This commit is contained in:
SirStendec 2021-05-19 16:59:26 -04:00
parent 432ac86342
commit fd0361b6e0
16 changed files with 214 additions and 37 deletions

View file

@ -1,7 +1,7 @@
{ {
"name": "frankerfacez", "name": "frankerfacez",
"author": "Dan Salvato LLC", "author": "Dan Salvato LLC",
"version": "4.22.7", "version": "4.22.8",
"description": "FrankerFaceZ is a Twitch enhancement suite.", "description": "FrankerFaceZ is a Twitch enhancement suite.",
"private": true, "private": true,
"license": "Apache-2.0", "license": "Apache-2.0",

View file

@ -151,6 +151,11 @@ export default class Chat extends Module {
const room = thing._ffz_room = this.chat.getRoom(channel_id, null, false, true); const room = thing._ffz_room = this.chat.getRoom(channel_id, null, false, true);
room.ref(thing); room.ref(thing);
this.settings.updateContext({
channelID: channel_id
});
return room; return room;
} }
@ -161,6 +166,10 @@ export default class Chat extends Module {
thing._ffz_room.unref(thing); thing._ffz_room.unref(thing);
thing._ffz_room = null; thing._ffz_room = null;
this.settings.updateContext({
channelID: null
});
} }

View file

@ -5,6 +5,7 @@
--border-radius-rounded: 0 !important; --border-radius-rounded: 0 !important;
} }
.tw-image-avatar,
.user-avatar-card__halo, .user-avatar-card__halo,
.player-streaminfo__picture img[src] { .player-streaminfo__picture img[src] {
border-radius: 0 !important; border-radius: 0 !important;

View file

@ -31,9 +31,7 @@
} }
.clips-chat-replay { .clips-chat-replay {
&.tw-flex { display: block !important;
display: block !important;
}
& > div { & > div {
margin: 0 -1rem !important; margin: 0 -1rem !important;

View file

@ -396,7 +396,7 @@ export default class ThemeEngine extends Module {
this.toggleNormalizer(chat_bits.length || bits.length); this.toggleNormalizer(chat_bits.length || bits.length);
if ( bits.length ) if ( bits.length )
this.css_tweaks.set('colors', `body {${bits.join('\n')}}.channel-info-content .tw-accent-region,.channel-info-content .gocjHQ{${accent_bits.join('\n')}}`); this.css_tweaks.set('colors', `body {${bits.join('\n')}}.channel-info-content .tw-accent-region,.channel-info-content div[class^="ScAccentRegion"]{${accent_bits.join('\n')}}`);
else else
this.css_tweaks.delete('colors'); this.css_tweaks.delete('colors');
} }

View file

@ -1187,7 +1187,7 @@ export default class PlayerBase extends Module {
<label class="tw-hide-accessible">{this.i18n.t('player.gain.label','Gain Control')}</label> <label class="tw-hide-accessible">{this.i18n.t('player.gain.label','Gain Control')}</label>
<div class="tw-flex tw-full-width tw-relative tw-z-above"> <div class="tw-flex tw-full-width tw-relative tw-z-above">
{input = (<input {input = (<input
class="tw-range tw-range--overlay" class="ffz-range ffz-range--overlay"
type="range" type="range"
min="0" min="0"
max="100" max="100"
@ -1195,11 +1195,11 @@ export default class PlayerBase extends Module {
data-a-target="player-gain-slider" data-a-target="player-gain-slider"
value="100" value="100"
/>)} />)}
<div class="tw-absolute tw-border-radius-large tw-bottom-0 tw-flex tw-flex-column tw-full-width tw-justify-content-center tw-range__fill tw-range__fill--overlay tw-top-0 tw-z-below"> <div class="tw-absolute tw-border-radius-large tw-bottom-0 tw-flex tw-flex-column tw-full-width tw-justify-content-center ffz-range__fill ffz-range__fill--overlay tw-top-0 tw-z-below">
<div class="tw-border-radius-large tw-range__fill-container"> <div class="tw-border-radius-large ffz-range__fill-container">
{fill = (<div {fill = (<div
class="tw-border-radius-large tw-range__fill-value ffz--gain-value" class="tw-border-radius-large ffz-range__fill-value ffz--gain-value"
data-test-selector="tw-range__fill-value-selector" data-test-selector="ffz-range__fill-value-selector"
/>)} />)}
</div> </div>
</div> </div>

View file

@ -332,9 +332,9 @@ export default class Channel extends Module {
} }
if ( ! el._ffz_links && want_links ) { if ( ! el._ffz_links && want_links ) {
const link = el.querySelector('a .tw-line-height-heading'), const link = el.querySelector('a .tw-title'),
anchor = link && link.closest('a'), anchor = link && link.closest('a'),
cont = anchor && anchor.closest('.tw-flex'); cont = anchor && anchor.closest('div');
if ( cont && el.contains(cont) ) { if ( cont && el.contains(cont) ) {
el._ffz_links = <div class="ffz--links tw-mg-l-1"></div>; el._ffz_links = <div class="ffz--links tw-mg-l-1"></div>;

View file

@ -22,7 +22,7 @@ const CLASSES = {
'side-closed-rec-channels': '.side-nav--collapsed .recommended-channels,.side-nav--collapsed .side-nav-section + .side-nav-section:not(.online-friends)', 'side-closed-rec-channels': '.side-nav--collapsed .recommended-channels,.side-nav--collapsed .side-nav-section + .side-nav-section:not(.online-friends)',
'side-offline-channels': '.ffz--side-nav-card-offline', 'side-offline-channels': '.ffz--side-nav-card-offline',
'side-rerun-channels': '.side-nav .ffz--side-nav-card-rerun', 'side-rerun-channels': '.side-nav .ffz--side-nav-card-rerun',
'modview-hide-info': '.tw-flex.modview-player-widget__hide-stream-info', 'modview-hide-info': '.modview-player-widget__hide-stream-info',
'community-highlights': '.community-highlight-stack__card', 'community-highlights': '.community-highlight-stack__card',
@ -44,7 +44,7 @@ const CLASSES = {
'not-live-bar': 'div[data-test-selector="non-live-video-banner-layout"]', 'not-live-bar': 'div[data-test-selector="non-live-video-banner-layout"]',
'channel-live-ind': '.channel-header__user .tw-channel-status-text-indicator,.channel-info-content .tw-halo__indicator', 'channel-live-ind': '.channel-header__user .tw-channel-status-text-indicator,.channel-info-content .tw-halo__indicator',
'celebration': 'body .celebration__overlay', 'celebration': 'body .celebration__overlay',
'mod-view': '.chat-input__buttons-container .tw-core-button[href*="/moderator"]' 'mod-view': '.chat-input__buttons-container a[href*="/moderator"]'
}; };

View file

@ -1,8 +1,10 @@
button[data-a-target="emote-picker-button"] { button[data-a-target="emote-picker-button"] {
.tw-button-icon__icon { div[class^="ScButtonIcon"] {
padding: .6rem .4rem .2rem .4rem; padding: .2rem .2rem 0 0;
div > div { div > div {
overflow: unset !important;
&:before { &:before {
display: inline-block; display: inline-block;
width: 2.4rem; width: 2.4rem;
@ -12,8 +14,6 @@ button[data-a-target="emote-picker-button"] {
font-weight: normal; font-weight: normal;
speak: none; speak: none;
margin-top: -.3rem;
font-variant: normal; font-variant: normal;
text-transform: none; text-transform: none;

View file

@ -4,7 +4,7 @@
--ffz-theater-height: calc(calc(100vw * 0.5625) + var(--ffz-portrait-extra-height)); --ffz-theater-height: calc(calc(100vw * 0.5625) + var(--ffz-portrait-extra-height));
--ffz-chat-height: calc(100vh - var(--ffz-player-height)); --ffz-chat-height: calc(100vh - var(--ffz-player-height));
& > .tw-flex-column > .tw-full-height { & > div:first-child > div[class^="sc"] {
.ffz--portrait-invert & { .ffz--portrait-invert & {
position: absolute; position: absolute;
left: 0; left: 0;

View file

@ -5,6 +5,7 @@
--border-radius-rounded: 0 !important; --border-radius-rounded: 0 !important;
} }
.tw-image-avatar,
.user-avatar-card__halo, .user-avatar-card__halo,
.player-streaminfo__picture img[src], .player-streaminfo__picture img[src],
.channel-info-content .tw-halo, .channel-info-content .tw-halo,

View file

@ -63,10 +63,22 @@ export default class Game extends SiteModule {
for(const inst of instances) for(const inst of instances)
this.updateGameHeader(inst); this.updateGameHeader(inst);
}); });
this.on('site.router:route', route => {
if ( route && route.name === 'dir-game-index' )
this.updateGameHeader();
})
} }
updateGameHeader(inst) { updateGameHeader(inst) {
if ( inst === undefined ) {
for(const inst of this.GameHeader.instances)
this.updateGameHeader(inst);
return;
}
this.updateButtons(inst); this.updateButtons(inst);
const category = inst?.props?.data?.game; const category = inst?.props?.data?.game;
@ -83,14 +95,14 @@ export default class Game extends SiteModule {
if ( get('data.game', inst.props) == null || ! container || ! container.querySelector ) if ( get('data.game', inst.props) == null || ! container || ! container.querySelector )
return; return;
const buttons = container.querySelector('.tw-flex > .tw-flex-column'); const ffz_buttons = container.querySelector('.ffz-directory-buttons');
if ( ! buttons )
return;
const ffz_buttons = buttons.querySelector('.ffz-directory-buttons');
if ( ffz_buttons ) if ( ffz_buttons )
ffz_buttons.remove(); ffz_buttons.remove();
const buttons = container.querySelector('.directory-header-new__info > div > div + div');
if ( ! buttons )
return;
let block_btn, block_label, let block_btn, block_label,
hidden_btn, hidden_label; hidden_btn, hidden_label;

View file

@ -485,7 +485,7 @@ The CSS loaded by this setting is far too heavy and can cause performance issues
this.toggleNormalizer(chat_bits.length || bits.length); this.toggleNormalizer(chat_bits.length || bits.length);
if ( bits.length ) if ( bits.length )
this.css_tweaks.set('colors', `body,body .tw-root--theme-light,body .tw-root--theme-dark {${bits.join('\n')}}.channel-info-content .tw-accent-region,.channel-info-content .gocjHQ{${accent_bits.join('\n')}}`); this.css_tweaks.set('colors', `body,body .tw-root--theme-light,body .tw-root--theme-dark {${bits.join('\n')}}.channel-info-content .tw-accent-region,.channel-info-content div[class^="ScAccentRegion"]{${accent_bits.join('\n')}}`);
else else
this.css_tweaks.delete('colors'); this.css_tweaks.delete('colors');
} }

View file

@ -1,4 +1,4 @@
.channel-info-bar__content-right > .tw-align-items-start > .tw-flex:last-child, /*.channel-info-bar__content-right > .tw-align-items-start > .tw-flex:last-child,
.channel-info-bar__action-container > .tw-flex { .channel-info-bar__action-container > .tw-flex {
.channel-info-bar__viewers-wrapper > div:first-child { .channel-info-bar__viewers-wrapper > div:first-child {
margin-right: 0; margin-right: 0;
@ -32,7 +32,7 @@
& > .tw-flex:last-child > :last-child { & > .tw-flex:last-child > :last-child {
margin-right: 0 !important margin-right: 0 !important
} }
} }*/
.tw-root--theme-ffz, .tw-root--theme-ffz.tw-root--theme-dark, .tw-root--theme-dark, body { .tw-root--theme-ffz, .tw-root--theme-ffz.tw-root--theme-dark, .tw-root--theme-dark, body {
.ffz-stat > .tw-button--text, .ffz-stat > .tw-button--text,
@ -70,21 +70,14 @@
} }
} }
.ffz--meta-tray {
.ffz--meta-tray:not(.tw-flex-wrap) {
& > *:not(.ffz-stat) { & > *:not(.ffz-stat) {
order: 500; order: 500;
} }
}
.ffz--meta-tray.tw-flex-wrap { & > :first-child:not(.ffz-stat) {
& > :first-child {
order: 1; order: 1;
} }
& > :nth-child(0n+2) {
order: 500;
}
} }
.ffz-stat { .ffz-stat {

View file

@ -7,4 +7,5 @@
@import "tag"; @import "tag";
@import "progress"; @import "progress";
@import "tooltip"; @import "tooltip";
@import "balloon"; @import "balloon";
@import "slider";

162
styles/native/slider.scss Normal file
View file

@ -0,0 +1,162 @@
.ffz-range {
appearance: none;
cursor: pointer;
height: 1.6rem;
vertical-align: middle;
width: 100%;
&, &:active, &:hover, &:focus {
background: transparent;
border: none;
box-shadow: none;
}
&:disabled,
&:disabled + &__fill {
opacity: 0.5;
pointer-events: none;
}
&::-moz-range-track {
cursor: pointer;
height: .2rem;
width: 100%;
}
&::-ms-track {
cursor: pointer;
height: .2rem;
width: 100%;
}
&::-webkit-slider-runnable-track {
cursor: pointer;
height: .2rem;
width: 100%;
}
&::-moz-range-thumb {
appearance: none;
background: var(--color-white);
border: var(--border-width-default) solid var(--color-border-range-handle);
border-radius: var(--border-radius-rounded);
box-shadow: var(--shadow-elevation-1);
height: 1.6rem;
margin-top: -.7rem;
width: 1.6rem;
}
&::-ms-thumb {
appearance: none;
background: var(--color-white);
border: var(--border-width-default) solid var(--color-border-range-handle);
border-radius: var(--border-radius-rounded);
box-shadow: var(--shadow-elevation-1);
height: 1.6rem;
margin-top: -.7rem;
width: 1.6rem;
}
&::-webkit-slider-thumb {
appearance: none;
background: var(--color-white);
border: var(--border-width-default) solid var(--color-border-range-handle);
border-radius: var(--border-radius-rounded);
box-shadow: var(--shadow-elevation-1);
height: 1.6rem;
margin-top: -.7rem;
width: 1.6rem;
}
&[data-focus-visible-added] {
outline: none;
&::-moz-range-thumb {
border: var(--border-width-default) solid var(--color-background-range-fill);
}
&::-ms-thumb {
border: var(--border-width-default) solid var(--color-background-range-fill);
}
&::-webkit-slider-thumb {
border: var(--border-width-default) solid var(--color-background-range-fill);
}
}
&--error {
&::-moz-range-thumb {
border: var(--border-width-default) solid var(--color-border-input-error);
}
&::-ms-thumb {
border: var(--border-width-default) solid var(--color-border-input-error);
}
&::-webkit-slider-thumb {
border: var(--border-width-default) solid var(--color-border-input-error);
}
}
&--unfilled {
&::-moz-range-track {
background-color: var(--color-background-range);
}
&::-ms-track {
background-color: var(--color-background-range);
}
&::-webkit-slider-runnable-track {
background-color: var(--color-background-range);
}
}
&--unfilled.ffz-range-overlay {
&::-moz-range-track {
background-color: var(--color-background-range-overlay);
}
&::-ms-track {
background-color: var(--color-background-range-overlay);
}
&::-webkit-slider-runnable-track {
background-color: var(--color-background-range-overlay);
}
}
&--unfilled,
&--unfilled.ffz-range--overlay {
&::-moz-range-track {
border-radius: var(--border-radius-large);
cursor: pointer;
height: .2rem;
width: 100%;
}
&::-ms-track {
border-radius: var(--border-radius-large);
cursor: pointer;
height: .2rem;
width: 100%;
}
&::-webkit-slider-runnable-track {
border-radius: var(--border-radius-large);
cursor: pointer;
height: .2rem;
width: 100%;
}
}
&__fill {
height: 100%;
&-container {
background-color: var(--color-background-range);
cursor: pointer;
height: .2rem;
width: 100%;
}
&-value {
background-color: var(--color-background-range-fill);
height: 100%;
}
&--overlay &-container {
background-color: var(--color-background-range-overlay);
}
&--overlay &-value {
background-color: var(--color-background-range-overlay-fill);
}
}
}