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