Skip to content

Commit 35c81af

Browse files
[UXP-171] card layout for browse-elements
1 parent 2120cff commit 35c81af

8 files changed

Lines changed: 88 additions & 1 deletion

src/app/shared/browse-most-elements/browse-most-elements.component.html

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
<div [ngSwitch]="(sectionTemplateType | lowercase)">
22

3+
<ng-container *ngSwitchCase="templateTypeEnum.CARD">
4+
<ds-themed-cards-browse-elements
5+
[topSection]="topSection"
6+
[paginatedSearchOptions]="paginatedSearchOptionsBS.asObservable() | async"
7+
[context]="context"
8+
>
9+
</ds-themed-cards-browse-elements>
10+
</ng-container>
11+
312
<ng-container *ngSwitchDefault>
413
<ds-themed-default-browse-elements
514
[showThumbnails]="topSection.showThumbnails"

src/app/shared/browse-most-elements/browse-most-elements.component.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@ export class BrowseMostElementsComponent implements OnInit, OnChanges {
2828

2929
sectionTemplateType: TopSectionTemplateType;
3030

31+
/**
32+
* The type of the template to render
33+
*/
34+
templateTypeEnum = TopSectionTemplateType;
35+
3136
ngOnInit(): void {
3237
this.sectionTemplateType = this.topSection?.template
3338
?? (this.mode === LayoutModeEnum.CARD ? TopSectionTemplateType.CARD : TopSectionTemplateType.DEFAULT);
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<ng-container *ngIf="(searchResults$ | async) as searchResults">
2+
<ds-object-grid
3+
[configStyle]="topSection?.cardStyle"
4+
[columnStyle]="topSection?.cardColumnStyle"
5+
[config]="paginatedSearchOptions.pagination"
6+
[sortConfig]="paginatedSearchOptions.sort"
7+
[objects]="searchResults"
8+
[linkType]="collectionElementLinkTypeEnum.Link"
9+
[context]="context"
10+
[noPagination]="true"
11+
>
12+
</ds-object-grid>
13+
</ng-container>

src/app/shared/browse-most-elements/cards-browse-elements/cards-browse-elements.component.scss

Whitespace-only changes.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { Component } from '@angular/core';
2+
import {AbstractBrowseElementsComponent} from "../abstract-browse-elements.component";
3+
import {CollectionElementLinkType} from "../../object-collection/collection-element-link.type";
4+
5+
@Component({
6+
selector: 'ds-cards-browse-elements',
7+
templateUrl: './cards-browse-elements.component.html',
8+
styleUrls: ['./cards-browse-elements.component.scss']
9+
})
10+
export class CardsBrowseElementsComponent extends AbstractBrowseElementsComponent {
11+
12+
public collectionElementLinkTypeEnum = CollectionElementLinkType;
13+
14+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import {Component, Input} from '@angular/core';
2+
import { ThemedComponent } from '../../theme-support/themed.component';
3+
import { Context } from '../../../core/shared/context.model';
4+
import { PaginatedSearchOptions } from '../../search/models/paginated-search-options.model';
5+
import { TopSection } from '../../../core/layout/models/section.model';
6+
import {CardsBrowseElementsComponent} from "./cards-browse-elements.component";
7+
8+
/**
9+
* This component is a wrapper for the CardsBrowseElementsComponent
10+
*/
11+
@Component({
12+
selector: 'ds-themed-cards-browse-elements',
13+
styleUrls: [],
14+
templateUrl: './../../theme-support/themed.component.html',
15+
})
16+
export class ThemedCardsBrowseElementsComponent extends ThemedComponent<CardsBrowseElementsComponent> {
17+
18+
// AbstractBrowseElementsComponent I/O variables
19+
20+
@Input() paginatedSearchOptions: PaginatedSearchOptions;
21+
22+
@Input() context: Context;
23+
24+
@Input() topSection: TopSection;
25+
26+
protected inAndOutputNames: (keyof CardsBrowseElementsComponent & keyof this)[] = ['paginatedSearchOptions', 'context', 'topSection'];
27+
28+
protected getComponentName(): string {
29+
return 'CardsBrowseElementsComponent';
30+
}
31+
32+
protected importThemedComponent(themeName: string): Promise<any> {
33+
return import(`./../../../../themes/${themeName}/app/shared/browse-most-elements/cards-browse-elements/cards-browse-elements.component`);
34+
}
35+
36+
protected importUnthemedComponent(): Promise<any> {
37+
return import(`./cards-browse-elements.component`);
38+
}
39+
}

src/app/shared/browse-most-elements/themed-browse-most-elements.component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ export class ThemedBrowseMostElementsComponent extends ThemedComponent<BrowseMos
3030
}
3131

3232
protected importThemedComponent(themeName: string): Promise<any> {
33-
return import(`../../../themes/${themeName}/app/browse-most-elements/browse-most-elements.component`);
33+
return import(`../../../themes/${themeName}/app/shared/browse-most-elements/browse-most-elements.component`);
3434
}
3535

3636
protected importUnthemedComponent(): Promise<any> {

src/app/shared/shared.module.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -357,6 +357,10 @@ import { MetadataLinkViewAvatarPopoverComponent } from './metadata-link-view/met
357357
import { MetadataLinkViewOrcidComponent } from './metadata-link-view/metadata-link-view-orcid/metadata-link-view-orcid.component';
358358
import { DefaultBrowseElementsComponent } from './browse-most-elements/default-browse-elements/default-browse-elements.component';
359359
import { ThemedDefaultBrowseElementsComponent } from './browse-most-elements/default-browse-elements/themed-default-browse-elements.component';
360+
import { CardsBrowseElementsComponent } from './browse-most-elements/cards-browse-elements/cards-browse-elements.component';
361+
import {
362+
ThemedCardsBrowseElementsComponent
363+
} from "./browse-most-elements/cards-browse-elements/themed-cards-browse-elements.component";
360364

361365
const MODULES = [
362366
CommonModule,
@@ -518,6 +522,8 @@ const COMPONENTS = [
518522
ItemCollectionComponent,
519523
DefaultBrowseElementsComponent,
520524
ThemedDefaultBrowseElementsComponent,
525+
CardsBrowseElementsComponent,
526+
ThemedCardsBrowseElementsComponent,
521527
];
522528

523529
const ENTRY_COMPONENTS = [
@@ -595,6 +601,7 @@ const ENTRY_COMPONENTS = [
595601
RelationshipsListComponent,
596602
AdditionalMetadataComponent,
597603
ThemedDefaultBrowseElementsComponent,
604+
ThemedCardsBrowseElementsComponent,
598605
];
599606

600607
const PROVIDERS = [

0 commit comments

Comments
 (0)