Skip to content

Commit ec59a7e

Browse files
authored
Merge branch 'master' into archive-redirect-ignore
2 parents 1fb0152 + c846644 commit ec59a7e

File tree

6 files changed

+26
-29
lines changed

6 files changed

+26
-29
lines changed

resources/css/bem/blackout.less

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
z-index: @z-index--blackout;
88
backface-visibility: hidden;
99
background-color: #000;
10-
opacity: 0.75;
10+
opacity: 0.5;
1111

1212
&--overlay {
1313
z-index: @z-index--overlay;

resources/js/beatmap-discussions/beatmap-list.tsx

+6-4
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
import BeatmapListItem from 'components/beatmap-list-item';
55
import BeatmapExtendedJson from 'interfaces/beatmap-extended-json';
66
import UserJson from 'interfaces/user-json';
7-
import { action, computed, makeObservable, observable } from 'mobx';
8-
import { observer } from 'mobx-react';
7+
import { action, autorun, computed, makeObservable, observable } from 'mobx';
8+
import { disposeOnUnmount, observer } from 'mobx-react';
99
import { deletedUserJson } from 'models/user';
1010
import * as React from 'react';
1111
import { makeUrl } from 'utils/beatmapset-discussion-helper';
@@ -34,16 +34,19 @@ export default class BeatmapList extends React.Component<Props> {
3434
super(props);
3535

3636
makeObservable(this);
37+
disposeOnUnmount(this, autorun(() => {
38+
blackoutToggle(this, this.showingSelector);
39+
}));
3740
}
3841

3942
componentDidMount() {
4043
$(document).on(`click.${this.eventId}`, this.onDocumentClick);
4144
$(document).on(`turbolinks:before-cache.${this.eventId}`, this.handleBeforeCache);
42-
blackoutToggle(this.showingSelector, 0.5);
4345
}
4446

4547
componentWillUnmount() {
4648
$(document).off(`.${this.eventId}`);
49+
blackoutToggle(this, false);
4750
}
4851

4952
render() {
@@ -127,7 +130,6 @@ export default class BeatmapList extends React.Component<Props> {
127130
@action
128131
private setShowingSelector(state: boolean) {
129132
this.showingSelector = state;
130-
blackoutToggle(state, 0.5);
131133
}
132134

133135
@action

resources/js/components/modal.tsx

+2-4
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,7 @@ export default class Modal extends React.PureComponent<React.PropsWithChildren<P
4949

5050
private readonly close = () => {
5151
modals.delete(this);
52-
if (modals.size === 0) {
53-
blackoutToggle(false);
54-
}
52+
blackoutToggle(this, false);
5553
};
5654

5755
private readonly handleBeforeCache = () => {
@@ -91,6 +89,6 @@ export default class Modal extends React.PureComponent<React.PropsWithChildren<P
9189

9290
private readonly open = () => {
9391
modals.add(this);
94-
blackoutToggle(true, 0.5);
92+
blackoutToggle(this, true);
9593
};
9694
}

resources/js/components/select-options.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ export default class SelectOptions<T extends Option> extends React.Component<Pro
4848
super(props);
4949
makeObservable(this);
5050
disposeOnUnmount(this, autorun(() => {
51-
blackoutToggle(this.props.blackout && this.showingSelector, 0.5);
51+
blackoutToggle(this, this.props.blackout && this.showingSelector);
5252
}));
5353
}
5454

@@ -58,6 +58,7 @@ export default class SelectOptions<T extends Option> extends React.Component<Pro
5858

5959
componentWillUnmount() {
6060
document.removeEventListener('click', this.hideSelector);
61+
blackoutToggle(this, false);
6162
}
6263

6364
render() {

resources/js/core-legacy/nav2.coffee

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the GNU Affero General Public License v3.0.
22
# See the LICENCE file in the repository root for full licence text.
33

4-
import { blackoutHide, blackoutShow } from 'utils/blackout'
4+
import { blackoutToggle } from 'utils/blackout'
55
import { fadeToggle } from 'utils/fade'
66

77
export default class Nav2
@@ -50,9 +50,9 @@ export default class Nav2
5050

5151
if @showingMobileNav
5252
document.body.classList.add('js-nav2--active')
53-
blackoutShow()
53+
blackoutToggle(this, true)
5454
else if previousTree.indexOf('mobile-menu') != -1
55-
blackoutHide()
55+
blackoutToggle(this, false)
5656
Timeout.set 0, =>
5757
$(@clickMenu.menu('mobile-menu')).finish().slideUp 150, =>
5858
# use actual state instead of always removing the class in case

resources/js/utils/blackout.ts

+12-16
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,21 @@
33

44
import { fadeToggle } from './fade';
55

6-
export function blackoutHide() {
7-
blackoutToggle(false);
8-
}
9-
10-
export function blackoutShow() {
11-
blackoutToggle(true);
12-
}
6+
const elements = new Set<unknown>();
137

14-
export function blackoutToggle(state: boolean, opacity?: number) {
15-
const el = window.newBody?.querySelector('.js-blackout');
16-
17-
if (el instanceof HTMLElement) {
18-
el.style.opacity = !state || opacity == null ? '' : String(opacity);
19-
fadeToggle(el, state);
8+
export function blackoutToggle(element: unknown, state: boolean) {
9+
if (state) {
10+
elements.add(element);
11+
} else {
12+
elements.delete(element);
2013
}
14+
15+
fadeToggle(
16+
window.newBody?.querySelector('.js-blackout'),
17+
blackoutVisible(),
18+
);
2119
}
2220

2321
export function blackoutVisible() {
24-
const el = document.querySelector('.js-blackout');
25-
26-
return el instanceof HTMLElement && el.style.opacity !== '';
22+
return elements.size > 0;
2723
}

0 commit comments

Comments
 (0)