diff options
-rw-r--r-- | client/src/assets/player/images/code.svg | 1 | ||||
-rw-r--r-- | client/src/assets/player/images/link-2.svg | 1 | ||||
-rw-r--r-- | client/src/assets/player/images/repeat.svg | 1 | ||||
-rw-r--r-- | client/src/assets/player/peertube-player-manager.ts | 9 | ||||
-rw-r--r-- | client/src/sass/player/context-menu.scss | 28 |
5 files changed, 37 insertions, 3 deletions
diff --git a/client/src/assets/player/images/code.svg b/client/src/assets/player/images/code.svg new file mode 100644 index 000000000..9280eda7f --- /dev/null +++ b/client/src/assets/player/images/code.svg | |||
@@ -0,0 +1 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="feather feather-code"><polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline></svg> \ No newline at end of file | |||
diff --git a/client/src/assets/player/images/link-2.svg b/client/src/assets/player/images/link-2.svg new file mode 100644 index 000000000..d43203590 --- /dev/null +++ b/client/src/assets/player/images/link-2.svg | |||
@@ -0,0 +1 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link-2"><path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path><line x1="8" y1="12" x2="16" y2="12"></line></svg> \ No newline at end of file | |||
diff --git a/client/src/assets/player/images/repeat.svg b/client/src/assets/player/images/repeat.svg new file mode 100644 index 000000000..0365462ab --- /dev/null +++ b/client/src/assets/player/images/repeat.svg | |||
@@ -0,0 +1 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="feather feather-repeat"><polyline points="17 1 21 5 17 9"></polyline><path d="M3 11V9a4 4 0 0 1 4-4h14"></path><polyline points="7 23 3 19 7 15"></polyline><path d="M21 13v2a4 4 0 0 1-4 4H3"></path></svg> \ No newline at end of file | |||
diff --git a/client/src/assets/player/peertube-player-manager.ts b/client/src/assets/player/peertube-player-manager.ts index 018845a54..b112e231f 100644 --- a/client/src/assets/player/peertube-player-manager.ts +++ b/client/src/assets/player/peertube-player-manager.ts | |||
@@ -500,7 +500,8 @@ export class PeertubePlayerManager { | |||
500 | const isLoopEnabled = player.options_['loop'] | 500 | const isLoopEnabled = player.options_['loop'] |
501 | const items = [ | 501 | const items = [ |
502 | { | 502 | { |
503 | label: isLoopEnabled ? player.localize('Stop playing in loop') : player.localize('Play in loop'), | 503 | icon: 'repeat', |
504 | label: player.localize('Play in loop') + (isLoopEnabled ? '<span class="vjs-icon-tick-white"></span>' : ''), | ||
504 | listener: function () { | 505 | listener: function () { |
505 | player.options_['loop'] = !isLoopEnabled | 506 | player.options_['loop'] = !isLoopEnabled |
506 | } | 507 | } |
@@ -518,6 +519,7 @@ export class PeertubePlayerManager { | |||
518 | } | 519 | } |
519 | }, | 520 | }, |
520 | { | 521 | { |
522 | icon: 'code', | ||
521 | label: player.localize('Copy embed code'), | 523 | label: player.localize('Copy embed code'), |
522 | listener: () => { | 524 | listener: () => { |
523 | copyToClipboard(buildVideoOrPlaylistEmbed(videoEmbedUrl, videoEmbedTitle)) | 525 | copyToClipboard(buildVideoOrPlaylistEmbed(videoEmbedUrl, videoEmbedTitle)) |
@@ -534,7 +536,10 @@ export class PeertubePlayerManager { | |||
534 | }) | 536 | }) |
535 | } | 537 | } |
536 | 538 | ||
537 | return items | 539 | return items.map(i => ({ |
540 | ...i, | ||
541 | label: `<span class="vjs-icon-${i.icon || 'link-2'}"></span>` + i.label | ||
542 | })) | ||
538 | } | 543 | } |
539 | 544 | ||
540 | // adding the menu | 545 | // adding the menu |
diff --git a/client/src/sass/player/context-menu.scss b/client/src/sass/player/context-menu.scss index ad673eea7..df78916c6 100644 --- a/client/src/sass/player/context-menu.scss +++ b/client/src/sass/player/context-menu.scss | |||
@@ -9,7 +9,8 @@ $context-menu-width: 350px; | |||
9 | .video-js .vjs-contextmenu-ui-menu { | 9 | .video-js .vjs-contextmenu-ui-menu { |
10 | position: absolute; | 10 | position: absolute; |
11 | background-color: rgba(0, 0, 0, 0.5); | 11 | background-color: rgba(0, 0, 0, 0.5); |
12 | padding: 5px 0; | 12 | padding: 8px 0; |
13 | border-radius: 4px; | ||
13 | width: $context-menu-width; | 14 | width: $context-menu-width; |
14 | 15 | ||
15 | .vjs-menu-content { | 16 | .vjs-menu-content { |
@@ -29,5 +30,30 @@ $context-menu-width: 350px; | |||
29 | &:hover { | 30 | &:hover { |
30 | background-color: rgba(255, 255, 255, 0.2); | 31 | background-color: rgba(255, 255, 255, 0.2); |
31 | } | 32 | } |
33 | |||
34 | [class^="vjs-icon-"] { | ||
35 | display: inline-flex; | ||
36 | position: relative; | ||
37 | top: 2px; | ||
38 | cursor: pointer; | ||
39 | width: 14px; | ||
40 | height: 14px; | ||
41 | background-color: white; | ||
42 | mask-size: cover; | ||
43 | margin-right: 0.8rem !important; | ||
44 | |||
45 | $icons: 'link-2', 'repeat', 'code', 'tick-white'; | ||
46 | |||
47 | @each $icon in $icons { | ||
48 | &[class$="-#{$icon}"] { | ||
49 | mask-image: url('#{$assets-path}/player/images/#{$icon}.svg'); | ||
50 | } | ||
51 | } | ||
52 | |||
53 | &[class$="-tick-white"] { | ||
54 | float: right; | ||
55 | margin: 0 !important; | ||
56 | } | ||
57 | } | ||
32 | } | 58 | } |
33 | } | 59 | } |