diff --git a/client/src/app/+admin/plugins/plugin-search/plugin-search.component.scss b/client/src/app/+admin/plugins/plugin-search/plugin-search.component.scss
index 16b838682..8bb710fc2 100644
--- a/client/src/app/+admin/plugins/plugin-search/plugin-search.component.scss
+++ b/client/src/app/+admin/plugins/plugin-search/plugin-search.component.scss
@@ -1,27 +1,27 @@
@use '_variables' as *;
@use '_mixins' as *;
-.search-bar {
- display: flex;
- justify-content: center;
- margin: 30px 0;
-
- input {
- @include peertube-input-text(60%);
- height: 35px;
- }
-}
-
-.result-title {
+.result-and-search {
font-size: 22px;
font-weight: 600;
- margin-bottom: 15px;
+ margin: 30px 0 15px;
+ display: flex;
my-global-icon {
@include margin-right(5px);
}
}
+.search-bar {
+ margin-left: auto;
+
+ input {
+ @include peertube-input-text(500px);
+
+ height: 35px;
+ }
+}
+
.badge {
@include margin-left(15px);
diff --git a/client/src/app/+admin/plugins/plugin-search/plugin-search.component.ts b/client/src/app/+admin/plugins/plugin-search/plugin-search.component.ts
index ef704c83b..d39c2ea1c 100644
--- a/client/src/app/+admin/plugins/plugin-search/plugin-search.component.ts
+++ b/client/src/app/+admin/plugins/plugin-search/plugin-search.component.ts
@@ -9,14 +9,10 @@ import { PeerTubePluginIndex, PluginType } from '@shared/models'
@Component({
selector: 'my-plugin-search',
templateUrl: './plugin-search.component.html',
- styleUrls: [
- '../shared/toggle-plugin-type.scss',
- './plugin-search.component.scss'
- ]
+ styleUrls: [ './plugin-search.component.scss' ]
})
export class PluginSearchComponent implements OnInit {
- pluginTypeOptions: { label: string, value: PluginType }[] = []
- pluginType: PluginType = PluginType.PLUGIN
+ pluginType: PluginType
pagination: ComponentPagination = {
currentPage: 1,
@@ -44,24 +40,30 @@ export class PluginSearchComponent implements OnInit {
private router: Router,
private route: ActivatedRoute
) {
- this.pluginTypeOptions = this.pluginApiService.getPluginTypeOptions()
}
ngOnInit () {
- const query = this.route.snapshot.queryParams
- if (query['pluginType']) this.pluginType = parseInt(query['pluginType'], 10)
+ if (!this.route.snapshot.queryParams['pluginType']) {
+ const queryParams = { pluginType: PluginType.PLUGIN }
+
+ this.router.navigate([], { queryParams })
+ }
+
+ this.route.queryParams.subscribe(query => {
+ if (!query['pluginType']) return
+
+ this.pluginType = parseInt(query['pluginType'], 10)
+ this.search = query['search'] || ''
+
+ this.reloadPlugins()
+ })
this.searchSubject.asObservable()
.pipe(
debounceTime(400),
distinctUntilChanged()
)
- .subscribe(search => {
- this.search = search
- this.reloadPlugins()
- })
-
- this.reloadPlugins()
+ .subscribe(search => this.router.navigate([], { queryParams: { search }, queryParamsHandling: 'merge' }))
}
onSearchChange (event: Event) {
@@ -74,8 +76,6 @@ export class PluginSearchComponent implements OnInit {
this.pagination.currentPage = 1
this.plugins = []
- this.router.navigate([], { queryParams: { pluginType: this.pluginType } })
-
this.loadMorePlugins()
}
diff --git a/client/src/app/+admin/plugins/plugins.component.html b/client/src/app/+admin/plugins/plugins.component.html
deleted file mode 100644
index 199ae12cf..000000000
--- a/client/src/app/+admin/plugins/plugins.component.html
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/client/src/app/+admin/plugins/plugins.component.ts b/client/src/app/+admin/plugins/plugins.component.ts
deleted file mode 100644
index de06c0671..000000000
--- a/client/src/app/+admin/plugins/plugins.component.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { Component } from '@angular/core'
-
-@Component({
- templateUrl: './plugins.component.html'
-})
-export class PluginsComponent {
-}
diff --git a/client/src/app/+admin/plugins/plugins.routes.ts b/client/src/app/+admin/plugins/plugins.routes.ts
index 4cf55dda2..f735a490b 100644
--- a/client/src/app/+admin/plugins/plugins.routes.ts
+++ b/client/src/app/+admin/plugins/plugins.routes.ts
@@ -2,14 +2,12 @@ import { Routes } from '@angular/router'
import { PluginListInstalledComponent } from '@app/+admin/plugins/plugin-list-installed/plugin-list-installed.component'
import { PluginSearchComponent } from '@app/+admin/plugins/plugin-search/plugin-search.component'
import { PluginShowInstalledComponent } from '@app/+admin/plugins/plugin-show-installed/plugin-show-installed.component'
-import { PluginsComponent } from '@app/+admin/plugins/plugins.component'
import { UserRightGuard } from '@app/core'
import { UserRight } from '@shared/models'
export const PluginsRoutes: Routes = [
{
path: 'plugins',
- component: PluginsComponent,
canActivate: [ UserRightGuard ],
data: {
userRight: UserRight.MANAGE_PLUGINS
diff --git a/client/src/app/+admin/plugins/shared/index.ts b/client/src/app/+admin/plugins/shared/index.ts
index de037c437..6d616b372 100644
--- a/client/src/app/+admin/plugins/shared/index.ts
+++ b/client/src/app/+admin/plugins/shared/index.ts
@@ -1,2 +1,3 @@
export * from './plugin-api.service'
export * from './plugin-card.component'
+export * from './plugin-navigation.component'
diff --git a/client/src/app/+admin/plugins/shared/plugin-api.service.ts b/client/src/app/+admin/plugins/shared/plugin-api.service.ts
index b95ee0c9d..fbfdaea18 100644
--- a/client/src/app/+admin/plugins/shared/plugin-api.service.ts
+++ b/client/src/app/+admin/plugins/shared/plugin-api.service.ts
@@ -25,19 +25,6 @@ export class PluginApiService {
private pluginService: PluginService
) { }
- getPluginTypeOptions () {
- return [
- {
- label: $localize`Plugins`,
- value: PluginType.PLUGIN
- },
- {
- label: $localize`Themes`,
- value: PluginType.THEME
- }
- ]
- }
-
getPluginTypeLabel (type: PluginType) {
if (type === PluginType.PLUGIN) {
return $localize`plugin`
diff --git a/client/src/app/+admin/plugins/shared/plugin-navigation.component.html b/client/src/app/+admin/plugins/shared/plugin-navigation.component.html
new file mode 100644
index 000000000..fd298d145
--- /dev/null
+++ b/client/src/app/+admin/plugins/shared/plugin-navigation.component.html
@@ -0,0 +1,11 @@
+
diff --git a/client/src/app/+admin/plugins/shared/toggle-plugin-type.scss b/client/src/app/+admin/plugins/shared/plugin-navigation.component.scss
similarity index 56%
rename from client/src/app/+admin/plugins/shared/toggle-plugin-type.scss
rename to client/src/app/+admin/plugins/shared/plugin-navigation.component.scss
index 67213ea72..5802acd56 100644
--- a/client/src/app/+admin/plugins/shared/toggle-plugin-type.scss
+++ b/client/src/app/+admin/plugins/shared/plugin-navigation.component.scss
@@ -1,8 +1,11 @@
@use '_variables' as *;
@use '_mixins' as *;
-.toggle-plugin-type {
+.root {
display: flex;
justify-content: center;
- margin-bottom: 30px;
+}
+
+.btn-group:not(:last-child) {
+ @include margin-right(15px);
}
diff --git a/client/src/app/+admin/plugins/shared/plugin-navigation.component.ts b/client/src/app/+admin/plugins/shared/plugin-navigation.component.ts
new file mode 100644
index 000000000..1c963f521
--- /dev/null
+++ b/client/src/app/+admin/plugins/shared/plugin-navigation.component.ts
@@ -0,0 +1,11 @@
+import { Component, Input } from '@angular/core'
+import { PluginType } from '@shared/models/plugins'
+
+@Component({
+ selector: 'my-plugin-navigation',
+ templateUrl: './plugin-navigation.component.html',
+ styleUrls: [ './plugin-navigation.component.scss' ]
+})
+export class PluginNavigationComponent {
+ @Input() pluginType: PluginType
+}
diff --git a/client/src/sass/application.scss b/client/src/sass/application.scss
index 87a21543d..9f64f7426 100644
--- a/client/src/sass/application.scss
+++ b/client/src/sass/application.scss
@@ -261,28 +261,6 @@ my-input-toggle-hidden ::ng-deep input {
display: flex;
align-items: center;
margin-bottom: 30px;
-
- .admin-sub-nav a {
- @include disable-default-a-behaviour;
-
- font-size: 16px;
- color: pvar(--mainForegroundColor);
- padding: 5px 15px;
- border-radius: 0.25rem;
- font-weight: $font-semibold;
- opacity: 0.6;
-
- &.active {
- background-color: pvar(--submenuBackgroundColor);
- }
-
- &.active,
- &:hover,
- &:active,
- &:focus {
- opacity: 1;
- }
- }
}
// In tables, don't have a hover different background
@@ -402,19 +380,6 @@ ngx-loading-bar {
.admin-sub-header {
flex-direction: column;
-
- .admin-sub-nav {
- display: block;
- overflow-x: auto;
- white-space: nowrap;
- height: 50px;
- padding: 10px 0;
- width: 100%;
-
- a {
- @include margin-left(5px);
- }
- }
}
my-markdown-textarea {
diff --git a/client/src/sass/bootstrap.scss b/client/src/sass/bootstrap.scss
index 4e88d9706..b6aeb8ca2 100644
--- a/client/src/sass/bootstrap.scss
+++ b/client/src/sass/bootstrap.scss
@@ -334,6 +334,34 @@ ngb-tooltip-window {
}
}
+.btn-group {
+ font-weight: $font-semibold;
+
+ .active {
+ @include orange-button;
+ }
+
+ :not(.active) {
+ @include grey-button;
+ }
+
+ > * {
+ @include peertube-button-link;
+
+ box-shadow: none !important;
+
+ &:not(:first-child) {
+ border-top-left-radius: 0 !important;
+ border-bottom-left-radius: 0 !important;
+ }
+
+ &:not(:last-child) {
+ border-top-right-radius: 0 !important;
+ border-bottom-right-radius: 0 !important;
+ }
+ }
+}
+
// input box-shadow on focus
.form-control {
font-size: 15px;