aboutsummaryrefslogtreecommitdiffhomepage
path: root/client/src/app
diff options
context:
space:
mode:
Diffstat (limited to 'client/src/app')
-rw-r--r--client/src/app/+admin/admin.component.scss5
-rw-r--r--client/src/app/+admin/follows/followers-list/followers-list.component.html5
-rw-r--r--client/src/app/+admin/follows/following-list/following-list.component.html5
-rw-r--r--client/src/app/+admin/follows/video-redundancies-list/video-redundancies-list.component.html5
-rw-r--r--client/src/app/+admin/moderation/abuse-list/abuse-list.component.html5
-rw-r--r--client/src/app/+admin/moderation/video-block-list/video-block-list.component.html5
-rw-r--r--client/src/app/+admin/plugins/plugins.component.html2
-rw-r--r--client/src/app/+admin/plugins/plugins.component.scss5
-rw-r--r--client/src/app/+admin/system/system.component.html2
-rw-r--r--client/src/app/+my-account/+my-account-video-channels/my-account-video-channels.component.html6
-rw-r--r--client/src/app/+my-account/my-account-history/my-account-history.component.html6
-rw-r--r--client/src/app/+my-account/my-account-ownership/my-account-ownership.component.html6
-rw-r--r--client/src/app/+my-account/my-account-subscriptions/my-account-subscriptions.component.html6
-rw-r--r--client/src/app/+my-account/my-account-video-imports/my-account-video-imports.component.html6
-rw-r--r--client/src/app/+my-account/my-account-video-playlists/my-account-video-playlists.component.html8
-rw-r--r--client/src/app/+my-account/my-account-video-playlists/my-account-video-playlists.component.scss4
-rw-r--r--client/src/app/+my-account/my-account-videos/my-account-videos.component.html9
-rw-r--r--client/src/app/+my-account/my-account-videos/my-account-videos.component.scss6
-rw-r--r--client/src/app/+my-account/my-account.component.scss5
-rw-r--r--client/src/app/+videos/+video-edit/video-add.component.scss19
-rw-r--r--client/src/app/shared/shared-main/misc/top-menu-dropdown.component.html16
-rw-r--r--client/src/app/shared/shared-main/misc/top-menu-dropdown.component.scss6
-rw-r--r--client/src/app/shared/shared-main/misc/top-menu-dropdown.component.ts23
-rw-r--r--client/src/app/shared/shared-moderation/account-blocklist.component.html5
-rw-r--r--client/src/app/shared/shared-moderation/server-blocklist.component.html5
25 files changed, 110 insertions, 65 deletions
diff --git a/client/src/app/+admin/admin.component.scss b/client/src/app/+admin/admin.component.scss
index ef8965c3f..61a2744ba 100644
--- a/client/src/app/+admin/admin.component.scss
+++ b/client/src/app/+admin/admin.component.scss
@@ -1,3 +1,8 @@
1@import '_variables';
2@import '_mixins';
3
1my-top-menu-dropdown { 4my-top-menu-dropdown {
2 flex-grow: 1; 5 flex-grow: 1;
3} 6}
7
8@include sub-menu-h1;
diff --git a/client/src/app/+admin/follows/followers-list/followers-list.component.html b/client/src/app/+admin/follows/followers-list/followers-list.component.html
index ce603459e..f50828bb9 100644
--- a/client/src/app/+admin/follows/followers-list/followers-list.component.html
+++ b/client/src/app/+admin/follows/followers-list/followers-list.component.html
@@ -1,3 +1,8 @@
1<h1>
2 <my-global-icon iconName="follower" aria-hidden="true"></my-global-icon>
3 <ng-container i18n>Instances following you</ng-container>
4</h1>
5
1<p-table 6<p-table
2 [value]="followers" [lazy]="true" [paginator]="totalRecords > 0" [totalRecords]="totalRecords" [rows]="rowsPerPage" [rowsPerPageOptions]="rowsPerPageOptions" 7 [value]="followers" [lazy]="true" [paginator]="totalRecords > 0" [totalRecords]="totalRecords" [rows]="rowsPerPage" [rowsPerPageOptions]="rowsPerPageOptions"
3 [sortField]="sort.field" [sortOrder]="sort.order" (onLazyLoad)="loadLazy($event)" (onPage)="onPage($event)" 8 [sortField]="sort.field" [sortOrder]="sort.order" (onLazyLoad)="loadLazy($event)" (onPage)="onPage($event)"
diff --git a/client/src/app/+admin/follows/following-list/following-list.component.html b/client/src/app/+admin/follows/following-list/following-list.component.html
index 500ab13fd..7d1a3d7f3 100644
--- a/client/src/app/+admin/follows/following-list/following-list.component.html
+++ b/client/src/app/+admin/follows/following-list/following-list.component.html
@@ -1,3 +1,8 @@
1<h1>
2 <my-global-icon iconName="following" aria-hidden="true"></my-global-icon>
3 <ng-container i18n>Instances you follow</ng-container>
4</h1>
5
1<p-table 6<p-table
2 [value]="following" [lazy]="true" [paginator]="totalRecords > 0" [totalRecords]="totalRecords" [rows]="rowsPerPage" [rowsPerPageOptions]="rowsPerPageOptions" 7 [value]="following" [lazy]="true" [paginator]="totalRecords > 0" [totalRecords]="totalRecords" [rows]="rowsPerPage" [rowsPerPageOptions]="rowsPerPageOptions"
3 [sortField]="sort.field" [sortOrder]="sort.order" (onLazyLoad)="loadLazy($event)" (onPage)="onPage($event)" 8 [sortField]="sort.field" [sortOrder]="sort.order" (onLazyLoad)="loadLazy($event)" (onPage)="onPage($event)"
diff --git a/client/src/app/+admin/follows/video-redundancies-list/video-redundancies-list.component.html b/client/src/app/+admin/follows/video-redundancies-list/video-redundancies-list.component.html
index 44586cb67..552c9f02d 100644
--- a/client/src/app/+admin/follows/video-redundancies-list/video-redundancies-list.component.html
+++ b/client/src/app/+admin/follows/video-redundancies-list/video-redundancies-list.component.html
@@ -1,3 +1,8 @@
1<h1>
2 <my-global-icon iconName="videos" aria-hidden="true"></my-global-icon>
3 <ng-container i18n>Videos redundancies</ng-container>
4</h1>
5
1<div class="admin-sub-header"> 6<div class="admin-sub-header">
2 <div class="select-filter-block"> 7 <div class="select-filter-block">
3 <label for="displayType" i18n>Display</label> 8 <label for="displayType" i18n>Display</label>
diff --git a/client/src/app/+admin/moderation/abuse-list/abuse-list.component.html b/client/src/app/+admin/moderation/abuse-list/abuse-list.component.html
index 99502304d..48b31b99c 100644
--- a/client/src/app/+admin/moderation/abuse-list/abuse-list.component.html
+++ b/client/src/app/+admin/moderation/abuse-list/abuse-list.component.html
@@ -1,3 +1,8 @@
1<h1>
2 <my-global-icon iconName="flag" aria-hidden="true"></my-global-icon>
3 <ng-container i18n>Reports</ng-container>
4</h1>
5
1<p-table 6<p-table
2 [value]="abuses" [lazy]="true" [paginator]="totalRecords > 0" [totalRecords]="totalRecords" [rows]="rowsPerPage" [rowsPerPageOptions]="rowsPerPageOptions" 7 [value]="abuses" [lazy]="true" [paginator]="totalRecords > 0" [totalRecords]="totalRecords" [rows]="rowsPerPage" [rowsPerPageOptions]="rowsPerPageOptions"
3 [sortField]="sort.field" [sortOrder]="sort.order" (onLazyLoad)="loadLazy($event)" dataKey="id" [resizableColumns]="true" [lazyLoadOnInit]="false" 8 [sortField]="sort.field" [sortOrder]="sort.order" (onLazyLoad)="loadLazy($event)" dataKey="id" [resizableColumns]="true" [lazyLoadOnInit]="false"
diff --git a/client/src/app/+admin/moderation/video-block-list/video-block-list.component.html b/client/src/app/+admin/moderation/video-block-list/video-block-list.component.html
index ec20e46f1..278e68a96 100644
--- a/client/src/app/+admin/moderation/video-block-list/video-block-list.component.html
+++ b/client/src/app/+admin/moderation/video-block-list/video-block-list.component.html
@@ -1,3 +1,8 @@
1<h1>
2 <my-global-icon iconName="cross" aria-hidden="true"></my-global-icon>
3 <ng-container i18n>Video blocks</ng-container>
4</h1>
5
1<p-table 6<p-table
2 [value]="blocklist" [lazy]="true" [paginator]="totalRecords > 0" [totalRecords]="totalRecords" [rows]="rowsPerPage" [rowsPerPageOptions]="rowsPerPageOptions" 7 [value]="blocklist" [lazy]="true" [paginator]="totalRecords > 0" [totalRecords]="totalRecords" [rows]="rowsPerPage" [rowsPerPageOptions]="rowsPerPageOptions"
3 [sortField]="sort.field" [sortOrder]="sort.order" (onLazyLoad)="loadLazy($event)" dataKey="id" 8 [sortField]="sort.field" [sortOrder]="sort.order" (onLazyLoad)="loadLazy($event)" dataKey="id"
diff --git a/client/src/app/+admin/plugins/plugins.component.html b/client/src/app/+admin/plugins/plugins.component.html
index e2b927db8..199ae12cf 100644
--- a/client/src/app/+admin/plugins/plugins.component.html
+++ b/client/src/app/+admin/plugins/plugins.component.html
@@ -1,6 +1,4 @@
1<div class="admin-sub-header"> 1<div class="admin-sub-header">
2 <h1 i18n class="form-sub-title">Plugins/Themes</h1>
3
4 <div class="admin-sub-nav"> 2 <div class="admin-sub-nav">
5 <a i18n routerLink="list-installed" routerLinkActive="active">Installed</a> 3 <a i18n routerLink="list-installed" routerLinkActive="active">Installed</a>
6 4
diff --git a/client/src/app/+admin/plugins/plugins.component.scss b/client/src/app/+admin/plugins/plugins.component.scss
index 04ca8126a..ce9825f53 100644
--- a/client/src/app/+admin/plugins/plugins.component.scss
+++ b/client/src/app/+admin/plugins/plugins.component.scss
@@ -1,11 +1,6 @@
1@import '_variables'; 1@import '_variables';
2@import '_mixins'; 2@import '_mixins';
3 3
4.form-sub-title {
5 flex-grow: 0;
6 margin-right: 30px;
7}
8
9@media screen and (max-width: $small-view) { 4@media screen and (max-width: $small-view) {
10 ::ng-deep .plugins .plugin .first-row { 5 ::ng-deep .plugins .plugin .first-row {
11 flex-wrap: wrap; 6 flex-wrap: wrap;
diff --git a/client/src/app/+admin/system/system.component.html b/client/src/app/+admin/system/system.component.html
index 4f9521c0c..5385887b7 100644
--- a/client/src/app/+admin/system/system.component.html
+++ b/client/src/app/+admin/system/system.component.html
@@ -1,6 +1,4 @@
1<div class="admin-sub-header"> 1<div class="admin-sub-header">
2 <h1 i18n class="form-sub-title">System</h1>
3
4 <div class="admin-sub-nav"> 2 <div class="admin-sub-nav">
5 <a *ngIf="hasJobsRight()" i18n routerLink="jobs" routerLinkActive="active">Jobs</a> 3 <a *ngIf="hasJobsRight()" i18n routerLink="jobs" routerLinkActive="active">Jobs</a>
6 4
diff --git a/client/src/app/+my-account/+my-account-video-channels/my-account-video-channels.component.html b/client/src/app/+my-account/+my-account-video-channels/my-account-video-channels.component.html
index b2e8210d3..e8d44a45e 100644
--- a/client/src/app/+my-account/+my-account-video-channels/my-account-video-channels.component.html
+++ b/client/src/app/+my-account/+my-account-video-channels/my-account-video-channels.component.html
@@ -1,4 +1,8 @@
1<h1 class="sr-only" i18n>My channels</h1> 1<h1>
2 <my-global-icon iconName="channel" aria-hidden="true"></my-global-icon>
3 <ng-container i18n>My channels</ng-container>
4</h1>
5
2<div class="video-channels-header"> 6<div class="video-channels-header">
3 <a class="create-button" routerLink="create"> 7 <a class="create-button" routerLink="create">
4 <my-global-icon iconName="add" aria-hidden="true"></my-global-icon> 8 <my-global-icon iconName="add" aria-hidden="true"></my-global-icon>
diff --git a/client/src/app/+my-account/my-account-history/my-account-history.component.html b/client/src/app/+my-account/my-account-history/my-account-history.component.html
index cfa5ca636..cff46a41d 100644
--- a/client/src/app/+my-account/my-account-history/my-account-history.component.html
+++ b/client/src/app/+my-account/my-account-history/my-account-history.component.html
@@ -1,4 +1,8 @@
1<h1 class="sr-only" i18n>History</h1> 1<h1>
2 <my-global-icon iconName="history" aria-hidden="true"></my-global-icon>
3 <ng-container i18n>My history</ng-container>
4</h1>
5
2<div class="top-buttons"> 6<div class="top-buttons">
3 <div class="history-switch"> 7 <div class="history-switch">
4 <p-inputSwitch [(ngModel)]="videosHistoryEnabled" (ngModelChange)="onVideosHistoryChange()"></p-inputSwitch> 8 <p-inputSwitch [(ngModel)]="videosHistoryEnabled" (ngModelChange)="onVideosHistoryChange()"></p-inputSwitch>
diff --git a/client/src/app/+my-account/my-account-ownership/my-account-ownership.component.html b/client/src/app/+my-account/my-account-ownership/my-account-ownership.component.html
index 090ec7b44..be5d41f3b 100644
--- a/client/src/app/+my-account/my-account-ownership/my-account-ownership.component.html
+++ b/client/src/app/+my-account/my-account-ownership/my-account-ownership.component.html
@@ -1,4 +1,8 @@
1<h1 class="sr-only" i18n>Ownership changes</h1> 1<h1>
2 <my-global-icon iconName="download" aria-hidden="true"></my-global-icon>
3 <ng-container i18n>My ownership changes</ng-container>
4</h1>
5
2<p-table 6<p-table
3 [value]="videoChangeOwnerships" 7 [value]="videoChangeOwnerships"
4 [lazy]="true" 8 [lazy]="true"
diff --git a/client/src/app/+my-account/my-account-subscriptions/my-account-subscriptions.component.html b/client/src/app/+my-account/my-account-subscriptions/my-account-subscriptions.component.html
index ce41360bf..3b4c3022e 100644
--- a/client/src/app/+my-account/my-account-subscriptions/my-account-subscriptions.component.html
+++ b/client/src/app/+my-account/my-account-subscriptions/my-account-subscriptions.component.html
@@ -1,4 +1,8 @@
1<h1 class="sr-only" i18n>Subscriptions</h1> 1<h1>
2 <my-global-icon iconName="subscriptions" aria-hidden="true"></my-global-icon>
3 <ng-container i18n>My subscriptions</ng-container>
4</h1>
5
2<div class="no-results" i18n *ngIf="pagination.totalItems === 0">You don't have any subscriptions yet.</div> 6<div class="no-results" i18n *ngIf="pagination.totalItems === 0">You don't have any subscriptions yet.</div>
3 7
4<div class="video-channels" myInfiniteScroller [autoInit]="true" (nearOfBottom)="onNearOfBottom()" [dataObservable]="onDataSubject.asObservable()"> 8<div class="video-channels" myInfiniteScroller [autoInit]="true" (nearOfBottom)="onNearOfBottom()" [dataObservable]="onDataSubject.asObservable()">
diff --git a/client/src/app/+my-account/my-account-video-imports/my-account-video-imports.component.html b/client/src/app/+my-account/my-account-video-imports/my-account-video-imports.component.html
index 4caa076a3..98a2039cc 100644
--- a/client/src/app/+my-account/my-account-video-imports/my-account-video-imports.component.html
+++ b/client/src/app/+my-account/my-account-video-imports/my-account-video-imports.component.html
@@ -1,4 +1,8 @@
1<h1 class="sr-only" i18n>Imports</h1> 1<h1>
2 <my-global-icon iconName="cloud-download" aria-hidden="true"></my-global-icon>
3 <ng-container i18n>My imports</ng-container>
4</h1>
5
2<p-table 6<p-table
3 [value]="videoImports" [lazy]="true" [paginator]="totalRecords > 0" [totalRecords]="totalRecords" [rows]="rowsPerPage" [rowsPerPageOptions]="rowsPerPageOptions" 7 [value]="videoImports" [lazy]="true" [paginator]="totalRecords > 0" [totalRecords]="totalRecords" [rows]="rowsPerPage" [rowsPerPageOptions]="rowsPerPageOptions"
4 [sortField]="sort.field" [sortOrder]="sort.order" (onLazyLoad)="loadLazy($event)" dataKey="id" 8 [sortField]="sort.field" [sortOrder]="sort.order" (onLazyLoad)="loadLazy($event)" dataKey="id"
diff --git a/client/src/app/+my-account/my-account-video-playlists/my-account-video-playlists.component.html b/client/src/app/+my-account/my-account-video-playlists/my-account-video-playlists.component.html
index 1ba2c35ef..8d69c3a5a 100644
--- a/client/src/app/+my-account/my-account-video-playlists/my-account-video-playlists.component.html
+++ b/client/src/app/+my-account/my-account-video-playlists/my-account-video-playlists.component.html
@@ -1,6 +1,10 @@
1<div class="video-playlists-header"> 1<h1>
2 <h1 i18n>Playlists <span class="badge badge-secondary">{{ pagination.totalItems }}</span></h1> 2 <my-global-icon iconName="playlists" aria-hidden="true"></my-global-icon>
3 <ng-container i18n>My playlists</ng-container> <span class="badge badge-secondary">{{ pagination.totalItems }}</span>
4</h1>
5
3 6
7<div class="video-playlists-header">
4 <input type="text" placeholder="Search your playlists" i18n-placeholder [(ngModel)]="videoPlaylistsSearch" (ngModelChange)="onVideoPlaylistSearchChanged()" /> 8 <input type="text" placeholder="Search your playlists" i18n-placeholder [(ngModel)]="videoPlaylistsSearch" (ngModelChange)="onVideoPlaylistSearchChanged()" />
5 9
6 <a class="create-button" routerLink="create"> 10 <a class="create-button" routerLink="create">
diff --git a/client/src/app/+my-account/my-account-video-playlists/my-account-video-playlists.component.scss b/client/src/app/+my-account/my-account-video-playlists/my-account-video-playlists.component.scss
index 41e7851fd..4381d74b0 100644
--- a/client/src/app/+my-account/my-account-video-playlists/my-account-video-playlists.component.scss
+++ b/client/src/app/+my-account/my-account-video-playlists/my-account-video-playlists.component.scss
@@ -41,10 +41,6 @@
41 input[type=text] { 41 input[type=text] {
42 @include peertube-input-text(300px); 42 @include peertube-input-text(300px);
43 } 43 }
44
45 h1 {
46 font-size: 1.5rem;
47 }
48} 44}
49 45
50@media screen and (max-width: $small-view) { 46@media screen and (max-width: $small-view) {
diff --git a/client/src/app/+my-account/my-account-videos/my-account-videos.component.html b/client/src/app/+my-account/my-account-videos/my-account-videos.component.html
index cb149b607..6d098b507 100644
--- a/client/src/app/+my-account/my-account-videos/my-account-videos.component.html
+++ b/client/src/app/+my-account/my-account-videos/my-account-videos.component.html
@@ -1,9 +1,10 @@
1<div class="videos-header"> 1<h1>
2 <h1 i18n>Videos <span class="badge badge-secondary">{{ pagination.totalItems }}</span></h1> 2 <my-global-icon iconName="videos" aria-hidden="true"></my-global-icon>
3 <ng-container i18n>My videos</ng-container><span class="badge badge-secondary"> {{ pagination.totalItems }}</span>
4</h1>
3 5
6<div class="videos-header">
4 <input type="text" placeholder="Search your videos" i18n-placeholder [(ngModel)]="videosSearch" (ngModelChange)="onVideosSearchChanged()" /> 7 <input type="text" placeholder="Search your videos" i18n-placeholder [(ngModel)]="videosSearch" (ngModelChange)="onVideosSearchChanged()" />
5
6 <div class="fake-element"></div>
7</div> 8</div>
8 9
9<my-videos-selection 10<my-videos-selection
diff --git a/client/src/app/+my-account/my-account-videos/my-account-videos.component.scss b/client/src/app/+my-account/my-account-videos/my-account-videos.component.scss
index 18c1ae288..9225fc5fd 100644
--- a/client/src/app/+my-account/my-account-videos/my-account-videos.component.scss
+++ b/client/src/app/+my-account/my-account-videos/my-account-videos.component.scss
@@ -6,12 +6,6 @@
6 justify-content: space-between; 6 justify-content: space-between;
7 margin: 20px 0 50px; 7 margin: 20px 0 50px;
8 8
9 h1,
10 .fake-element {
11 flex: 1;
12 font-size: 1.5rem;
13 }
14
15 input[type=text] { 9 input[type=text] {
16 @include peertube-input-text(300px); 10 @include peertube-input-text(300px);
17 } 11 }
diff --git a/client/src/app/+my-account/my-account.component.scss b/client/src/app/+my-account/my-account.component.scss
index fd47aec86..a5bb499b4 100644
--- a/client/src/app/+my-account/my-account.component.scss
+++ b/client/src/app/+my-account/my-account.component.scss
@@ -1,3 +1,6 @@
1@import '_variables';
2@import '_mixins';
3
1.row { 4.row {
2 flex-direction: column; 5 flex-direction: column;
3 width: 100%; 6 width: 100%;
@@ -5,4 +8,6 @@
5 & > my-top-menu-dropdown:nth-child(1) { 8 & > my-top-menu-dropdown:nth-child(1) {
6 flex-grow: 1; 9 flex-grow: 1;
7 } 10 }
11
12 @include sub-menu-h1;
8} 13}
diff --git a/client/src/app/+videos/+video-edit/video-add.component.scss b/client/src/app/+videos/+video-edit/video-add.component.scss
index 0ad57d897..b9fef9fce 100644
--- a/client/src/app/+videos/+video-edit/video-add.component.scss
+++ b/client/src/app/+videos/+video-edit/video-add.component.scss
@@ -30,16 +30,25 @@ $nav-link-height: 40px;
30 padding: 0 30px !important; 30 padding: 0 30px !important;
31 font-size: 15px; 31 font-size: 15px;
32 32
33 border: $border-width $border-type transparent;
34
35 span {
36 border-bottom: 2px solid transparent;
37 }
38
33 &.active { 39 &.active {
34 border: $border-width $border-type $border-color; 40 border-color: $border-color;
35 border-bottom: none; 41 border-bottom-color: transparent;
36 background-color: pvar(--submenuColor) !important; 42 background-color: pvar(--submenuColor) !important;
37 43
38 span { 44 span {
39 border-bottom: 2px solid pvar(--mainColor); 45 border-bottom-color: pvar(--mainColor);
40 font-weight: $font-bold;
41 } 46 }
42 } 47 }
48
49 &:hover:not(.active) {
50 border-color: transparent;
51 }
43 } 52 }
44} 53}
45 54
@@ -71,7 +80,7 @@ $nav-link-height: 40px;
71 80
72 /* Hide active tab style to not have a moving tab effect */ 81 /* Hide active tab style to not have a moving tab effect */
73 a.nav-link.active { 82 a.nav-link.active {
74 border: none; 83 border-color: transparent;
75 background-color: pvar(--mainBackgroundColor) !important; 84 background-color: pvar(--mainBackgroundColor) !important;
76 } 85 }
77 } 86 }
diff --git a/client/src/app/shared/shared-main/misc/top-menu-dropdown.component.html b/client/src/app/shared/shared-main/misc/top-menu-dropdown.component.html
index aeaceb662..c737b40c7 100644
--- a/client/src/app/shared/shared-main/misc/top-menu-dropdown.component.html
+++ b/client/src/app/shared/shared-main/misc/top-menu-dropdown.component.html
@@ -4,26 +4,28 @@
4 <a *ngIf="menuEntry.routerLink" [routerLink]="menuEntry.routerLink" routerLinkActive="active" class="title-page title-page-settings">{{ menuEntry.label }}</a> 4 <a *ngIf="menuEntry.routerLink" [routerLink]="menuEntry.routerLink" routerLinkActive="active" class="title-page title-page-settings">{{ menuEntry.label }}</a>
5 5
6 <div *ngIf="!menuEntry.routerLink" ngbDropdown class="parent-entry" 6 <div *ngIf="!menuEntry.routerLink" ngbDropdown class="parent-entry"
7 #dropdown="ngbDropdown" (mouseleave)="closeDropdownIfHovered(dropdown)"> 7 #dropdown="ngbDropdown" autoClose="outside">
8 <span 8 <span
9 *ngIf="isInSmallView" 9 *ngIf="isInSmallView"
10 tabindex=0
10 [ngClass]="{ active: !!suffixLabels[menuEntry.label] }" 11 [ngClass]="{ active: !!suffixLabels[menuEntry.label] }"
11 (click)="openModal(id)" role="button" class="title-page title-page-settings"> 12 (click)="openModal(id)" (keydown.enter)="openModal(id)"
13 role="button" class="title-page title-page-settings">
12 <ng-container i18n>{{ menuEntry.label }}</ng-container> 14 <ng-container i18n>{{ menuEntry.label }}</ng-container>
13 <ng-container *ngIf="!!suffixLabels[menuEntry.label]"> - {{ suffixLabels[menuEntry.label] }}</ng-container>
14 </span> 15 </span>
15 16
16 <span 17 <span
17 *ngIf="!isInSmallView" 18 *ngIf="!isInSmallView"
18 (mouseenter)="openDropdownOnHover(dropdown)" [ngClass]="{ active: !!suffixLabels[menuEntry.label] }" ngbDropdownAnchor 19 tabindex=0
19 (click)="dropdownAnchorClicked(dropdown)" role="button" class="title-page title-page-settings" 20 [ngClass]="{ active: !!suffixLabels[menuEntry.label] }" ngbDropdownAnchor
21 (click)="dropdownAnchorClicked(dropdown)" (keydown.enter)="dropdownAnchorClicked(dropdown)"
22 role="button" class="title-page title-page-settings"
20 > 23 >
21 <ng-container i18n>{{ menuEntry.label }}</ng-container> 24 <ng-container i18n>{{ menuEntry.label }}</ng-container>
22 <ng-container *ngIf="!!suffixLabels[menuEntry.label]"> - {{ suffixLabels[menuEntry.label] }}</ng-container>
23 </span> 25 </span>
24 26
25 <div ngbDropdownMenu> 27 <div ngbDropdownMenu>
26 <a *ngFor="let menuChild of menuEntry.children" class="dropdown-item" [ngClass]="{ icon: hasIcons }" [routerLink]="menuChild.routerLink"> 28 <a *ngFor="let menuChild of menuEntry.children" class="dropdown-item" [ngClass]="{ icon: hasIcons, active: suffixLabels[menuEntry.label] === menuChild.label }" [routerLink]="menuChild.routerLink">
27 <my-global-icon *ngIf="menuChild.iconName" [iconName]="menuChild.iconName" aria-hidden="true"></my-global-icon> 29 <my-global-icon *ngIf="menuChild.iconName" [iconName]="menuChild.iconName" aria-hidden="true"></my-global-icon>
28 30
29 {{ menuChild.label }} 31 {{ menuChild.label }}
diff --git a/client/src/app/shared/shared-main/misc/top-menu-dropdown.component.scss b/client/src/app/shared/shared-main/misc/top-menu-dropdown.component.scss
index 84dd7dce3..655c38489 100644
--- a/client/src/app/shared/shared-main/misc/top-menu-dropdown.component.scss
+++ b/client/src/app/shared/shared-main/misc/top-menu-dropdown.component.scss
@@ -1,6 +1,12 @@
1@import '_variables'; 1@import '_variables';
2@import '_mixins'; 2@import '_mixins';
3 3
4:host {
5 display: block;
6 height: $sub-menu-height;
7 margin-bottom: $sub-menu-margin-bottom;
8}
9
4.parent-entry { 10.parent-entry {
5 span[role=button] { 11 span[role=button] {
6 cursor: pointer; 12 cursor: pointer;
diff --git a/client/src/app/shared/shared-main/misc/top-menu-dropdown.component.ts b/client/src/app/shared/shared-main/misc/top-menu-dropdown.component.ts
index 5909db0b5..66f8f7e55 100644
--- a/client/src/app/shared/shared-main/misc/top-menu-dropdown.component.ts
+++ b/client/src/app/shared/shared-main/misc/top-menu-dropdown.component.ts
@@ -33,7 +33,6 @@ export class TopMenuDropdownComponent implements OnInit, OnDestroy {
33 isModalOpened = false 33 isModalOpened = false
34 currentMenuEntryIndex: number 34 currentMenuEntryIndex: number
35 35
36 private openedOnHover = false
37 private routeSub: Subscription 36 private routeSub: Subscription
38 37
39 constructor ( 38 constructor (
@@ -68,32 +67,10 @@ export class TopMenuDropdownComponent implements OnInit, OnDestroy {
68 if (this.routeSub) this.routeSub.unsubscribe() 67 if (this.routeSub) this.routeSub.unsubscribe()
69 } 68 }
70 69
71 openDropdownOnHover (dropdown: NgbDropdown) {
72 this.openedOnHover = true
73 dropdown.open()
74
75 // Menu was closed
76 dropdown.openChange
77 .pipe(take(1))
78 .subscribe(() => this.openedOnHover = false)
79 }
80
81 dropdownAnchorClicked (dropdown: NgbDropdown) { 70 dropdownAnchorClicked (dropdown: NgbDropdown) {
82 if (this.openedOnHover) {
83 this.openedOnHover = false
84 return
85 }
86
87 return dropdown.toggle() 71 return dropdown.toggle()
88 } 72 }
89 73
90 closeDropdownIfHovered (dropdown: NgbDropdown) {
91 if (this.openedOnHover === false) return
92
93 dropdown.close()
94 this.openedOnHover = false
95 }
96
97 openModal (index: number) { 74 openModal (index: number) {
98 this.currentMenuEntryIndex = index 75 this.currentMenuEntryIndex = index
99 this.isModalOpened = true 76 this.isModalOpened = true
diff --git a/client/src/app/shared/shared-moderation/account-blocklist.component.html b/client/src/app/shared/shared-moderation/account-blocklist.component.html
index 486785f35..df98cf84e 100644
--- a/client/src/app/shared/shared-moderation/account-blocklist.component.html
+++ b/client/src/app/shared/shared-moderation/account-blocklist.component.html
@@ -1,3 +1,8 @@
1<h1>
2 <my-global-icon iconName="user" aria-hidden="true"></my-global-icon>
3 <ng-container i18n>Muted accounts</ng-container>
4</h1>
5
1<p-table 6<p-table
2 [value]="blockedAccounts" [lazy]="true" [paginator]="totalRecords > 0" [totalRecords]="totalRecords" [rows]="rowsPerPage" [rowsPerPageOptions]="rowsPerPageOptions" 7 [value]="blockedAccounts" [lazy]="true" [paginator]="totalRecords > 0" [totalRecords]="totalRecords" [rows]="rowsPerPage" [rowsPerPageOptions]="rowsPerPageOptions"
3 [sortField]="sort.field" [sortOrder]="sort.order" (onLazyLoad)="loadLazy($event)" (onPage)="onPage($event)" 8 [sortField]="sort.field" [sortOrder]="sort.order" (onLazyLoad)="loadLazy($event)" (onPage)="onPage($event)"
diff --git a/client/src/app/shared/shared-moderation/server-blocklist.component.html b/client/src/app/shared/shared-moderation/server-blocklist.component.html
index 977e0e141..94efb4b8b 100644
--- a/client/src/app/shared/shared-moderation/server-blocklist.component.html
+++ b/client/src/app/shared/shared-moderation/server-blocklist.component.html
@@ -1,3 +1,8 @@
1<h1>
2 <my-global-icon iconName="server" aria-hidden="true"></my-global-icon>
3 <ng-container i18n>Muted servers</ng-container>
4</h1>
5
1<p-table 6<p-table
2 [value]="blockedServers" [lazy]="true" [paginator]="totalRecords > 0" [totalRecords]="totalRecords" [rows]="rowsPerPage" [rowsPerPageOptions]="rowsPerPageOptions" 7 [value]="blockedServers" [lazy]="true" [paginator]="totalRecords > 0" [totalRecords]="totalRecords" [rows]="rowsPerPage" [rowsPerPageOptions]="rowsPerPageOptions"
3 [sortField]="sort.field" [sortOrder]="sort.order" (onLazyLoad)="loadLazy($event)" (onPage)="onPage($event)" 8 [sortField]="sort.field" [sortOrder]="sort.order" (onLazyLoad)="loadLazy($event)" (onPage)="onPage($event)"