From 5d6395af72e01ba7c4393b485b7089bcb33e0155 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 9 Jun 2021 10:59:20 +0200 Subject: Add max rows to videos list --- .../custom-markup-container.component.scss | 18 ++++++---- .../shared-custom-markup/custom-markup.service.ts | 40 +++++++++++++++------- .../videos-list-markup.component.html | 19 ++++++---- .../videos-list-markup.component.scss | 9 ++--- .../videos-list-markup.component.ts | 11 ++++++ .../abstract-video-list.scss | 2 +- 6 files changed, 66 insertions(+), 33 deletions(-) (limited to 'client/src/app/shared') diff --git a/client/src/app/shared/shared-custom-markup/custom-markup-container.component.scss b/client/src/app/shared/shared-custom-markup/custom-markup-container.component.scss index 862da7c18..704d908c3 100644 --- a/client/src/app/shared/shared-custom-markup/custom-markup-container.component.scss +++ b/client/src/app/shared/shared-custom-markup/custom-markup-container.component.scss @@ -1,20 +1,24 @@ .custom-markup-container { ::ng-deep .peertube-container { - margin: 30px 0 15px; - h4 { - margin-bottom: 0; - } - - .layout-row { + &.layout-row { display: flex; flex-direction: row; + flex-wrap: wrap; } - .layout-column { + &.layout-column { display: flex; flex-direction: column; } + + .header { + margin: 30px 0 15px; + } + + h4 { + margin-bottom: 0; + } } } diff --git a/client/src/app/shared/shared-custom-markup/custom-markup.service.ts b/client/src/app/shared/shared-custom-markup/custom-markup.service.ts index aa5dbe643..729cd296b 100644 --- a/client/src/app/shared/shared-custom-markup/custom-markup.service.ts +++ b/client/src/app/shared/shared-custom-markup/custom-markup.service.ts @@ -168,11 +168,15 @@ export class CustomMarkupService { const model = { onlyDisplayTitle: this.buildBoolean(data.onlyDisplayTitle) ?? false, + maxRows: this.buildNumber(data.maxRows) ?? -1, + sort: data.sort || '-publishedAt', + count: this.buildNumber(data.count) || 10, + categoryOneOf: this.buildArrayNumber(data.categoryOneOf) ?? [], languageOneOf: this.buildArrayString(data.languageOneOf) ?? [], - filter: this.buildBoolean(data.onlyLocal) ? 'local' as VideoFilter : undefined, - count: this.buildNumber(data.count) || 10 + + filter: this.buildBoolean(data.onlyLocal) ? 'local' as VideoFilter : undefined } this.dynamicElementService.setModel(component, model) @@ -183,11 +187,16 @@ export class CustomMarkupService { private containerBuilder (el: HTMLElement) { const data = el.dataset as ContainerMarkupData + // Move inner HTML in the new element we'll create + const content = el.innerHTML + el.innerHTML = '' + const root = document.createElement('div') + root.innerHTML = content const layoutClass = data.layout ? 'layout-' + data.layout - : 'layout-row' + : 'layout-column' root.classList.add('peertube-container', layoutClass) @@ -195,16 +204,23 @@ export class CustomMarkupService { root.setAttribute('width', data.width) } - if (data.title) { - const titleElement = document.createElement('h4') - titleElement.innerText = data.title - root.appendChild(titleElement) - } + if (data.title || data.description) { + const headerElement = document.createElement('div') + headerElement.classList.add('header') + + if (data.title) { + const titleElement = document.createElement('h4') + titleElement.innerText = data.title + headerElement.appendChild(titleElement) + } + + if (data.description) { + const descriptionElement = document.createElement('div') + descriptionElement.innerText = data.description + headerElement.append(descriptionElement) + } - if (data.description) { - const descriptionElement = document.createElement('div') - descriptionElement.innerText = data.description - root.appendChild(descriptionElement) + root.insertBefore(headerElement, root.firstChild) } return root diff --git a/client/src/app/shared/shared-custom-markup/peertube-custom-tags/videos-list-markup.component.html b/client/src/app/shared/shared-custom-markup/peertube-custom-tags/videos-list-markup.component.html index a2fd2fe40..15ef9d418 100644 --- a/client/src/app/shared/shared-custom-markup/peertube-custom-tags/videos-list-markup.component.html +++ b/client/src/app/shared/shared-custom-markup/peertube-custom-tags/videos-list-markup.component.html @@ -1,8 +1,13 @@ -
- - +
+
+ +
+ + +
+ +
diff --git a/client/src/app/shared/shared-custom-markup/peertube-custom-tags/videos-list-markup.component.scss b/client/src/app/shared/shared-custom-markup/peertube-custom-tags/videos-list-markup.component.scss index 6b7274480..5a9a926fe 100644 --- a/client/src/app/shared/shared-custom-markup/peertube-custom-tags/videos-list-markup.component.scss +++ b/client/src/app/shared/shared-custom-markup/peertube-custom-tags/videos-list-markup.component.scss @@ -1,10 +1,7 @@ @import '_variables'; @import '_mixins'; +@import '_miniature'; -my-video-miniature { - @include margin-right(15px); - - display: inline-block; - min-width: $video-thumbnail-width; - max-width: $video-thumbnail-width; +.root { + @include grid-videos-miniature-layout; } diff --git a/client/src/app/shared/shared-custom-markup/peertube-custom-tags/videos-list-markup.component.ts b/client/src/app/shared/shared-custom-markup/peertube-custom-tags/videos-list-markup.component.ts index fe084afd9..d4402dd9f 100644 --- a/client/src/app/shared/shared-custom-markup/peertube-custom-tags/videos-list-markup.component.ts +++ b/client/src/app/shared/shared-custom-markup/peertube-custom-tags/videos-list-markup.component.ts @@ -20,6 +20,7 @@ export class VideosListMarkupComponent implements OnInit { @Input() count: number @Input() onlyDisplayTitle: boolean @Input() filter: VideoFilter + @Input() maxRows: number videos: Video[] @@ -43,6 +44,16 @@ export class VideosListMarkupComponent implements OnInit { return this.auth.getUser() } + limitRowsStyle () { + if (this.maxRows <= 0) return {} + + return { + 'grid-template-rows': `repeat(${this.maxRows}, 1fr)`, + 'grid-auto-rows': '0', // Set height to 0 for autogenerated grid rows + 'overflow-y': 'hidden' // Hide grid items that overflow + } + } + ngOnInit () { if (this.onlyDisplayTitle) { for (const key of Object.keys(this.displayOptions)) { diff --git a/client/src/app/shared/shared-video-miniature/abstract-video-list.scss b/client/src/app/shared/shared-video-miniature/abstract-video-list.scss index dd9ab18a8..c8dda2900 100644 --- a/client/src/app/shared/shared-video-miniature/abstract-video-list.scss +++ b/client/src/app/shared/shared-video-miniature/abstract-video-list.scss @@ -51,7 +51,7 @@ $icon-size: 16px; } .margin-content { - @include grid-videos-miniature-layout; + @include grid-videos-miniature-layout-with-margins; } .display-as-row.videos { -- cgit v1.2.3