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