diff options
author | Chocobozzz <me@florianbigard.com> | 2021-08-19 09:24:29 +0200 |
---|---|---|
committer | Chocobozzz <me@florianbigard.com> | 2021-08-25 11:24:11 +0200 |
commit | dd24f1bb0a4b252e5342b251ba36853364da7b8e (patch) | |
tree | 41a9506d07413f056fb90425705e258f96fdc77d /client/src/app/shared/shared-main/misc | |
parent | 2e80d256cc75b4b02c8efc3d3e4cdf57ddf401a8 (diff) | |
download | PeerTube-dd24f1bb0a4b252e5342b251ba36853364da7b8e.tar.gz PeerTube-dd24f1bb0a4b252e5342b251ba36853364da7b8e.tar.zst PeerTube-dd24f1bb0a4b252e5342b251ba36853364da7b8e.zip |
Add video filters to common video pages
Diffstat (limited to 'client/src/app/shared/shared-main/misc')
3 files changed, 29 insertions, 39 deletions
diff --git a/client/src/app/shared/shared-main/misc/simple-search-input.component.html b/client/src/app/shared/shared-main/misc/simple-search-input.component.html index c20c02e23..1e2f6c6a9 100644 --- a/client/src/app/shared/shared-main/misc/simple-search-input.component.html +++ b/client/src/app/shared/shared-main/misc/simple-search-input.component.html | |||
@@ -1,13 +1,18 @@ | |||
1 | <div class="root"> | 1 | <div class="root"> |
2 | <input | 2 | <div class="input-group has-feedback has-clear"> |
3 | #ref | 3 | <input |
4 | type="text" | 4 | #ref |
5 | [(ngModel)]="value" | 5 | type="text" |
6 | (keyup.enter)="searchChange()" | 6 | [(ngModel)]="value" |
7 | [hidden]="!inputShown" | 7 | (keyup.enter)="sendSearch()" |
8 | [name]="name" | 8 | [hidden]="!inputShown" |
9 | [placeholder]="placeholder" | 9 | [name]="name" |
10 | > | 10 | [placeholder]="placeholder" |
11 | > | ||
12 | |||
13 | <a class="glyphicon glyphicon-remove-sign form-control-feedback form-control-clear" (click)="onResetFilter()"></a> | ||
14 | <span class="sr-only" i18n>Clear filters</span> | ||
15 | </div> | ||
11 | 16 | ||
12 | <my-global-icon iconName="search" aria-label="Search" role="button" (click)="onIconClick()" [title]="iconTitle"></my-global-icon> | 17 | <my-global-icon iconName="search" aria-label="Search" role="button" (click)="onIconClick()" [title]="iconTitle"></my-global-icon> |
13 | 18 | ||
diff --git a/client/src/app/shared/shared-main/misc/simple-search-input.component.scss b/client/src/app/shared/shared-main/misc/simple-search-input.component.scss index 173204291..d5fcff760 100644 --- a/client/src/app/shared/shared-main/misc/simple-search-input.component.scss +++ b/client/src/app/shared/shared-main/misc/simple-search-input.component.scss | |||
@@ -11,20 +11,17 @@ my-global-icon { | |||
11 | height: 28px; | 11 | height: 28px; |
12 | width: 28px; | 12 | width: 28px; |
13 | cursor: pointer; | 13 | cursor: pointer; |
14 | color: pvar(--mainColor); | ||
14 | 15 | ||
15 | &:hover { | 16 | &:hover { |
16 | color: pvar(--mainHoverColor); | 17 | color: pvar(--mainHoverColor); |
17 | } | 18 | } |
18 | |||
19 | &[iconName=search] { | ||
20 | color: pvar(--mainForegroundColor); | ||
21 | } | ||
22 | |||
23 | &[iconName=cross] { | ||
24 | color: pvar(--mainForegroundColor); | ||
25 | } | ||
26 | } | 19 | } |
27 | 20 | ||
28 | input { | 21 | input { |
29 | @include peertube-input-text(200px); | 22 | @include peertube-input-text(200px); |
23 | |||
24 | &:focus { | ||
25 | box-shadow: 0 0 5px 0 #a5a5a5; | ||
26 | } | ||
30 | } | 27 | } |
diff --git a/client/src/app/shared/shared-main/misc/simple-search-input.component.ts b/client/src/app/shared/shared-main/misc/simple-search-input.component.ts index 292ec4c82..99abb94e7 100644 --- a/client/src/app/shared/shared-main/misc/simple-search-input.component.ts +++ b/client/src/app/shared/shared-main/misc/simple-search-input.component.ts | |||
@@ -1,7 +1,4 @@ | |||
1 | import { Subject } from 'rxjs' | ||
2 | import { debounceTime, distinctUntilChanged } from 'rxjs/operators' | ||
3 | import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core' | 1 | import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core' |
4 | import { ActivatedRoute, Router } from '@angular/router' | ||
5 | 2 | ||
6 | @Component({ | 3 | @Component({ |
7 | selector: 'my-simple-search-input', | 4 | selector: 'my-simple-search-input', |
@@ -22,23 +19,9 @@ export class SimpleSearchInputComponent implements OnInit { | |||
22 | value = '' | 19 | value = '' |
23 | inputShown: boolean | 20 | inputShown: boolean |
24 | 21 | ||
25 | private searchSubject = new Subject<string>() | 22 | private hasAlreadySentSearch = false |
26 | |||
27 | constructor ( | ||
28 | private router: Router, | ||
29 | private route: ActivatedRoute | ||
30 | ) {} | ||
31 | 23 | ||
32 | ngOnInit () { | 24 | ngOnInit () { |
33 | this.searchSubject | ||
34 | .pipe( | ||
35 | debounceTime(400), | ||
36 | distinctUntilChanged() | ||
37 | ) | ||
38 | .subscribe(value => this.searchChanged.emit(value)) | ||
39 | |||
40 | this.searchSubject.next(this.value) | ||
41 | |||
42 | if (this.isInputShown()) this.showInput(false) | 25 | if (this.isInputShown()) this.showInput(false) |
43 | } | 26 | } |
44 | 27 | ||
@@ -54,7 +37,7 @@ export class SimpleSearchInputComponent implements OnInit { | |||
54 | return | 37 | return |
55 | } | 38 | } |
56 | 39 | ||
57 | this.searchChange() | 40 | this.sendSearch() |
58 | } | 41 | } |
59 | 42 | ||
60 | showInput (focus = true) { | 43 | showInput (focus = true) { |
@@ -80,9 +63,14 @@ export class SimpleSearchInputComponent implements OnInit { | |||
80 | this.hideInput() | 63 | this.hideInput() |
81 | } | 64 | } |
82 | 65 | ||
83 | searchChange () { | 66 | sendSearch () { |
84 | this.router.navigate([ './search' ], { relativeTo: this.route }) | 67 | this.hasAlreadySentSearch = true |
68 | this.searchChanged.emit(this.value) | ||
69 | } | ||
70 | |||
71 | onResetFilter () { | ||
72 | this.value = '' | ||
85 | 73 | ||
86 | this.searchSubject.next(this.value) | 74 | if (this.hasAlreadySentSearch) this.sendSearch() |
87 | } | 75 | } |
88 | } | 76 | } |