diff --git a/Kyoo/ClientApp/src/app/episodes-list/episodes-list.component.scss b/Kyoo/ClientApp/src/app/episodes-list/episodes-list.component.scss
index f9786988..482b7b5b 100644
--- a/Kyoo/ClientApp/src/app/episodes-list/episodes-list.component.scss
+++ b/Kyoo/ClientApp/src/app/episodes-list/episodes-list.component.scss
@@ -118,6 +118,15 @@
overflow: hidden;
}
+ .subtitle
+ {
+ font-weight: 300;
+ display: -webkit-box;
+ -webkit-line-clamp: 1;
+ -webkit-box-orient: vertical;
+ overflow: hidden;
+ }
+
&:hover
{
.img
diff --git a/Kyoo/ClientApp/src/app/episodes-list/episodes-list.component.ts b/Kyoo/ClientApp/src/app/episodes-list/episodes-list.component.ts
index 56638727..58a0db05 100644
--- a/Kyoo/ClientApp/src/app/episodes-list/episodes-list.component.ts
+++ b/Kyoo/ClientApp/src/app/episodes-list/episodes-list.component.ts
@@ -9,8 +9,8 @@ import { DomSanitizer } from "@angular/platform-browser";
})
export class EpisodesListComponent implements OnInit
{
+ @Input() displayShowTitle: boolean = false;
@Input() episodes: Episode[];
- @Input() showSlug: string;
private root: HTMLElement;
constructor(private sanitizer: DomSanitizer) { }
diff --git a/Kyoo/ClientApp/src/app/people-list/people-list.component.html b/Kyoo/ClientApp/src/app/people-list/people-list.component.html
new file mode 100644
index 00000000..58aade08
--- /dev/null
+++ b/Kyoo/ClientApp/src/app/people-list/people-list.component.html
@@ -0,0 +1,11 @@
+
diff --git a/Kyoo/ClientApp/src/app/people-list/people-list.component.scss b/Kyoo/ClientApp/src/app/people-list/people-list.component.scss
new file mode 100644
index 00000000..8a7686d7
--- /dev/null
+++ b/Kyoo/ClientApp/src/app/people-list/people-list.component.scss
@@ -0,0 +1,155 @@
+@import "~bootstrap/scss/functions";
+@import "~bootstrap/scss/variables";
+@import "~bootstrap/scss/mixins/breakpoints";
+
+.people-container
+{
+ display: flex;
+ padding-left: 15px;
+ padding-right: 15px;
+ overflow-x: auto;
+ min-width: 100%;
+ flex-shrink: 0;
+ flex-direction: row;
+
+ &::-webkit-scrollbar
+ {
+ height: 4px;
+ background: transparent;
+ }
+
+ &::-webkit-scrollbar-thumb
+ {
+ background-color: #999;
+ border-radius: 90px;
+
+ &:hover
+ {
+ background-color: rgb(134, 127, 127);
+ }
+ }
+}
+
+.people
+{
+ visibility: visible;
+ margin: .25rem;
+ text-decoration: none;
+ color: inherit;
+ outline: none;
+ flex-shrink: 0;
+ flex-grow: 0;
+ width: 33%;
+
+ @include media-breakpoint-up(sm)
+ {
+ width: 22%;
+ }
+
+ @include media-breakpoint-up(md)
+ {
+ width: 20%;
+ }
+
+ @include media-breakpoint-up(lg)
+ {
+ width: 15%;
+ }
+
+ @include media-breakpoint-up(xl)
+ {
+ width: 10%;
+ }
+
+ > div
+ {
+ width: 100%;
+ height: 0;
+ padding-top: 147.0588%;
+ background-size: cover;
+ background-color: #333333;
+ }
+
+ > p, h6
+ {
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ text-align: center;
+ margin-bottom: 0px;
+
+ &.role
+ {
+ font-size: 0.8em;
+ }
+ }
+
+ &:hover
+ {
+ cursor: pointer;
+
+ > img
+ {
+ outline: solid var(--accentColor);
+ }
+
+ .name
+ {
+ text-decoration: underline;
+ }
+ }
+}
+
+.scroll-row
+{
+ position: relative;
+
+ &:hover
+ {
+ .scrollBtn
+ {
+ display: block;
+ }
+ }
+}
+
+.scrollBtn
+{
+ padding: 0;
+ outline: none;
+ min-width: 0;
+ position: absolute;
+ top: 30%;
+ bottom: 40%;
+ display: none;
+
+ pl-leftBtn
+ {
+ left: 0;
+ padding-left: 10px;
+ padding-right: 2px;
+ }
+
+ pl-rightBtn
+ {
+ right: 0;
+ padding-right: 10px;
+ padding-left: 2px;
+ }
+}
+
+#leftBtn
+{
+ position: absolute;
+ left: 0;
+ top: 33%;
+ outline: none;
+}
+
+#rightBtn
+{
+ position: absolute;
+ right: 0;
+ top: 33%;
+ outline: none;
+}
diff --git a/Kyoo/ClientApp/src/app/people-list/people-list.component.spec.ts b/Kyoo/ClientApp/src/app/people-list/people-list.component.spec.ts
new file mode 100644
index 00000000..9d722806
--- /dev/null
+++ b/Kyoo/ClientApp/src/app/people-list/people-list.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { PeopleListComponent } from './people-list.component';
+
+describe('PeopleListComponent', () => {
+ let component: PeopleListComponent;
+ let fixture: ComponentFixture
;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ PeopleListComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(PeopleListComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/Kyoo/ClientApp/src/app/people-list/people-list.component.ts b/Kyoo/ClientApp/src/app/people-list/people-list.component.ts
new file mode 100644
index 00000000..e8fc1109
--- /dev/null
+++ b/Kyoo/ClientApp/src/app/people-list/people-list.component.ts
@@ -0,0 +1,48 @@
+import { Component, Input, OnInit } from '@angular/core';
+import { DomSanitizer } from "@angular/platform-browser";
+import { People } from "../../models/people";
+
+@Component({
+ selector: 'app-people-list',
+ templateUrl: './people-list.component.html',
+ styleUrls: ['./people-list.component.scss']
+})
+export class PeopleListComponent implements OnInit
+{
+ @Input() people: People[];
+ private peopleScroll: HTMLElement;
+
+ constructor(private sanitizer: DomSanitizer) { }
+
+ ngOnInit()
+ {
+ this.peopleScroll = document.getElementById("peopleScroll");
+ }
+
+ scrollLeft()
+ {
+ let scroll: number = this.peopleScroll.offsetWidth * 0.80;
+ this.peopleScroll.scrollBy({ top: 0, left: -scroll, behavior: "smooth" });
+
+ document.getElementById("pl-rightBtn").classList.remove("d-none");
+
+ if (this.peopleScroll.scrollLeft - scroll <= 0)
+ document.getElementById("pl-leftBtn").classList.add("d-none");
+ }
+
+ scrollRight()
+ {
+ let scroll: number = this.peopleScroll.offsetWidth * 0.80;
+ this.peopleScroll.scrollBy({ top: 0, left: scroll, behavior: "smooth" });
+ console.log(document.getElementById("pl-leftBtn"));
+ document.getElementById("pl-leftBtn").classList.remove("d-none");
+
+ if (this.peopleScroll.scrollLeft + scroll >= this.peopleScroll.scrollWidth - this.peopleScroll.clientWidth)
+ document.getElementById("pl-rightBtn").classList.add("d-none");
+ }
+
+ getPeopleIcon(slug: string)
+ {
+ return this.sanitizer.bypassSecurityTrustStyle("url(/peopleimg/" + slug + ")");
+ }
+}
diff --git a/Kyoo/ClientApp/src/app/search/search.component.html b/Kyoo/ClientApp/src/app/search/search.component.html
index c99423e7..a6f329b7 100644
--- a/Kyoo/ClientApp/src/app/search/search.component.html
+++ b/Kyoo/ClientApp/src/app/search/search.component.html
@@ -1 +1,12 @@
-search works!
+
+
Shows
+
+
+
+
Episodes
+
+
+
+
People
+
+
diff --git a/Kyoo/ClientApp/src/app/search/search.component.ts b/Kyoo/ClientApp/src/app/search/search.component.ts
index 3ba8a3f7..0c423454 100644
--- a/Kyoo/ClientApp/src/app/search/search.component.ts
+++ b/Kyoo/ClientApp/src/app/search/search.component.ts
@@ -15,6 +15,9 @@ export class SearchComponent implements OnInit
ngOnInit()
{
- this.items = this.route.snapshot.data.items;
+ this.route.data.subscribe((data) =>
+ {
+ this.items = data.items;
+ });
}
}
diff --git a/Kyoo/ClientApp/src/app/show-details/show-details.component.html b/Kyoo/ClientApp/src/app/show-details/show-details.component.html
index c1db358e..ab20d2d3 100644
--- a/Kyoo/ClientApp/src/app/show-details/show-details.component.html
+++ b/Kyoo/ClientApp/src/app/show-details/show-details.component.html
@@ -73,19 +73,9 @@
-