diff --git a/apps/web/src/app/xtream-electron/category-view/category-view.component.html b/apps/web/src/app/shared/components/category-view/category-view.component.html similarity index 100% rename from apps/web/src/app/xtream-electron/category-view/category-view.component.html rename to apps/web/src/app/shared/components/category-view/category-view.component.html diff --git a/apps/web/src/app/xtream-electron/category-view/category-view.component.scss b/apps/web/src/app/shared/components/category-view/category-view.component.scss similarity index 97% rename from apps/web/src/app/xtream-electron/category-view/category-view.component.scss rename to apps/web/src/app/shared/components/category-view/category-view.component.scss index 0cb90197d..48653101b 100644 --- a/apps/web/src/app/xtream-electron/category-view/category-view.component.scss +++ b/apps/web/src/app/shared/components/category-view/category-view.component.scss @@ -1,4 +1,4 @@ -@use '../../../nav-list.scss'; +@use '../../../../nav-list.scss'; :host { display: block; diff --git a/apps/web/src/app/xtream-electron/category-view/category-view.component.ts b/apps/web/src/app/shared/components/category-view/category-view.component.ts similarity index 100% rename from apps/web/src/app/xtream-electron/category-view/category-view.component.ts rename to apps/web/src/app/shared/components/category-view/category-view.component.ts diff --git a/apps/web/src/app/shared/components/favorites-layout/favorites-layout.component.ts b/apps/web/src/app/shared/components/favorites-layout/favorites-layout.component.ts index 78fd1ca16..c009a4fd5 100644 --- a/apps/web/src/app/shared/components/favorites-layout/favorites-layout.component.ts +++ b/apps/web/src/app/shared/components/favorites-layout/favorites-layout.component.ts @@ -5,7 +5,8 @@ import { MatTooltip } from '@angular/material/tooltip'; import { ActivatedRoute } from '@angular/router'; import { TranslatePipe } from '@ngx-translate/core'; import { PlaylistSwitcherComponent, ResizableDirective } from 'components'; -import { CategoryViewComponent } from '../../../xtream-electron/category-view/category-view.component'; +import { isWorkspaceLayoutRoute } from '../../navigation/portal-route.utils'; +import { CategoryViewComponent } from '../category-view/category-view.component'; import { ContentCardComponent } from '../content-card/content-card.component'; @Component({ @@ -13,7 +14,7 @@ import { ContentCardComponent } from '../content-card/content-card.component'; templateUrl: './favorites-layout.component.html', styleUrls: [ './favorites-layout.component.scss', - '../../../xtream-electron/sidebar.scss', + '../../styles/portal-sidebar.scss', ], imports: [ CategoryViewComponent, @@ -27,9 +28,9 @@ import { ContentCardComponent } from '../content-card/content-card.component'; ], }) export class FavoritesLayoutComponent { - private readonly route = inject(ActivatedRoute); - readonly isWorkspaceLayout = - this.route.snapshot.data['layout'] === 'workspace'; + readonly isWorkspaceLayout = isWorkspaceLayoutRoute( + inject(ActivatedRoute) + ); readonly categories = input([]); readonly favorites = input([]); diff --git a/apps/web/src/app/shared/components/grid-list/grid-list.component.ts b/apps/web/src/app/shared/components/grid-list/grid-list.component.ts index bee34aefd..10624d7d9 100644 --- a/apps/web/src/app/shared/components/grid-list/grid-list.component.ts +++ b/apps/web/src/app/shared/components/grid-list/grid-list.component.ts @@ -4,7 +4,7 @@ import { MatIcon } from '@angular/material/icon'; import { MatPaginatorModule, PageEvent } from '@angular/material/paginator'; import { MatTooltip } from '@angular/material/tooltip'; import { TranslatePipe } from '@ngx-translate/core'; -import { PlaylistErrorViewComponent } from '../../../xtream-electron/playlist-error-view/playlist-error-view.component'; +import { PlaylistErrorViewComponent } from '../playlist-error-view/playlist-error-view.component'; import { ProgressCapsuleComponent } from '../../../xtream-electron/shared/progress-capsule/progress-capsule.component'; import { WatchedBadgeComponent } from '../../../xtream-electron/shared/watched-badge/watched-badge.component'; diff --git a/apps/web/src/app/shared/components/index.ts b/apps/web/src/app/shared/components/index.ts index e5775eb61..df35b0ed3 100644 --- a/apps/web/src/app/shared/components/index.ts +++ b/apps/web/src/app/shared/components/index.ts @@ -1,2 +1,6 @@ export * from './content-card/content-card.component'; +export * from './category-view/category-view.component'; export * from './header/header.component'; +export * from './playlist-error-view/playlist-error-view.component'; +export * from './portal-collection-shell/portal-collection-shell.component'; +export * from './stalker-inline-detail/stalker-inline-detail.component'; diff --git a/apps/web/src/app/xtream-electron/playlist-error-view/playlist-error-view.component.html b/apps/web/src/app/shared/components/playlist-error-view/playlist-error-view.component.html similarity index 100% rename from apps/web/src/app/xtream-electron/playlist-error-view/playlist-error-view.component.html rename to apps/web/src/app/shared/components/playlist-error-view/playlist-error-view.component.html diff --git a/apps/web/src/app/xtream-electron/playlist-error-view/playlist-error-view.component.scss b/apps/web/src/app/shared/components/playlist-error-view/playlist-error-view.component.scss similarity index 100% rename from apps/web/src/app/xtream-electron/playlist-error-view/playlist-error-view.component.scss rename to apps/web/src/app/shared/components/playlist-error-view/playlist-error-view.component.scss diff --git a/apps/web/src/app/xtream-electron/playlist-error-view/playlist-error-view.component.ts b/apps/web/src/app/shared/components/playlist-error-view/playlist-error-view.component.ts similarity index 100% rename from apps/web/src/app/xtream-electron/playlist-error-view/playlist-error-view.component.ts rename to apps/web/src/app/shared/components/playlist-error-view/playlist-error-view.component.ts diff --git a/apps/web/src/app/shared/components/portal-collection-shell/portal-collection-shell.component.html b/apps/web/src/app/shared/components/portal-collection-shell/portal-collection-shell.component.html new file mode 100644 index 000000000..386409629 --- /dev/null +++ b/apps/web/src/app/shared/components/portal-collection-shell/portal-collection-shell.component.html @@ -0,0 +1,23 @@ +@if (showDetails()) { + +} @else { + +} diff --git a/apps/web/src/app/shared/components/portal-collection-shell/portal-collection-shell.component.ts b/apps/web/src/app/shared/components/portal-collection-shell/portal-collection-shell.component.ts new file mode 100644 index 000000000..cbe8bf844 --- /dev/null +++ b/apps/web/src/app/shared/components/portal-collection-shell/portal-collection-shell.component.ts @@ -0,0 +1,50 @@ +import { ChangeDetectionStrategy, Component, input, output } from '@angular/core'; +import { XtreamCategory } from 'shared-interfaces'; +import { FavoritesLayoutComponent } from '../favorites-layout/favorites-layout.component'; + +export interface PortalCollectionShellLayout { + titleTranslationKey?: string; + removeTooltip?: string; + emptyIcon?: string; + showHeaderAction?: boolean; + headerActionIcon?: string; + headerActionTooltip?: string; +} + +@Component({ + selector: 'app-portal-collection-shell', + imports: [FavoritesLayoutComponent], + templateUrl: './portal-collection-shell.component.html', + changeDetection: ChangeDetectionStrategy.OnPush, + styles: [ + ` + :host { + display: block; + height: 100%; + width: 100%; + } + `, + ], +}) +export class PortalCollectionShellComponent { + readonly categories = input([]); + readonly items = input([]); + readonly playlistSubtitle = input(''); + readonly playlistTitle = input('Playlist'); + readonly selectedCategoryId = input('all'); + readonly layout = input({}); + readonly showDetails = input(false); + + readonly categoryClicked = output(); + readonly removeItem = output(); + readonly openItem = output(); + readonly headerActionClicked = output(); + + onCategoryClicked(event: { category_id?: string }) { + if (!event?.category_id) { + return; + } + + this.categoryClicked.emit(event.category_id); + } +} diff --git a/apps/web/src/app/shared/components/search-layout/search-layout.component.html b/apps/web/src/app/shared/components/search-layout/search-layout.component.html index f24589d2c..25b0a9547 100644 --- a/apps/web/src/app/shared/components/search-layout/search-layout.component.html +++ b/apps/web/src/app/shared/components/search-layout/search-layout.component.html @@ -2,83 +2,85 @@ -
-