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 @@
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) {