Merge "Selenium: replace UserLoginPage with BlankPage where possible"
[lhc/web/wiklou.git] / resources / src / mediawiki.rcfilters / styles / mw.rcfilters.less
1 @import 'mediawiki.mixins.animation';
2 @import 'mediawiki.ui/variables';
3 @import 'mw.rcfilters.mixins';
4
5 @rcfilters-spinner-size: 12px;
6 @rcfilters-head-min-height: 210px;
7 @rcfilters-head-margin-bottom: 20px;
8 @rcfilters-wl-head-min-height: 295px;
9 @rcfilters-head-min-height-collapsed: 130px;
10 @rcfilters-wl-head-min-height-collapsed: 220px;
11
12 // Corrections for the standard special page
13 .client-js {
14 /* stylelint-disable-next-line selector-class-pattern */
15 .cloptions {
16 border: 0;
17 }
18
19 // Reserve space for the UI while it loads
20 .mw-rcfilters-head {
21 min-height: @rcfilters-head-min-height;
22 margin-bottom: @rcfilters-head-margin-bottom;
23 }
24
25 // On the watchlist, reserve a bit more
26 .mw-special-Watchlist .mw-rcfilters-head {
27 min-height: @rcfilters-wl-head-min-height;
28 }
29
30 .mw-rcfilters-collapsed {
31 .mw-rcfilters-head {
32 min-height: @rcfilters-head-min-height-collapsed;
33 }
34
35 // On the watchlist, reserve a bit more
36 &.mw-special-Watchlist .mw-rcfilters-head {
37 min-height: @rcfilters-wl-head-min-height-collapsed;
38 }
39 }
40
41 .mw-recentchanges-toplinks {
42 padding-left: 0.5em;
43
44 &:not( .mw-recentchanges-toplinks-collapsed ) {
45 margin-top: -1px; // Make up for `border` to prevent link movement
46 margin-left: -1px;
47 margin-bottom: 0.5em;
48 border: 1px solid @colorGray12; // Same as the legend
49 padding: 0 0.5em 0.5em 0.5em;
50 }
51
52 /* stylelint-disable declaration-no-important */
53 .oo-ui-buttonElement > .oo-ui-buttonElement-button {
54 padding-right: 1.2em !important;
55
56 > .oo-ui-indicatorElement-indicator {
57 right: 0 !important;
58 width: 0.9375em !important;
59 }
60 }
61 /* stylelint-enable declaration-no-important */
62 }
63
64 body:not( .mw-rcfilters-ui-initialized ) {
65 .mw-recentchanges-toplinks.mw-recentchanges-toplinks-collapsed {
66 // Similar to the watchlist-details hack, we are going to make this float left
67 // while loading to prevent jumpiness in the min-height calculation
68 float: left;
69
70 .mw-recentchanges-toplinks-content {
71 display: none;
72 }
73 }
74
75 .mw-rcfilters-head {
76 opacity: 0.5;
77 pointer-events: none;
78
79 /* stylelint-disable-next-line selector-class-pattern */
80 .cloptions {
81 display: none;
82 }
83 }
84 }
85
86 .mw-rcfilters-ui-highlights {
87 display: none;
88 }
89
90 .mw-changeslist {
91 // Reserve space for the highlight circles
92 ul,
93 table.mw-enhanced-rc {
94 .result-circle-margin();
95 }
96 }
97
98 // Temporarily hide the empty results section while we load rcfilters.
99 .mw-changeslist-empty {
100 display: none;
101 }
102
103 /* stylelint-disable-next-line selector-class-pattern */
104 .errorbox {
105 display: none;
106 }
107
108 body.mw-rcfilters-ui-loading .mw-changeslist {
109 opacity: 0.5;
110 }
111
112 .mw-rcfilters-spinner {
113 display: none;
114 position: absolute;
115 left: 50%;
116 // Make sure the middle of the spinner is centered, rather than its left edge
117 margin-left: -3 * @rcfilters-spinner-size / 2;
118 white-space: nowrap;
119
120 & .mw-rcfilters-spinner-bounce,
121 &:before,
122 &:after {
123 content: '';
124 background-color: @colorGray7;
125 display: block;
126 float: left;
127 width: @rcfilters-spinner-size;
128 height: @rcfilters-spinner-size;
129 border-radius: 100%;
130 .animation( rcfiltersBouncedelay 1600ms ease-in-out -160ms infinite both );
131 }
132
133 &:before {
134 margin-right: 4px;
135 .animation-delay( -330ms );
136 }
137
138 &:after {
139 margin-left: 4px;
140 .animation-delay( 0s );
141 }
142 }
143
144 body:not( .mw-rcfilters-ui-initialized ) .mw-rcfilters-spinner {
145 display: block;
146 // When initializing, display the spinner on top of the area where the UI will appear
147 margin-top: -( @rcfilters-head-min-height + @rcfilters-head-margin-bottom ) / 1.5;
148 }
149
150 body.mw-rcfilters-ui-loading .mw-rcfilters-spinner {
151 display: block;
152 // When loading new results, display the spinner on top of the results area
153 margin-top: -( @rcfilters-head-min-height + @rcfilters-head-margin-bottom ) / 8;
154 }
155
156 #contentSub,
157 form#mw-watchlist-resetbutton {
158 display: none;
159 }
160
161 // Why does rcfilters have a copy of this?
162 // TODO: Remove per T195256.
163 #jump-to-nav {
164 margin-top: -0.5em;
165 margin-bottom: 0.5em;
166 }
167
168 // Make the watchlist-details message display while loading, but make it not take up any
169 // space. This makes the min-height trick work better.
170 /* stylelint-disable-next-line selector-class-pattern */
171 .watchlistDetails {
172 float: left;
173 // The 20em should match the min-width we are setting up
174 // for the .mw-rcfilters-ui-watchlistTopSectionWidget-editWatchlistButton
175 // in mw.rcfilters.ui.WatchlistTopSectionWidget.less
176 width: ~'calc( 100% - 20em )';
177 }
178 }
179
180 .mw-rcfilters-staticfilters-selected {
181 font-weight: bold;
182 }
183
184 @-webkit-keyframes rcfiltersBouncedelay {
185 // 50% equals 800ms
186 0%,
187 50%,
188 100% {
189 -webkit-transform: scale( 0.625 );
190 }
191
192 // equals 320ms
193 20% {
194 opacity: 0.87;
195 -webkit-transform: scale( 1 );
196 }
197 }
198
199 @-moz-keyframes rcfiltersBouncedelay {
200 0%,
201 50%,
202 100% {
203 -moz-transform: scale( 0.625 );
204 }
205
206 20% {
207 opacity: 0.87;
208 -moz-transform: scale( 1 );
209 }
210 }
211
212 @keyframes rcfiltersBouncedelay {
213 0%,
214 50%,
215 100% {
216 transform: scale( 0.625 );
217 }
218
219 20% { // equals 320ms
220 opacity: 0.87;
221 transform: scale( 1 );
222 }
223 }