diff --git a/src/app/browse-by/browse-by-date-page/browse-by-date-page.component.ts b/src/app/browse-by/browse-by-date-page/browse-by-date-page.component.ts index c9ee669e51..c4a67349a5 100644 --- a/src/app/browse-by/browse-by-date-page/browse-by-date-page.component.ts +++ b/src/app/browse-by/browse-by-date-page/browse-by-date-page.component.ts @@ -11,7 +11,6 @@ import { ActivatedRoute, Params, Router } from '@angular/router'; import { BrowseService } from '../../core/browse/browse.service'; import { DSpaceObjectDataService } from '../../core/data/dspace-object-data.service'; import { StartsWithType } from '../../shared/starts-with/starts-with-decorator'; -import { BrowseByDataType, rendersBrowseBy } from '../browse-by-switcher/browse-by-decorator'; import { PaginationService } from '../../core/pagination/pagination.service'; import { map } from 'rxjs/operators'; import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model'; @@ -29,7 +28,6 @@ import { AppConfig, APP_CONFIG } from '../../../config/app-config.interface'; * A metadata definition (a.k.a. browse id) is a short term used to describe one or multiple metadata fields. * An example would be 'dateissued' for 'dc.date.issued' */ -@rendersBrowseBy(BrowseByDataType.Date) export class BrowseByDatePageComponent extends BrowseByMetadataPageComponent { /** diff --git a/src/app/browse-by/browse-by-date-page/themed-browse-by-date-page.component.ts b/src/app/browse-by/browse-by-date-page/themed-browse-by-date-page.component.ts new file mode 100644 index 0000000000..8eeae0c5de --- /dev/null +++ b/src/app/browse-by/browse-by-date-page/themed-browse-by-date-page.component.ts @@ -0,0 +1,29 @@ +import {Component} from '@angular/core'; +import { ThemedComponent } from '../../shared/theme-support/themed.component'; +import { BrowseByDatePageComponent } from './browse-by-date-page.component'; +import {BrowseByDataType, rendersBrowseBy} from '../browse-by-switcher/browse-by-decorator'; + +/** + * Themed wrapper for BrowseByDatePageComponent + * */ +@Component({ + selector: 'ds-themed-browse-by-metadata-page', + styleUrls: [], + templateUrl: '../../shared/theme-support/themed.component.html', +}) + +@rendersBrowseBy(BrowseByDataType.Date) +export class ThemedBrowseByDatePageComponent + extends ThemedComponent { + protected getComponentName(): string { + return 'BrowseByDatePageComponent'; + } + + protected importThemedComponent(themeName: string): Promise { + return import(`../../../themes/${themeName}/app/browse-by/browse-by-date-page/browse-by-date-page.component`); + } + + protected importUnthemedComponent(): Promise { + return import(`./browse-by-date-page.component`); + } +} diff --git a/src/app/browse-by/browse-by-metadata-page/browse-by-metadata-page.component.ts b/src/app/browse-by/browse-by-metadata-page/browse-by-metadata-page.component.ts index a95aea7c0a..4cfe332da1 100644 --- a/src/app/browse-by/browse-by-metadata-page/browse-by-metadata-page.component.ts +++ b/src/app/browse-by/browse-by-metadata-page/browse-by-metadata-page.component.ts @@ -1,5 +1,5 @@ import { combineLatest as observableCombineLatest, Observable, Subscription } from 'rxjs'; -import { Component, Inject, OnInit } from '@angular/core'; +import { Component, Inject, OnInit, OnDestroy } from '@angular/core'; import { RemoteData } from '../../core/data/remote-data'; import { PaginatedList } from '../../core/data/paginated-list.model'; import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model'; @@ -14,7 +14,6 @@ import { getFirstSucceededRemoteData } from '../../core/shared/operators'; import { DSpaceObjectDataService } from '../../core/data/dspace-object-data.service'; import { DSpaceObject } from '../../core/shared/dspace-object.model'; import { StartsWithType } from '../../shared/starts-with/starts-with-decorator'; -import { BrowseByDataType, rendersBrowseBy } from '../browse-by-switcher/browse-by-decorator'; import { PaginationService } from '../../core/pagination/pagination.service'; import { map } from 'rxjs/operators'; import { APP_CONFIG, AppConfig } from '../../../config/app-config.interface'; @@ -32,8 +31,7 @@ export const BBM_PAGINATION_ID = 'bbm'; * or multiple metadata fields. An example would be 'author' for * 'dc.contributor.*' */ -@rendersBrowseBy(BrowseByDataType.Metadata) -export class BrowseByMetadataPageComponent implements OnInit { +export class BrowseByMetadataPageComponent implements OnInit, OnDestroy { /** * The list of browse-entries to display @@ -93,7 +91,7 @@ export class BrowseByMetadataPageComponent implements OnInit { startsWithOptions; /** - * The value we're browing items for + * The value we're browsing items for * - When the value is not empty, we're browsing items * - When the value is empty, we're browsing browse-entries (values for the given metadata definition) */ diff --git a/src/app/browse-by/browse-by-metadata-page/themed-browse-by-metadata-page.component.ts b/src/app/browse-by/browse-by-metadata-page/themed-browse-by-metadata-page.component.ts new file mode 100644 index 0000000000..b0679258e9 --- /dev/null +++ b/src/app/browse-by/browse-by-metadata-page/themed-browse-by-metadata-page.component.ts @@ -0,0 +1,29 @@ +import {Component} from '@angular/core'; +import { ThemedComponent } from '../../shared/theme-support/themed.component'; +import { BrowseByMetadataPageComponent } from './browse-by-metadata-page.component'; +import {BrowseByDataType, rendersBrowseBy} from '../browse-by-switcher/browse-by-decorator'; + +/** + * Themed wrapper for BrowseByMetadataPageComponent + **/ +@Component({ + selector: 'ds-themed-browse-by-metadata-page', + styleUrls: [], + templateUrl: '../../shared/theme-support/themed.component.html', +}) + +@rendersBrowseBy(BrowseByDataType.Metadata) +export class ThemedBrowseByMetadataPageComponent + extends ThemedComponent { + protected getComponentName(): string { + return 'BrowseByMetadataPageComponent'; + } + + protected importThemedComponent(themeName: string): Promise { + return import(`../../../themes/${themeName}/app/browse-by/browse-by-metadata-page/browse-by-metadata-page.component`); + } + + protected importUnthemedComponent(): Promise { + return import(`./browse-by-metadata-page.component`); + } +} diff --git a/src/app/browse-by/browse-by-title-page/browse-by-title-page.component.ts b/src/app/browse-by/browse-by-title-page/browse-by-title-page.component.ts index 85693ccecd..5320d7bb48 100644 --- a/src/app/browse-by/browse-by-title-page/browse-by-title-page.component.ts +++ b/src/app/browse-by/browse-by-title-page/browse-by-title-page.component.ts @@ -9,7 +9,6 @@ import { import { DSpaceObjectDataService } from '../../core/data/dspace-object-data.service'; import { BrowseService } from '../../core/browse/browse.service'; import { SortDirection, SortOptions } from '../../core/cache/models/sort-options.model'; -import { BrowseByDataType, rendersBrowseBy } from '../browse-by-switcher/browse-by-decorator'; import { PaginationService } from '../../core/pagination/pagination.service'; import { map } from 'rxjs/operators'; import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model'; @@ -23,7 +22,6 @@ import { AppConfig, APP_CONFIG } from '../../../config/app-config.interface'; /** * Component for browsing items by title (dc.title) */ -@rendersBrowseBy(BrowseByDataType.Title) export class BrowseByTitlePageComponent extends BrowseByMetadataPageComponent { public constructor(protected route: ActivatedRoute, diff --git a/src/app/browse-by/browse-by-title-page/themed-browse-by-title-page.component.ts b/src/app/browse-by/browse-by-title-page/themed-browse-by-title-page.component.ts new file mode 100644 index 0000000000..4a1bcc0bc1 --- /dev/null +++ b/src/app/browse-by/browse-by-title-page/themed-browse-by-title-page.component.ts @@ -0,0 +1,29 @@ +import {Component} from '@angular/core'; +import { ThemedComponent } from '../../shared/theme-support/themed.component'; +import { BrowseByTitlePageComponent } from './browse-by-title-page.component'; +import {BrowseByDataType, rendersBrowseBy} from '../browse-by-switcher/browse-by-decorator'; + +/** + * Themed wrapper for BrowseByTitlePageComponent + */ +@Component({ + selector: 'ds-themed-browse-by-title-page', + styleUrls: [], + templateUrl: '../../shared/theme-support/themed.component.html', +}) + +@rendersBrowseBy(BrowseByDataType.Title) +export class ThemedBrowseByTitlePageComponent + extends ThemedComponent { + protected getComponentName(): string { + return 'BrowseByTitlePageComponent'; + } + + protected importThemedComponent(themeName: string): Promise { + return import(`../../../themes/${themeName}/app/browse-by/browse-by-title-page/browse-by-title-page.component`); + } + + protected importUnthemedComponent(): Promise { + return import(`./browse-by-title-page.component`); + } +} diff --git a/src/app/browse-by/browse-by.module.ts b/src/app/browse-by/browse-by.module.ts index e1dfaacea5..14e21f8b4c 100644 --- a/src/app/browse-by/browse-by.module.ts +++ b/src/app/browse-by/browse-by.module.ts @@ -7,12 +7,20 @@ import { BrowseByDatePageComponent } from './browse-by-date-page/browse-by-date- import { BrowseBySwitcherComponent } from './browse-by-switcher/browse-by-switcher.component'; import { ThemedBrowseBySwitcherComponent } from './browse-by-switcher/themed-browse-by-switcher.component'; import { ComcolModule } from '../shared/comcol/comcol.module'; +import { ThemedBrowseByMetadataPageComponent } from './browse-by-metadata-page/themed-browse-by-metadata-page.component'; +import { ThemedBrowseByDatePageComponent } from './browse-by-date-page/themed-browse-by-date-page.component'; +import { ThemedBrowseByTitlePageComponent } from './browse-by-title-page/themed-browse-by-title-page.component'; const ENTRY_COMPONENTS = [ // put only entry components that use custom decorator BrowseByTitlePageComponent, BrowseByMetadataPageComponent, - BrowseByDatePageComponent + BrowseByDatePageComponent, + + ThemedBrowseByMetadataPageComponent, + ThemedBrowseByDatePageComponent, + ThemedBrowseByTitlePageComponent, + ]; @NgModule({ diff --git a/src/themes/custom/app/browse-by/browse-by-date-page/browse-by-date-page.component.ts b/src/themes/custom/app/browse-by/browse-by-date-page/browse-by-date-page.component.ts new file mode 100644 index 0000000000..9fcf773350 --- /dev/null +++ b/src/themes/custom/app/browse-by/browse-by-date-page/browse-by-date-page.component.ts @@ -0,0 +1,17 @@ +import { Component } from '@angular/core'; +import { BrowseByDatePageComponent as BaseComponent } from '../../../../../app/browse-by/browse-by-date-page/browse-by-date-page.component'; + +@Component({ + selector: 'ds-browse-by-date-page', + // styleUrls: ['./browse-by-date-page.component.scss'], + styleUrls: ['../../../../../app/browse-by/browse-by-metadata-page/browse-by-metadata-page.component.scss'], + // templateUrl: './browse-by-date-page.component.html' + templateUrl: '../../../../../app/browse-by/browse-by-metadata-page/browse-by-metadata-page.component.html' +}) + +/** + * Component for determining what Browse-By component to use depending on the metadata (browse ID) provided + */ + +export class BrowseByDatePageComponent extends BaseComponent { +} diff --git a/src/themes/custom/app/browse-by/browse-by-metadata-page/browse-by-metadata-page.component.html b/src/themes/custom/app/browse-by/browse-by-metadata-page/browse-by-metadata-page.component.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/themes/custom/app/browse-by/browse-by-metadata-page/browse-by-metadata-page.component.scss b/src/themes/custom/app/browse-by/browse-by-metadata-page/browse-by-metadata-page.component.scss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/themes/custom/app/browse-by/browse-by-metadata-page/browse-by-metadata-page.component.ts b/src/themes/custom/app/browse-by/browse-by-metadata-page/browse-by-metadata-page.component.ts new file mode 100644 index 0000000000..9434ca936d --- /dev/null +++ b/src/themes/custom/app/browse-by/browse-by-metadata-page/browse-by-metadata-page.component.ts @@ -0,0 +1,17 @@ +import { Component } from '@angular/core'; +import { BrowseByMetadataPageComponent as BaseComponent } from '../../../../../app/browse-by/browse-by-metadata-page/browse-by-metadata-page.component'; + +@Component({ + selector: 'ds-browse-by-metadata-page', + // styleUrls: ['./browse-by-metadata-page.component.scss'], + styleUrls: ['../../../../../app/browse-by/browse-by-metadata-page/browse-by-metadata-page.component.scss'], + // templateUrl: './browse-by-metadata-page.component.html' + templateUrl: '../../../../../app/browse-by/browse-by-metadata-page/browse-by-metadata-page.component.html' +}) + +/** + * Component for determining what Browse-By component to use depending on the metadata (browse ID) provided + */ + +export class BrowseByMetadataPageComponent extends BaseComponent { +} diff --git a/src/themes/custom/app/browse-by/browse-by-title-page/browse-by-title-page.component.ts b/src/themes/custom/app/browse-by/browse-by-title-page/browse-by-title-page.component.ts new file mode 100644 index 0000000000..503283a384 --- /dev/null +++ b/src/themes/custom/app/browse-by/browse-by-title-page/browse-by-title-page.component.ts @@ -0,0 +1,17 @@ +import { Component } from '@angular/core'; +import { BrowseByTitlePageComponent as BaseComponent } from '../../../../../app/browse-by/browse-by-title-page/browse-by-title-page.component'; + +@Component({ + selector: 'ds-browse-by-title-page', + // styleUrls: ['./browse-by-date-page.component.scss'], + styleUrls: ['../../../../../app/browse-by/browse-by-metadata-page/browse-by-metadata-page.component.scss'], + // templateUrl: './browse-by-date-page.component.html' + templateUrl: '../../../../../app/browse-by/browse-by-metadata-page/browse-by-metadata-page.component.html' +}) + +/** + * Component for determining what Browse-By component to use depending on the metadata (browse ID) provided + */ + +export class BrowseByTitlePageComponent extends BaseComponent { +} diff --git a/src/themes/custom/lazy-theme.module.ts b/src/themes/custom/lazy-theme.module.ts index acb3b1fa4a..dc6190f851 100644 --- a/src/themes/custom/lazy-theme.module.ts +++ b/src/themes/custom/lazy-theme.module.ts @@ -111,6 +111,10 @@ import { } from './app/community-page/sub-collection-list/community-page-sub-collection-list.component'; import { ObjectListComponent } from './app/shared/object-list/object-list.component'; +import { BrowseByMetadataPageComponent } from './app/browse-by/browse-by-metadata-page/browse-by-metadata-page.component'; +import { BrowseByDatePageComponent } from './app/browse-by/browse-by-date-page/browse-by-date-page.component'; +import { BrowseByTitlePageComponent } from './app/browse-by/browse-by-title-page/browse-by-title-page.component'; + const DECLARATIONS = [ FileSectionComponent, HomePageComponent, @@ -161,6 +165,11 @@ const DECLARATIONS = [ SearchSettingsComponent ComcolPageBrowseByComponent, ObjectListComponent, + BrowseByMetadataPageComponent, + BrowseByDatePageComponent, + BrowseByTitlePageComponent, + + ]; @NgModule({