]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame_incremental - client/src/app/videos/+video-watch/video-watch.component.scss
Improve playlist element style
[github/Chocobozzz/PeerTube.git] / client / src / app / videos / +video-watch / video-watch.component.scss
... / ...
CommitLineData
1@import '_variables';
2@import '_mixins';
3@import '_bootstrap-variables';
4@import '_miniature';
5
6$other-videos-width: 260px;
7$player-factor: 1.7; // 16/9
8
9@function getPlayerHeight($width){
10 @return calc(#{$width} / #{$player-factor})
11}
12
13@function getPlayerWidth($height){
14 @return calc(#{$height} * #{$player-factor})
15}
16
17@mixin playlist-below-player {
18 width: 100%;
19 height: auto;
20 max-height: 300px;
21 border-bottom: 1px solid $separator-border-color;
22}
23
24.root {
25 &.theater-enabled #video-wrapper {
26 flex-direction: column;
27 justify-content: center;
28
29 #videojs-wrapper {
30 width: 100%;
31 }
32
33 /deep/ .video-js {
34 $height: calc(100vh - #{$header-height} - #{$theater-bottom-space});
35
36 height: $height;
37 width: 100%;
38 }
39
40 .playlist {
41 @include playlist-below-player;
42 }
43 }
44}
45
46.blacklisted-label {
47 font-weight: $font-semibold;
48}
49
50#video-wrapper {
51 background-color: #000;
52 display: flex;
53 justify-content: center;
54 margin: 0 -15px;
55
56 #videojs-wrapper {
57 display: flex;
58 justify-content: center;
59 flex-grow: 1;
60 }
61
62 .remote-server-down {
63 color: #fff;
64 display: flex;
65 flex-direction: column;
66 align-items: center;
67 text-align: center;
68 justify-content: center;
69 background-color: #141313;
70 width: 100%;
71 font-size: 24px;
72 height: 500px;
73
74 @media screen and (max-width: 1000px) {
75 font-size: 20px;
76 }
77
78 @media screen and (max-width: 600px) {
79 font-size: 16px;
80 }
81 }
82
83 .playlist {
84 min-width: 200px;
85 max-width: 470px;
86 height: 66vh;
87 background-color: var(--mainBackgroundColor);
88 overflow-y: auto;
89 border-bottom: 1px solid $separator-border-color;
90
91 .playlist-info {
92 padding: 5px 30px;
93 background-color: #e4e4e4;
94
95 .playlist-display-name {
96 font-size: 18px;
97 font-weight: $font-semibold;
98 margin-bottom: 5px;
99 }
100
101 .playlist-by-index {
102 color: $grey-foreground-color;
103 display: flex;
104
105 .playlist-by {
106 margin-right: 5px;
107 }
108
109 .playlist-index span:first-child::after {
110 content: '/';
111 margin: 0 3px;
112 }
113 }
114 }
115
116 my-video-playlist-element-miniature {
117 /deep/ {
118 .video {
119 .position {
120 margin-right: 0;
121 }
122
123 .video-info {
124 .video-info-name {
125 font-size: 15px;
126 }
127 }
128 }
129
130 my-video-thumbnail {
131 @include thumbnail-size-component(90px, 50px);
132 }
133 }
134 }
135 }
136
137 /deep/ .video-js {
138 width: getPlayerWidth(66vh);
139 height: 66vh;
140
141 // VideoJS create an inner video player
142 video {
143 outline: 0;
144 position: relative !important;
145 }
146 }
147
148 @media screen and (max-width: 600px) {
149 .remote-server-down,
150 /deep/ .video-js {
151 width: 100vw;
152 height: getPlayerHeight(100vw)
153 }
154 }
155}
156
157.alert {
158 text-align: center;
159}
160
161#video-not-found {
162 height: 300px;
163 line-height: 300px;
164 margin-top: 50px;
165 text-align: center;
166 font-weight: $font-semibold;
167 font-size: 15px;
168}
169
170.video-bottom {
171 display: flex;
172 margin-top: 40px;
173
174 .video-info {
175 flex-grow: 1;
176 // Set min width for flex item
177 min-width: 1px;
178 max-width: 100%;
179
180 .video-info-first-row {
181 display: flex;
182
183 & > div:first-child {
184 flex-grow: 1;
185 }
186
187 .video-info-name {
188 margin-right: 30px;
189 min-height: 40px; // Align with the action buttons
190 font-size: 27px;
191 font-weight: $font-semibold;
192 flex-grow: 1;
193 }
194
195 .video-info-date-views {
196 flex-grow: 1;
197 margin-bottom: 10px;
198 margin-right: 10px;
199 font-size: 16px;
200 }
201
202 .video-info-channel {
203 font-weight: $font-semibold;
204 font-size: 15px;
205
206 a {
207 @include disable-default-a-behaviour;
208
209 color: var(--mainForegroundColor);
210
211 &:hover {
212 opacity: 0.8;
213 }
214
215 img {
216 @include avatar(18px);
217
218 margin: -2px 2px 0 5px;
219 }
220 }
221
222 my-subscribe-button {
223 margin-left: 5px;
224 }
225 }
226
227 .video-info-by {
228
229 a {
230 @include disable-default-a-behaviour;
231
232 display: inline;
233 align-items: center;
234 font-size: 13px;
235 color: var(--mainForegroundColor);
236
237 span:hover {
238 opacity: 0.8;
239 }
240
241 img {
242 @include avatar(18px);
243
244 margin-top: -2px;
245 margin-left: 7px;
246 }
247 }
248
249 my-help {
250 position: relative;
251 top: 1px;
252 margin-left: 2px;
253 }
254 }
255
256 my-feed {
257 margin-left: 5px;
258 margin-top: 1px;
259 }
260
261 .video-actions-rates {
262 margin: 20px 0 10px 0;
263 align-items: start;
264
265 .video-actions {
266 height: 40px; // Align with the title
267 display: flex;
268 align-items: center;
269
270 .action-button:not(:first-child),
271 .action-dropdown,
272 my-video-actions-dropdown {
273 margin-left: 10px;
274 }
275
276 .action-button {
277 @include peertube-button;
278 @include grey-button;
279 @include button-with-icon(21px, 0, -1px);
280 @include apply-svg-color($grey-foreground-color);
281
282 font-size: 15px;
283 font-weight: $font-semibold;
284 display: inline-block;
285 padding: 0 10px 0 10px;
286 white-space: nowrap;
287
288 &::after {
289 display: none;
290 }
291
292 &.action-button-like.activated {
293 background-color: $green;
294
295 my-global-icon {
296 @include apply-svg-color(#fff);
297 }
298 }
299
300 &.action-button-dislike.activated {
301 background-color: $red;
302
303 my-global-icon {
304 @include apply-svg-color(#fff);
305 }
306 }
307
308 &.action-button-save {
309 my-global-icon {
310 top: 0 !important;
311 right: -1px;
312 }
313 }
314
315 .icon-text {
316 margin-left: 3px;
317 }
318 }
319 }
320
321 .video-info-likes-dislikes-bar {
322 $likes-bar-height: 2px;
323 height: $likes-bar-height;
324 margin-top: -$likes-bar-height;
325 width: 186px;
326 background-color: $red;
327 position: relative;
328 top: 10px;
329
330 .likes-bar {
331 height: 100%;
332 background-color: $green;
333 }
334 }
335 }
336 }
337
338 .video-info-description {
339 margin: 20px 0;
340 font-size: 15px;
341
342 .video-info-description-html {
343 @include peertube-word-wrap;
344 }
345
346 .glyphicon, .description-loading {
347 margin-left: 3px;
348 }
349
350 .description-loading {
351 display: inline-block;
352 }
353
354 .video-info-description-more {
355 cursor: pointer;
356 font-weight: $font-semibold;
357 color: $grey-foreground-color;
358 font-size: 14px;
359
360 .glyphicon {
361 position: relative;
362 top: 2px;
363 }
364 }
365 }
366
367 .video-attributes .video-attribute {
368 font-size: 13px;
369 display: block;
370 margin-bottom: 12px;
371
372 .video-attribute-label {
373 min-width: 142px;
374 padding-right: 5px;
375 display: inline-block;
376 color: $grey-foreground-color;
377 font-weight: $font-bold;
378 }
379
380 a.video-attribute-value {
381 @include disable-default-a-behaviour;
382 color: var(--mainForegroundColor);
383
384 &:hover {
385 opacity: 0.9;
386 }
387 }
388
389 &.video-attribute-tags {
390 .video-attribute-value:not(:nth-child(2)) {
391 &::before {
392 content: ', '
393 }
394 }
395 }
396 }
397 }
398
399 /deep/ .other-videos {
400 padding-left: 15px;
401 flex-basis: $other-videos-width;
402
403 .title-page {
404 margin-top: 0 !important;
405 }
406
407 .video-miniature {
408 display: flex;
409 width: $other-videos-width;
410 height: 100%;
411 margin-bottom: 20px;
412 flex-wrap: wrap;
413
414 .video-thumbnail {
415 margin-right: 10px
416 }
417 }
418 }
419}
420
421my-video-comments {
422 display: inline-block;
423 width: 100%;
424 margin-bottom: 20px;
425}
426
427// If the view is not expanded, take into account the menu
428.privacy-concerns {
429 width: calc(100% - #{$menu-width});
430}
431
432@media screen and (max-width: $small-view) {
433 .privacy-concerns {
434 margin-left: $menu-width;
435 }
436}
437
438:host-context(.expanded) {
439 .privacy-concerns {
440 width: 100%;
441 margin-left: 0;
442 }
443}
444
445.privacy-concerns {
446 position: fixed;
447 bottom: 0;
448
449 padding: 5px 15px;
450
451 display: flex;
452 align-items: center;
453 justify-content: flex-start;
454 background-color: rgba(0, 0, 0, 0.9);
455 color: #fff;
456
457 .privacy-concerns-text {
458 margin: 0 5px;
459 }
460
461 a {
462 @include disable-default-a-behaviour;
463
464 color: var(--mainColor);
465 transition: color 0.3s;
466
467 &:hover {
468 color: #fff;
469 }
470 }
471
472 .privacy-concerns-okay {
473 background-color: var(--mainColor);
474 padding: 5px 8px 5px 7px;
475 margin-left: auto;
476 border-radius: 3px;
477 cursor: pointer;
478 transition: background-color 0.3s;
479 font-weight: $font-semibold;
480
481 &:hover {
482 background-color: #000;
483 }
484 }
485}
486
487@media screen and (max-width: 1600px) {
488 .video-bottom .video-info .video-attributes .video-attribute {
489 margin-bottom: 5px;
490 }
491}
492
493@media screen and (max-width: 1300px) {
494 .privacy-concerns {
495 font-size: 12px;
496 padding: 2px 5px;
497
498 .privacy-concerns-text {
499 margin: 0;
500 }
501 }
502}
503
504@media screen and (max-width: 1100px) {
505 #video-wrapper {
506 flex-direction: column;
507 justify-content: center;
508
509 .playlist {
510 @include playlist-below-player;
511 }
512 }
513
514 .video-bottom {
515 flex-direction: column;
516
517 /deep/ .other-videos {
518 padding-left: 0 !important;
519
520 /deep/ .video-miniature {
521 flex-direction: row;
522 width: auto;
523 }
524 }
525 }
526}
527
528@media screen and (max-width: 600px) {
529 .video-bottom {
530 margin: 20px 0 0 0 !important;
531
532 .video-info {
533 padding: 0;
534
535 .video-info-first-row {
536
537 .video-info-name {
538 font-size: 20px;
539 height: auto;
540 }
541 }
542 }
543 }
544
545 /deep/ .other-videos .video-miniature {
546 flex-direction: column;
547 }
548
549 .privacy-concerns {
550 width: 100%;
551
552 strong {
553 display: none;
554 }
555 }
556}
557
558@media screen and (max-width: 450px) {
559 .video-bottom {
560 .action-button .icon-text {
561 display: none !important;
562 }
563
564 .video-info .video-info-first-row {
565 .video-info-name {
566 font-size: 18px;
567 }
568
569 .video-info-date-views {
570 font-size: 14px;
571 }
572
573 .video-actions-rates {
574 margin-top: 10px;
575 }
576 }
577
578 .video-info-description {
579 font-size: 14px !important;
580 }
581 }
582}