diff --git a/UI/Web/src/_series-detail-common.scss b/UI/Web/src/_series-detail-common.scss index ca4f7c8499..7cb729d070 100644 --- a/UI/Web/src/_series-detail-common.scss +++ b/UI/Web/src/_series-detail-common.scss @@ -119,3 +119,84 @@ .nav-tabs { flex-wrap: nowrap; } + +.upper-details { + font-size: 0.9rem; +} + +::ng-deep .carousel-container .header i.fa-plus, ::ng-deep .carousel-container .header i.fa-pen{ + border-width: 1px; + border-style: solid; + border-radius: 5px; + border-color: var(--primary-color); + padding: 5px; + vertical-align: middle; + + &:hover { + background-color: var(--primary-color-dark-shade); + } +} + +::ng-deep .image-container.mobile-bg app-image img { + max-height: 400px; + object-fit: contain; +} + +@media (max-width: 768px) { + .carousel-tabs-container { + mask-image: linear-gradient(transparent, black 0%, black 90%, transparent 100%); + -webkit-mask-image: linear-gradient(to right, transparent, black 0%, black 90%, transparent 100%); + } +} + +::ng-deep .image-container.mobile-bg app-image img { + max-height: 100dvh !important; + object-fit: cover !important; +} + +/* col-lg */ +@media screen and (max-width: 991px) { + .image-container.mobile-bg{ + width: 100vw; + top: calc(var(--nav-offset) - 20px); + left: 0; + pointer-events: none; + position: fixed !important; + display: block !important; + max-height: unset !important; + max-width: unset !important; + height: 100dvh !important; + } + + ::ng-deep .image-container.mobile-bg app-image img { + max-height: unset !important; + opacity: 0.05 !important; + filter: blur(5px) !important; + max-width: 100dvw; + height: 100dvh !important; + overflow: hidden; + position: absolute; + top: 0; + left: 0; + object-fit: cover; + } + + .progress-banner { + display:none; + } + + .under-image { + display: none; + } + +} +.upper-details { + font-size: 0.9rem; +} + +@media (max-width: 768px) { + .carousel-tabs-container { + mask-image: linear-gradient(transparent, black 0%, black 90%, transparent 100%); + -webkit-mask-image: linear-gradient(to right, transparent, black 0%, black 90%, transparent 100%); + } +} \ No newline at end of file diff --git a/UI/Web/src/app/admin/manage-email-settings/manage-email-settings.component.html b/UI/Web/src/app/admin/manage-email-settings/manage-email-settings.component.html index 20315fb8af..569f98187e 100644 --- a/UI/Web/src/app/admin/manage-email-settings/manage-email-settings.component.html +++ b/UI/Web/src/app/admin/manage-email-settings/manage-email-settings.component.html @@ -16,8 +16,8 @@
- - + +
@if(settingsForm.dirty || settingsForm.touched) { @@ -39,7 +39,7 @@ {{formControl.value | defaultValue}} - + } @@ -52,7 +52,7 @@ {{formControl.value | defaultValue}} - + } @@ -78,7 +78,7 @@ {{formControl.value | defaultValue}} - + } @@ -89,7 +89,7 @@
- +
@@ -103,7 +103,7 @@ {{formControl.value | defaultValue}} - + } @@ -116,7 +116,7 @@ {{formControl.value ? '********' : null | defaultValue}} - + } @@ -129,7 +129,7 @@ {{formControl.value | bytes}} - + } diff --git a/UI/Web/src/app/admin/manage-settings/manage-settings.component.html b/UI/Web/src/app/admin/manage-settings/manage-settings.component.html index 4a98830b74..ab3e50526a 100644 --- a/UI/Web/src/app/admin/manage-settings/manage-settings.component.html +++ b/UI/Web/src/app/admin/manage-settings/manage-settings.component.html @@ -39,7 +39,7 @@

{{t('networking-settings-title')}}

- +
@if(settingsForm.dirty || settingsForm.touched) { @@ -64,7 +64,7 @@

{{t('networking-settings-title')}}

- +
@if(settingsForm.dirty || settingsForm.touched) { diff --git a/UI/Web/src/app/chapter-detail/chapter-detail.component.html b/UI/Web/src/app/chapter-detail/chapter-detail.component.html index 078c9a1105..e21353273e 100644 --- a/UI/Web/src/app/chapter-detail/chapter-detail.component.html +++ b/UI/Web/src/app/chapter-detail/chapter-detail.component.html @@ -4,14 +4,22 @@ @if (chapter && series && libraryType !== null) {
-
- - - @if (chapter.pagesRead < chapter.pages && chapter.pagesRead > 0) { +
+ + @if(mobileSeriesImgBackground === 'true') { + + } @else { + + } + +
diff --git a/UI/Web/src/app/chapter-detail/chapter-detail.component.ts b/UI/Web/src/app/chapter-detail/chapter-detail.component.ts index fb0eb55730..c313397eb7 100644 --- a/UI/Web/src/app/chapter-detail/chapter-detail.component.ts +++ b/UI/Web/src/app/chapter-detail/chapter-detail.component.ts @@ -9,7 +9,7 @@ import { } from '@angular/core'; import {BulkOperationsComponent} from "../cards/bulk-operations/bulk-operations.component"; import {TagBadgeComponent} from "../shared/tag-badge/tag-badge.component"; -import {AsyncPipe, DecimalPipe, DOCUMENT, NgStyle} from "@angular/common"; +import {AsyncPipe, DecimalPipe, DOCUMENT, NgStyle, NgClass} from "@angular/common"; import {CardActionablesComponent} from "../_single-module/card-actionables/card-actionables.component"; import {CarouselReelComponent} from "../carousel/_components/carousel-reel/carousel-reel.component"; import {ExternalListItemComponent} from "../cards/external-list-item/external-list-item.component"; @@ -111,6 +111,7 @@ enum TabID { TagBadgeComponent, VirtualScrollerModule, NgStyle, + NgClass, AgeRatingPipe, TimeDurationPipe, ExternalRatingComponent, @@ -184,6 +185,7 @@ export class ChapterDetailComponent implements OnInit { downloadInProgress: boolean = false; readingLists: ReadingList[] = []; showDetailsTab: boolean = true; + mobileSeriesImgBackground: string | undefined; @@ -208,7 +210,8 @@ export class ChapterDetailComponent implements OnInit { return; } - + this.mobileSeriesImgBackground = getComputedStyle(document.documentElement) + .getPropertyValue('--mobile-series-img-background').trim(); this.seriesId = parseInt(seriesId, 10); this.chapterId = parseInt(chapterId, 10); this.libraryId = parseInt(libraryId, 10); diff --git a/UI/Web/src/app/series-detail/_components/series-detail/series-detail.component.html b/UI/Web/src/app/series-detail/_components/series-detail/series-detail.component.html index 074c60ad98..6cd15eafea 100644 --- a/UI/Web/src/app/series-detail/_components/series-detail/series-detail.component.html +++ b/UI/Web/src/app/series-detail/_components/series-detail/series-detail.component.html @@ -4,9 +4,12 @@ @if (series && seriesMetadata && libraryType !== null) {
-
- - +
+ @if(mobileSeriesImgBackground === 'true') { + + } @else { + + } @if (series.pagesRead < series.pages && hasReadingProgress) {
@@ -29,7 +32,7 @@
-
+

{{series.name}} @@ -133,7 +136,7 @@

-
+
{{t('writers-title')}}
-
+
{{t('genres-title')}}
{ diff --git a/UI/Web/src/app/settings/_components/setting-button/setting-button.component.html b/UI/Web/src/app/settings/_components/setting-button/setting-button.component.html index 9418983b78..ca0c38a544 100644 --- a/UI/Web/src/app/settings/_components/setting-button/setting-button.component.html +++ b/UI/Web/src/app/settings/_components/setting-button/setting-button.component.html @@ -1,12 +1,7 @@
- - - - - @if (subtitle) {
} diff --git a/UI/Web/src/app/settings/_components/setting-item/setting-item.component.html b/UI/Web/src/app/settings/_components/setting-item/setting-item.component.html index 0b97943971..3ccd722aed 100644 --- a/UI/Web/src/app/settings/_components/setting-item/setting-item.component.html +++ b/UI/Web/src/app/settings/_components/setting-item/setting-item.component.html @@ -15,7 +15,7 @@
@if (showEdit) { - } diff --git a/UI/Web/src/app/settings/_components/setting-title/setting-title.component.html b/UI/Web/src/app/settings/_components/setting-title/setting-title.component.html index ec5fd18e7a..726cf5c0f6 100644 --- a/UI/Web/src/app/settings/_components/setting-title/setting-title.component.html +++ b/UI/Web/src/app/settings/_components/setting-title/setting-title.component.html @@ -9,7 +9,7 @@
{{title}}
- +
diff --git a/UI/Web/src/app/volume-detail/volume-detail.component.html b/UI/Web/src/app/volume-detail/volume-detail.component.html index eb0c4c7015..1db3df2d33 100644 --- a/UI/Web/src/app/volume-detail/volume-detail.component.html +++ b/UI/Web/src/app/volume-detail/volume-detail.component.html @@ -4,14 +4,22 @@ @if (volume && series && libraryType !== null) {
-
+
- - @if (volume.pagesRead < volume.pages && volume.pagesRead > 0) { + @if(mobileSeriesImgBackground === 'true') { + + } @else { + + } + +

diff --git a/UI/Web/src/app/volume-detail/volume-detail.component.ts b/UI/Web/src/app/volume-detail/volume-detail.component.ts index 1a28721d8e..eed4463e96 100644 --- a/UI/Web/src/app/volume-detail/volume-detail.component.ts +++ b/UI/Web/src/app/volume-detail/volume-detail.component.ts @@ -8,7 +8,7 @@ import { OnInit, ViewChild } from '@angular/core'; -import {AsyncPipe, DecimalPipe, DOCUMENT, NgStyle} from "@angular/common"; +import {AsyncPipe, DecimalPipe, DOCUMENT, NgStyle, NgClass} from "@angular/common"; import {ActivatedRoute, Router, RouterLink} from "@angular/router"; import {ImageService} from "../_services/image.service"; import {SeriesService} from "../_services/series.service"; @@ -143,6 +143,7 @@ interface VolumeCast extends IHasCast { NgbTooltip, ImageComponent, NgStyle, + NgClass, TranslocoDirective, CardItemComponent, VirtualScrollerModule, @@ -198,6 +199,7 @@ export class VolumeDetailComponent implements OnInit { libraryType: LibraryType | null = null; activeTabId = TabID.Chapters; readingLists: ReadingList[] = []; + mobileSeriesImgBackground: string | undefined; volumeActions: Array> = this.actionFactoryService.getVolumeActions(this.handleVolumeAction.bind(this)); @@ -266,7 +268,8 @@ export class VolumeDetailComponent implements OnInit { return; } - + this.mobileSeriesImgBackground = getComputedStyle(document.documentElement) + .getPropertyValue('--mobile-series-img-background').trim(); this.seriesId = parseInt(seriesId, 10); this.volumeId = parseInt(volumeId, 10); this.libraryId = parseInt(libraryId, 10); diff --git a/UI/Web/src/theme/themes/dark.scss b/UI/Web/src/theme/themes/dark.scss index 6c340c979d..3d147b8d05 100644 --- a/UI/Web/src/theme/themes/dark.scss +++ b/UI/Web/src/theme/themes/dark.scss @@ -417,4 +417,6 @@ --login-input-font-family: 'League Spartan', sans-serif; --login-input-placeholder-opacity: 0.5; --login-input-placeholder-color: #fff; + + --mobile-series-img-background: true; }