From bb0e832b6b1da4d667e5ffb981b911f5e64e615a Mon Sep 17 00:00:00 2001
From: 4gray <4gray@users.noreply.github.com>
Date: Sat, 12 Aug 2023 17:30:03 +0200
Subject: [PATCH] refactor(portals): some improvements in nav-bar
---
.../navigation-bar.component.html | 12 ++++++----
.../navigation-bar.component.scss | 22 +++++++++++--------
.../navigation-bar.component.ts | 15 ++++++++++++-
3 files changed, 35 insertions(+), 14 deletions(-)
diff --git a/src/app/xtream/navigation-bar/navigation-bar.component.html b/src/app/xtream/navigation-bar/navigation-bar.component.html
index 6671345cb..1cbfe90e7 100644
--- a/src/app/xtream/navigation-bar/navigation-bar.component.html
+++ b/src/app/xtream/navigation-bar/navigation-bar.component.html
@@ -28,11 +28,15 @@
- {{ item.title }}
+ {{ item.title }}
+ chevron_right
+
diff --git a/src/app/xtream/navigation-bar/navigation-bar.component.scss b/src/app/xtream/navigation-bar/navigation-bar.component.scss
index ae09b0113..5acc450b9 100644
--- a/src/app/xtream/navigation-bar/navigation-bar.component.scss
+++ b/src/app/xtream/navigation-bar/navigation-bar.component.scss
@@ -16,25 +16,29 @@
#sub-panel {
background: white;
border-bottom: 1px solid #ccc;
- padding: 0 10px 5px;
+ padding: 0 1em;
display: flex;
justify-content: space-between;
align-items: center;
- height: 30px;
+ height: 40px;
.breadcrumbs {
- span {
- cursor: pointer;
+ display: flex;
+
+ div {
+ display: flex;
+ align-items: center;
&:not(:last-child)::after {
- content: '>';
- margin: 0 10px;
+ display: none;
+ }
+
+ span:hover {
+ text-decoration: underline;
+ cursor: pointer;
}
}
- span:hover {
- text-decoration: underline;
- }
}
.search {
diff --git a/src/app/xtream/navigation-bar/navigation-bar.component.ts b/src/app/xtream/navigation-bar/navigation-bar.component.ts
index ad7a570af..9c7477d88 100644
--- a/src/app/xtream/navigation-bar/navigation-bar.component.ts
+++ b/src/app/xtream/navigation-bar/navigation-bar.component.ts
@@ -5,6 +5,7 @@ import { MatButtonModule } from '@angular/material/button';
import { MatButtonToggleModule } from '@angular/material/button-toggle';
import { MatIconModule } from '@angular/material/icon';
import { RouterLink } from '@angular/router';
+import { Subject, debounceTime, distinctUntilChanged } from 'rxjs';
import { Breadcrumb } from '../breadcrumb.interface';
import { ContentTypeNavigationItem } from '../content-type-navigation-item.interface';
import { ContentType } from '../content-type.enum';
@@ -30,14 +31,25 @@ export class NavigationBarComponent {
@Input({ required: true }) contentType: ContentType;
@Input() searchVisible = true;
@Input() contentTypeNavigationItems: ContentTypeNavigationItem[];
+ @Input() clientSideSearch = true;
@Output() contentTypeChanged = new EventEmitter();
@Output() breadcrumbClicked = new EventEmitter();
@Output() favoritesClicked = new EventEmitter();
+ @Output() searchTextChanged = new EventEmitter();
ContentTypeEnum = ContentType;
portalStore = inject(PortalStore);
searchPhrase = this.portalStore.searchPhrase;
+ searchPhraseUpdate = new Subject();
+
+ constructor() {
+ this.searchPhraseUpdate
+ .pipe(debounceTime(600), distinctUntilChanged())
+ .subscribe((value) => {
+ this.setSearchText(value);
+ });
+ }
processBreadcrumbClick(item: Breadcrumb) {
this.setSearchText('');
@@ -45,7 +57,8 @@ export class NavigationBarComponent {
}
setSearchText(text: string) {
- this.portalStore.setSearchPhrase(text);
+ if (this.clientSideSearch) this.portalStore.setSearchPhrase(text);
+ else this.searchTextChanged.emit(text);
}
changeContentType(type: ContentType) {