Skip to content

Commit 6b0513a

Browse files
committed
Fix thumbnail placeholder font scaling in ds-recent-item-list
1 parent 064dae2 commit 6b0513a

3 files changed

Lines changed: 52 additions & 13 deletions

File tree

src/app/home-page/recent-item-list/recent-item-list.component.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<ng-container *ngVar="(itemRD$ | async) as itemRD">
2-
<div class="mt-4" *ngIf="itemRD?.hasSucceeded && itemRD?.payload?.page.length > 0" @fadeIn>
2+
<div class="mt-4" [ngClass]="placeholderFontClass" *ngIf="itemRD?.hasSucceeded && itemRD?.payload?.page.length > 0" @fadeIn>
33
<div class="d-flex flex-row border-bottom mb-4 pb-4 ng-tns-c416-2"></div>
44
<h2> {{'home.recent-submissions.head' | translate}}</h2>
55
<div class="my-4" *ngFor="let item of itemRD?.payload?.page">
@@ -12,4 +12,4 @@ <h2> {{'home.recent-submissions.head' | translate}}</h2>
1212
<ds-error *ngIf="itemRD?.hasFailed" message="{{'error.recent-submissions' | translate}}"></ds-error>
1313
<ds-loading *ngIf="!itemRD || itemRD.isLoading" message="{{'loading.recent-submissions' | translate}}">
1414
</ds-loading>
15-
</ng-container>
15+
</ng-container>

src/app/home-page/recent-item-list/recent-item-list.component.spec.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,11 @@ import { SearchConfigurationService } from '../../core/shared/search/search-conf
1010
import { PaginatedSearchOptions } from '../../shared/search/models/paginated-search-options.model';
1111
import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model';
1212
import { SortDirection, SortOptions } from '../../core/cache/models/sort-options.model';
13-
import { ViewMode } from 'src/app/core/shared/view-mode.model';
1413
import { of as observableOf } from 'rxjs';
14+
import { APP_CONFIG } from '../../../config/app-config.interface';
15+
import { environment } from '../../../environments/environment';
16+
import { PLATFORM_ID } from '@angular/core';
17+
1518
describe('RecentItemListComponent', () => {
1619
let component: RecentItemListComponent;
1720
let fixture: ComponentFixture<RecentItemListComponent>;
@@ -42,6 +45,8 @@ describe('RecentItemListComponent', () => {
4245
{ provide: SearchService, useValue: searchServiceStub },
4346
{ provide: PaginationService, useValue: paginationService },
4447
{ provide: SearchConfigurationService, useValue: searchConfigServiceStub },
48+
{ provide: APP_CONFIG, useValue: environment },
49+
{ provide: PLATFORM_ID, useValue: 'browser' },
4550
],
4651
})
4752
.compileComponents();

src/app/home-page/recent-item-list/recent-item-list.component.ts

Lines changed: 44 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';
1+
import { ChangeDetectionStrategy, Component, ElementRef, Inject, OnInit, PLATFORM_ID } from '@angular/core';
22
import { PaginatedSearchOptions } from '../../shared/search/models/paginated-search-options.model';
33
import { fadeIn, fadeInOut } from '../../shared/animations/fade';
44
import { RemoteData } from '../../core/data/remote-data';
@@ -11,12 +11,13 @@ import { SortDirection, SortOptions } from '../../core/cache/models/sort-options
1111
import { environment } from '../../../environments/environment';
1212
import { ViewMode } from '../../core/shared/view-mode.model';
1313
import { SearchConfigurationService } from '../../core/shared/search/search-configuration.service';
14-
import {
15-
toDSpaceObjectListRD
16-
} from '../../core/shared/operators';
17-
import {
18-
Observable,
19-
} from 'rxjs';
14+
import { toDSpaceObjectListRD } from '../../core/shared/operators';
15+
import { Observable } from 'rxjs';
16+
import { followLink, FollowLinkConfig } from '../../shared/utils/follow-link-config.model';
17+
import { APP_CONFIG, AppConfig } from '../../../config/app-config.interface';
18+
import { isPlatformBrowser } from '@angular/common';
19+
import { setPlaceHolderAttributes } from '../../shared/utils/object-list-utils';
20+
2021
@Component({
2122
selector: 'ds-recent-item-list',
2223
templateUrl: './recent-item-list.component.html',
@@ -31,14 +32,22 @@ export class RecentItemListComponent implements OnInit {
3132
itemRD$: Observable<RemoteData<PaginatedList<Item>>>;
3233
paginationConfig: PaginationComponentOptions;
3334
sortConfig: SortOptions;
35+
3436
/**
3537
* The view-mode we're currently on
3638
* @type {ViewMode}
3739
*/
3840
viewMode = ViewMode.ListElement;
39-
constructor(private searchService: SearchService,
41+
42+
private _placeholderFontClass: string;
43+
44+
constructor(
45+
private searchService: SearchService,
4046
private paginationService: PaginationService,
41-
public searchConfigurationService: SearchConfigurationService
47+
public searchConfigurationService: SearchConfigurationService,
48+
protected elementRef: ElementRef,
49+
@Inject(APP_CONFIG) private appConfig: AppConfig,
50+
@Inject(PLATFORM_ID) private platformId: Object,
4251
) {
4352

4453
this.paginationConfig = Object.assign(new PaginationComponentOptions(), {
@@ -50,16 +59,29 @@ export class RecentItemListComponent implements OnInit {
5059
this.sortConfig = new SortOptions(environment.homePage.recentSubmissions.sortField, SortDirection.DESC);
5160
}
5261
ngOnInit(): void {
62+
const linksToFollow: FollowLinkConfig<Item>[] = [];
63+
if (this.appConfig.browseBy.showThumbnails) {
64+
linksToFollow.push(followLink('thumbnail'));
65+
}
66+
5367
this.itemRD$ = this.searchService.search(
5468
new PaginatedSearchOptions({
5569
pagination: this.paginationConfig,
5670
sort: this.sortConfig,
5771
}),
58-
).pipe(toDSpaceObjectListRD()) as Observable<RemoteData<PaginatedList<Item>>>;
72+
undefined,
73+
undefined,
74+
undefined,
75+
...linksToFollow,
76+
).pipe(
77+
toDSpaceObjectListRD()
78+
) as Observable<RemoteData<PaginatedList<Item>>>;
5979
}
80+
6081
ngOnDestroy(): void {
6182
this.paginationService.clearPagination(this.paginationConfig.id);
6283
}
84+
6385
onLoadMore(): void {
6486
this.paginationService.updateRouteWithUrl(this.searchConfigurationService.paginationID, ['search'], {
6587
sortField: environment.homePage.recentSubmissions.sortField,
@@ -68,5 +90,17 @@ export class RecentItemListComponent implements OnInit {
6890
});
6991
}
7092

93+
get placeholderFontClass(): string {
94+
if (this._placeholderFontClass === undefined) {
95+
if (isPlatformBrowser(this.platformId)) {
96+
const width = this.elementRef.nativeElement.offsetWidth;
97+
this._placeholderFontClass = setPlaceHolderAttributes(width);
98+
} else {
99+
this._placeholderFontClass = 'hide-placeholder-text';
100+
}
101+
}
102+
return this._placeholderFontClass;
103+
}
104+
71105
}
72106

0 commit comments

Comments
 (0)