From 22b596b3aa7fc1fe6b2b0d1228bd8bf8393becb7 Mon Sep 17 00:00:00 2001 From: Nona Luypaert Date: Mon, 22 Jan 2024 13:41:02 +0100 Subject: [PATCH 01/15] 107950: Theme MetadataImportPageComponent --- .../themed-metadata-import-page.component.ts | 25 +++++++++++++++++++ src/app/admin/admin-routing.module.ts | 4 +-- src/app/admin/admin.module.ts | 2 ++ .../metadata-import-page.component.html | 0 .../metadata-import-page.component.ts | 15 +++++++++++ src/themes/custom/lazy-theme.module.ts | 2 ++ 6 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 src/app/admin/admin-import-metadata-page/themed-metadata-import-page.component.ts create mode 100644 src/themes/custom/app/admin/admin-import-metadata-page/metadata-import-page.component.html create mode 100644 src/themes/custom/app/admin/admin-import-metadata-page/metadata-import-page.component.ts diff --git a/src/app/admin/admin-import-metadata-page/themed-metadata-import-page.component.ts b/src/app/admin/admin-import-metadata-page/themed-metadata-import-page.component.ts new file mode 100644 index 0000000000..af379a0dbd --- /dev/null +++ b/src/app/admin/admin-import-metadata-page/themed-metadata-import-page.component.ts @@ -0,0 +1,25 @@ +import { Component } from '@angular/core'; +import { ThemedComponent } from '../../shared/theme-support/themed.component'; +import { MetadataImportPageComponent } from './metadata-import-page.component'; + +/** + * Themed wrapper for MetadataImportPageComponent. + */ +@Component({ + selector: 'ds-themed-metadata-import-page', + templateUrl: '../../shared/theme-support/themed.component.html', + styleUrls: [] +}) +export class ThemedMetadataImportPageComponent extends ThemedComponent{ + protected getComponentName(): string { + return 'MetadataImportPageComponent'; + } + + protected importThemedComponent(themeName: string): Promise { + return import(`../../../themes/${themeName}/app/admin/admin-import-metadata-page/metadata-import-page.component`); + } + + protected importUnthemedComponent(): Promise { + return import('./metadata-import-page.component'); + } +} diff --git a/src/app/admin/admin-routing.module.ts b/src/app/admin/admin-routing.module.ts index 8e4f13b164..5644e0bb77 100644 --- a/src/app/admin/admin-routing.module.ts +++ b/src/app/admin/admin-routing.module.ts @@ -1,6 +1,5 @@ import { NgModule } from '@angular/core'; import { RouterModule } from '@angular/router'; -import { MetadataImportPageComponent } from './admin-import-metadata-page/metadata-import-page.component'; import { AdminSearchPageComponent } from './admin-search-page/admin-search-page.component'; import { I18nBreadcrumbResolver } from '../core/breadcrumbs/i18n-breadcrumb.resolver'; import { AdminWorkflowPageComponent } from './admin-workflow-page/admin-workflow-page.component'; @@ -8,6 +7,7 @@ import { I18nBreadcrumbsService } from '../core/breadcrumbs/i18n-breadcrumbs.ser import { AdminCurationTasksComponent } from './admin-curation-tasks/admin-curation-tasks.component'; import { REGISTRIES_MODULE_PATH } from './admin-routing-paths'; import { BatchImportPageComponent } from './admin-import-batch-page/batch-import-page.component'; +import { ThemedMetadataImportPageComponent } from './admin-import-metadata-page/themed-metadata-import-page.component'; @NgModule({ imports: [ @@ -38,7 +38,7 @@ import { BatchImportPageComponent } from './admin-import-batch-page/batch-import { path: 'metadata-import', resolve: { breadcrumb: I18nBreadcrumbResolver }, - component: MetadataImportPageComponent, + component: ThemedMetadataImportPageComponent, data: { title: 'admin.metadata-import.title', breadcrumbKey: 'admin.metadata-import' } }, { diff --git a/src/app/admin/admin.module.ts b/src/app/admin/admin.module.ts index 3dc0036854..ab6c7b46c3 100644 --- a/src/app/admin/admin.module.ts +++ b/src/app/admin/admin.module.ts @@ -12,6 +12,7 @@ import { ExpandableAdminSidebarSectionComponent } from './admin-sidebar/expandab import { BatchImportPageComponent } from './admin-import-batch-page/batch-import-page.component'; import { UiSwitchModule } from 'ngx-ui-switch'; import { UploadModule } from '../shared/upload/upload.module'; +import { ThemedMetadataImportPageComponent } from './admin-import-metadata-page/themed-metadata-import-page.component'; const ENTRY_COMPONENTS = [ // put only entry components that use custom decorator @@ -34,6 +35,7 @@ const ENTRY_COMPONENTS = [ declarations: [ AdminCurationTasksComponent, MetadataImportPageComponent, + ThemedMetadataImportPageComponent, BatchImportPageComponent ] }) diff --git a/src/themes/custom/app/admin/admin-import-metadata-page/metadata-import-page.component.html b/src/themes/custom/app/admin/admin-import-metadata-page/metadata-import-page.component.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/themes/custom/app/admin/admin-import-metadata-page/metadata-import-page.component.ts b/src/themes/custom/app/admin/admin-import-metadata-page/metadata-import-page.component.ts new file mode 100644 index 0000000000..aec60aeb6c --- /dev/null +++ b/src/themes/custom/app/admin/admin-import-metadata-page/metadata-import-page.component.ts @@ -0,0 +1,15 @@ +import { Component } from '@angular/core'; +import { MetadataImportPageComponent as BaseComponent } from '../../../../../app/admin/admin-import-metadata-page/metadata-import-page.component'; + +@Component({ + selector: 'ds-metadata-import-page', + // templateUrl: './metadata-import-page.component.html', + templateUrl: '../../../../../app/admin/admin-import-metadata-page/metadata-import-page.component.html', +}) + +/** + * Component that represents a metadata import page for administrators + */ +export class MetadataImportPageComponent extends BaseComponent { + +} diff --git a/src/themes/custom/lazy-theme.module.ts b/src/themes/custom/lazy-theme.module.ts index edb3f5478c..0ac32a6eb8 100644 --- a/src/themes/custom/lazy-theme.module.ts +++ b/src/themes/custom/lazy-theme.module.ts @@ -156,6 +156,7 @@ import { ItemStatusComponent } from './app/item-page/edit-item-page/item-status/ import { EditBitstreamPageComponent } from './app/bitstream-page/edit-bitstream-page/edit-bitstream-page.component'; import { FormModule } from '../../app/shared/form/form.module'; import { RequestCopyModule } from 'src/app/request-copy/request-copy.module'; +import { MetadataImportPageComponent } from './app/admin/admin-import-metadata-page/metadata-import-page.component'; const DECLARATIONS = [ FileSectionComponent, @@ -239,6 +240,7 @@ const DECLARATIONS = [ SubmissionSectionUploadFileComponent, ItemStatusComponent, EditBitstreamPageComponent, + MetadataImportPageComponent, ]; @NgModule({ From 106182d5fd61630a202d66929dcc97235e5db195 Mon Sep 17 00:00:00 2001 From: Alexandre Vryghem Date: Fri, 26 Jan 2024 11:35:13 +0100 Subject: [PATCH 02/15] 111321: Made ComColPageContentComponent themeable --- .../browse-by-metadata-page.component.html | 12 +++--- .../collection-page.component.html | 12 +++--- .../community-page.component.html | 12 +++--- .../comcol-page-content.component.ts | 12 ++++-- .../themed-comcol-page-content.component.ts | 38 +++++++++++++++++++ src/app/shared/comcol/comcol.module.ts | 2 + 6 files changed, 67 insertions(+), 21 deletions(-) create mode 100644 src/app/shared/comcol/comcol-page-content/themed-comcol-page-content.component.ts diff --git a/src/app/browse-by/browse-by-metadata-page/browse-by-metadata-page.component.html b/src/app/browse-by/browse-by-metadata-page/browse-by-metadata-page.component.html index 227fa8aa78..5045d226b9 100644 --- a/src/app/browse-by/browse-by-metadata-page/browse-by-metadata-page.component.html +++ b/src/app/browse-by/browse-by-metadata-page/browse-by-metadata-page.component.html @@ -11,11 +11,11 @@ [title]="parentContext.type+'.page.handle'" > - - + + - - + + @@ -49,8 +49,8 @@
- - + +
diff --git a/src/app/collection-page/collection-page.component.html b/src/app/collection-page/collection-page.component.html index eebfdbd829..beae2e6c64 100644 --- a/src/app/collection-page/collection-page.component.html +++ b/src/app/collection-page/collection-page.component.html @@ -22,16 +22,16 @@ [title]="'collection.page.handle'" > - - + - - +
@@ -65,10 +65,10 @@
- - +
diff --git a/src/app/community-page/community-page.component.html b/src/app/community-page/community-page.component.html index 368fec08a5..794c177fea 100644 --- a/src/app/community-page/community-page.component.html +++ b/src/app/community-page/community-page.component.html @@ -13,12 +13,12 @@ - - + + - - +
@@ -35,8 +35,8 @@
- - + +
diff --git a/src/app/shared/comcol/comcol-page-content/comcol-page-content.component.ts b/src/app/shared/comcol/comcol-page-content/comcol-page-content.component.ts index 841b45dd39..149e13068e 100644 --- a/src/app/shared/comcol/comcol-page-content/comcol-page-content.component.ts +++ b/src/app/shared/comcol/comcol-page-content/comcol-page-content.component.ts @@ -13,13 +13,19 @@ import { Component, Input } from '@angular/core'; }) export class ComcolPageContentComponent { - // Optional title + /** + * Optional title + */ @Input() title: string; - // The content to render. Might be html + /** + * The content to render. Might be html + */ @Input() content: string; - // flag whether the content contains html syntax or not + /** + * flag whether the content contains html syntax or not + */ @Input() hasInnerHtml: boolean; } diff --git a/src/app/shared/comcol/comcol-page-content/themed-comcol-page-content.component.ts b/src/app/shared/comcol/comcol-page-content/themed-comcol-page-content.component.ts new file mode 100644 index 0000000000..502909b8d1 --- /dev/null +++ b/src/app/shared/comcol/comcol-page-content/themed-comcol-page-content.component.ts @@ -0,0 +1,38 @@ +import { Component, Input } from '@angular/core'; +import { ThemedComponent } from '../../theme-support/themed.component'; +import { ComcolPageContentComponent } from './comcol-page-content.component'; + +/** + * Themed wrapper for {@link ComcolPageContentComponent} + */ +@Component({ + selector: 'ds-themed-comcol-page-content', + templateUrl: '../../theme-support/themed.component.html', +}) +export class ThemedComcolPageContentComponent extends ThemedComponent { + + @Input() title: string; + + @Input() content: string; + + @Input() hasInnerHtml: boolean; + + protected inAndOutputNames: (keyof ComcolPageContentComponent & keyof this)[] = [ + 'title', + 'content', + 'hasInnerHtml', + ]; + + protected getComponentName(): string { + return 'ComcolPageContentComponent'; + } + + protected importThemedComponent(themeName: string): Promise { + return import(`../../../themes/${themeName}/app/admin/admin-sidebar/admin-sidebar.component`); + } + + protected importUnthemedComponent(): Promise { + return import('./comcol-page-content.component'); + } + +} diff --git a/src/app/shared/comcol/comcol.module.ts b/src/app/shared/comcol/comcol.module.ts index 094387929a..efe145bccd 100644 --- a/src/app/shared/comcol/comcol.module.ts +++ b/src/app/shared/comcol/comcol.module.ts @@ -15,9 +15,11 @@ import { ThemedComcolPageBrowseByComponent } from './comcol-page-browse-by/theme import { ComcolRoleComponent } from './comcol-forms/edit-comcol-page/comcol-role/comcol-role.component'; import { SharedModule } from '../shared.module'; import { FormModule } from '../form/form.module'; +import { ThemedComcolPageContentComponent } from './comcol-page-content/themed-comcol-page-content.component'; const COMPONENTS = [ ComcolPageContentComponent, + ThemedComcolPageContentComponent, ComcolPageHandleComponent, ComcolPageHeaderComponent, ComcolPageLogoComponent, From 7ee425e4a375bfafe509def7d8492189fd0d51b5 Mon Sep 17 00:00:00 2001 From: Alexandre Vryghem Date: Wed, 17 Jan 2024 15:05:57 +0100 Subject: [PATCH 03/15] 111103: Added SearchComponent to custom theme in order to easily theme it --- .../custom/app/shared/search/search.component.html | 0 .../custom/app/shared/search/search.component.scss | 0 .../custom/app/shared/search/search.component.ts | 13 +++++++++++++ src/themes/custom/lazy-theme.module.ts | 2 ++ 4 files changed, 15 insertions(+) create mode 100644 src/themes/custom/app/shared/search/search.component.html create mode 100644 src/themes/custom/app/shared/search/search.component.scss create mode 100644 src/themes/custom/app/shared/search/search.component.ts diff --git a/src/themes/custom/app/shared/search/search.component.html b/src/themes/custom/app/shared/search/search.component.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/themes/custom/app/shared/search/search.component.scss b/src/themes/custom/app/shared/search/search.component.scss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/themes/custom/app/shared/search/search.component.ts b/src/themes/custom/app/shared/search/search.component.ts new file mode 100644 index 0000000000..f54f707e53 --- /dev/null +++ b/src/themes/custom/app/shared/search/search.component.ts @@ -0,0 +1,13 @@ +import { ChangeDetectionStrategy, Component } from '@angular/core'; +import { pushInOut } from '../../../../../app/shared/animations/push'; +import { SearchComponent as BaseComponent } from '../../../../../app/shared/search/search.component'; + +@Component({ + selector: 'ds-search', + styleUrls: ['./search.component.scss'], + templateUrl: './search.component.html', + changeDetection: ChangeDetectionStrategy.OnPush, + animations: [pushInOut], +}) +export class SearchComponent extends BaseComponent { +} diff --git a/src/themes/custom/lazy-theme.module.ts b/src/themes/custom/lazy-theme.module.ts index edb3f5478c..4c4faa5193 100644 --- a/src/themes/custom/lazy-theme.module.ts +++ b/src/themes/custom/lazy-theme.module.ts @@ -156,6 +156,7 @@ import { ItemStatusComponent } from './app/item-page/edit-item-page/item-status/ import { EditBitstreamPageComponent } from './app/bitstream-page/edit-bitstream-page/edit-bitstream-page.component'; import { FormModule } from '../../app/shared/form/form.module'; import { RequestCopyModule } from 'src/app/request-copy/request-copy.module'; +import { SearchComponent } from './app/shared/search/search.component'; const DECLARATIONS = [ FileSectionComponent, @@ -239,6 +240,7 @@ const DECLARATIONS = [ SubmissionSectionUploadFileComponent, ItemStatusComponent, EditBitstreamPageComponent, + SearchComponent, ]; @NgModule({ From 5d123277b014b24943a5c3947c8c6493db69f379 Mon Sep 17 00:00:00 2001 From: Alexandre Vryghem Date: Thu, 18 Jan 2024 15:51:19 +0100 Subject: [PATCH 04/15] Moved custom theme ComcolPageBrowseByComponent & ComcolPageHandleComponent to their correct folder --- .../themed-comcol-page-browse-by.component.ts | 2 +- .../comcol-page-browse-by.component.ts | 15 --------------- .../comcol-page-handle.component.ts | 18 ------------------ .../comcol-page-browse-by.component.html | 0 .../comcol-page-browse-by.component.scss | 0 .../comcol-page-browse-by.component.ts | 12 ++++++++++++ .../comcol-page-handle.component.html | 0 .../comcol-page-handle.component.scss | 0 .../comcol-page-handle.component.ts | 12 ++++++++++++ src/themes/custom/lazy-theme.module.ts | 4 ++-- 10 files changed, 27 insertions(+), 36 deletions(-) delete mode 100644 src/themes/custom/app/shared/comcol-page-browse-by/comcol-page-browse-by.component.ts delete mode 100644 src/themes/custom/app/shared/comcol-page-handle/comcol-page-handle.component.ts rename src/themes/custom/app/shared/{ => comcol}/comcol-page-browse-by/comcol-page-browse-by.component.html (100%) rename src/themes/custom/app/shared/{ => comcol}/comcol-page-browse-by/comcol-page-browse-by.component.scss (100%) create mode 100644 src/themes/custom/app/shared/comcol/comcol-page-browse-by/comcol-page-browse-by.component.ts rename src/themes/custom/app/shared/{ => comcol}/comcol-page-handle/comcol-page-handle.component.html (100%) rename src/themes/custom/app/shared/{ => comcol}/comcol-page-handle/comcol-page-handle.component.scss (100%) create mode 100644 src/themes/custom/app/shared/comcol/comcol-page-handle/comcol-page-handle.component.ts diff --git a/src/app/shared/comcol/comcol-page-browse-by/themed-comcol-page-browse-by.component.ts b/src/app/shared/comcol/comcol-page-browse-by/themed-comcol-page-browse-by.component.ts index 08a13eddf8..2a21605109 100644 --- a/src/app/shared/comcol/comcol-page-browse-by/themed-comcol-page-browse-by.component.ts +++ b/src/app/shared/comcol/comcol-page-browse-by/themed-comcol-page-browse-by.component.ts @@ -24,7 +24,7 @@ export class ThemedComcolPageBrowseByComponent extends ThemedComponent { - return import(`../../../../themes/${themeName}/app/shared/comcol-page-browse-by/comcol-page-browse-by.component`); + return import(`../../../../themes/${themeName}/app/shared/comcol/comcol-page-browse-by/comcol-page-browse-by.component`); } protected importUnthemedComponent(): Promise { diff --git a/src/themes/custom/app/shared/comcol-page-browse-by/comcol-page-browse-by.component.ts b/src/themes/custom/app/shared/comcol-page-browse-by/comcol-page-browse-by.component.ts deleted file mode 100644 index c6805175b0..0000000000 --- a/src/themes/custom/app/shared/comcol-page-browse-by/comcol-page-browse-by.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Component } from '@angular/core'; -import { ComcolPageBrowseByComponent as BaseComponent} from '../../../../../app/shared/comcol/comcol-page-browse-by/comcol-page-browse-by.component'; - -/** - * A component to display the "Browse By" section of a Community or Collection page - * It expects the ID of the Community or Collection as input to be passed on as a scope - */ -@Component({ - selector: 'ds-comcol-page-browse-by', - // styleUrls: ['./comcol-page-browse-by.component.scss'], - styleUrls: ['../../../../../app/shared/comcol/comcol-page-browse-by/comcol-page-browse-by.component.scss'], - // templateUrl: './comcol-page-browse-by.component.html' - templateUrl: '../../../../../app/shared/comcol/comcol-page-browse-by/comcol-page-browse-by.component.html' -}) -export class ComcolPageBrowseByComponent extends BaseComponent {} diff --git a/src/themes/custom/app/shared/comcol-page-handle/comcol-page-handle.component.ts b/src/themes/custom/app/shared/comcol-page-handle/comcol-page-handle.component.ts deleted file mode 100644 index ef68f1538f..0000000000 --- a/src/themes/custom/app/shared/comcol-page-handle/comcol-page-handle.component.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Component } from '@angular/core'; -import { ComcolPageHandleComponent as BaseComponent} from '../../../../../app/shared/comcol/comcol-page-handle/comcol-page-handle.component'; - - -/** - * This component builds a URL from the value of "handle" - */ - -@Component({ - selector: 'ds-comcol-page-handle', - // templateUrl: './comcol-page-handle.component.html', - templateUrl: '../../../../../app/shared/comcol/comcol-page-handle/comcol-page-handle.component.html', - // styleUrls: ['./comcol-page-handle.component.scss'], - styleUrls: ['../../../../../app/shared/comcol/comcol-page-handle/comcol-page-handle.component.scss'], -}) - - -export class ComcolPageHandleComponent extends BaseComponent {} diff --git a/src/themes/custom/app/shared/comcol-page-browse-by/comcol-page-browse-by.component.html b/src/themes/custom/app/shared/comcol/comcol-page-browse-by/comcol-page-browse-by.component.html similarity index 100% rename from src/themes/custom/app/shared/comcol-page-browse-by/comcol-page-browse-by.component.html rename to src/themes/custom/app/shared/comcol/comcol-page-browse-by/comcol-page-browse-by.component.html diff --git a/src/themes/custom/app/shared/comcol-page-browse-by/comcol-page-browse-by.component.scss b/src/themes/custom/app/shared/comcol/comcol-page-browse-by/comcol-page-browse-by.component.scss similarity index 100% rename from src/themes/custom/app/shared/comcol-page-browse-by/comcol-page-browse-by.component.scss rename to src/themes/custom/app/shared/comcol/comcol-page-browse-by/comcol-page-browse-by.component.scss diff --git a/src/themes/custom/app/shared/comcol/comcol-page-browse-by/comcol-page-browse-by.component.ts b/src/themes/custom/app/shared/comcol/comcol-page-browse-by/comcol-page-browse-by.component.ts new file mode 100644 index 0000000000..de9ad27693 --- /dev/null +++ b/src/themes/custom/app/shared/comcol/comcol-page-browse-by/comcol-page-browse-by.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; +import { ComcolPageBrowseByComponent as BaseComponent } from '../../../../../../app/shared/comcol/comcol-page-browse-by/comcol-page-browse-by.component'; + +@Component({ + selector: 'ds-comcol-page-browse-by', + // styleUrls: ['./comcol-page-browse-by.component.scss'], + styleUrls: ['../../../../../../app/shared/comcol/comcol-page-browse-by/comcol-page-browse-by.component.scss'], + // templateUrl: './comcol-page-browse-by.component.html' + templateUrl: '../../../../../../app/shared/comcol/comcol-page-browse-by/comcol-page-browse-by.component.html', +}) +export class ComcolPageBrowseByComponent extends BaseComponent { +} diff --git a/src/themes/custom/app/shared/comcol-page-handle/comcol-page-handle.component.html b/src/themes/custom/app/shared/comcol/comcol-page-handle/comcol-page-handle.component.html similarity index 100% rename from src/themes/custom/app/shared/comcol-page-handle/comcol-page-handle.component.html rename to src/themes/custom/app/shared/comcol/comcol-page-handle/comcol-page-handle.component.html diff --git a/src/themes/custom/app/shared/comcol-page-handle/comcol-page-handle.component.scss b/src/themes/custom/app/shared/comcol/comcol-page-handle/comcol-page-handle.component.scss similarity index 100% rename from src/themes/custom/app/shared/comcol-page-handle/comcol-page-handle.component.scss rename to src/themes/custom/app/shared/comcol/comcol-page-handle/comcol-page-handle.component.scss diff --git a/src/themes/custom/app/shared/comcol/comcol-page-handle/comcol-page-handle.component.ts b/src/themes/custom/app/shared/comcol/comcol-page-handle/comcol-page-handle.component.ts new file mode 100644 index 0000000000..f0f79fddd2 --- /dev/null +++ b/src/themes/custom/app/shared/comcol/comcol-page-handle/comcol-page-handle.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; +import { ComcolPageHandleComponent as BaseComponent} from '../../../../../../app/shared/comcol/comcol-page-handle/comcol-page-handle.component'; + +@Component({ + selector: 'ds-comcol-page-handle', + // templateUrl: './comcol-page-handle.component.html', + templateUrl: '../../../../../../app/shared/comcol/comcol-page-handle/comcol-page-handle.component.html', + // styleUrls: ['./comcol-page-handle.component.scss'], + styleUrls: ['../../../../../../app/shared/comcol/comcol-page-handle/comcol-page-handle.component.scss'], +}) +export class ComcolPageHandleComponent extends BaseComponent { +} diff --git a/src/themes/custom/lazy-theme.module.ts b/src/themes/custom/lazy-theme.module.ts index 4c4faa5193..42d24665ce 100644 --- a/src/themes/custom/lazy-theme.module.ts +++ b/src/themes/custom/lazy-theme.module.ts @@ -81,7 +81,7 @@ import { BreadcrumbsComponent } from './app/breadcrumbs/breadcrumbs.component'; import { FeedbackComponent } from './app/info/feedback/feedback.component'; import { CommunityListComponent } from './app/community-list-page/community-list/community-list.component'; -import { ComcolPageHandleComponent } from './app/shared/comcol-page-handle/comcol-page-handle.component'; +import { ComcolPageHandleComponent } from './app/shared/comcol/comcol-page-handle/comcol-page-handle.component'; import { AuthNavMenuComponent } from './app/shared/auth-nav-menu/auth-nav-menu.component'; import { ExpandableNavbarSectionComponent @@ -92,7 +92,7 @@ import { import { LoadingComponent } from './app/shared/loading/loading.component'; import { SearchResultsComponent } from './app/shared/search/search-results/search-results.component'; import { AdminSidebarComponent } from './app/admin/admin-sidebar/admin-sidebar.component'; -import { ComcolPageBrowseByComponent } from './app/shared/comcol-page-browse-by/comcol-page-browse-by.component'; +import { ComcolPageBrowseByComponent } from './app/shared/comcol/comcol-page-browse-by/comcol-page-browse-by.component'; import { SearchSettingsComponent } from './app/shared/search/search-settings/search-settings.component'; import { CommunityPageSubCommunityListComponent } from './app/community-page/sub-community-list/community-page-sub-community-list.component'; import { CommunityPageSubCollectionListComponent } from './app/community-page/sub-collection-list/community-page-sub-collection-list.component'; From 8bf7e4fb5aab029ec2405a8ed6a698499edff691 Mon Sep 17 00:00:00 2001 From: Alexandre Vryghem Date: Fri, 19 Jan 2024 08:53:50 +0100 Subject: [PATCH 05/15] Added ItemListPreviewComponent template to custom theme --- src/app/my-dspace-page/my-dspace-search.module.ts | 3 +++ .../item-list-preview.component.html | 0 .../item-list-preview.component.scss | 0 .../item-list-preview.component.ts | 14 ++++++++++++++ src/themes/custom/lazy-theme.module.ts | 2 ++ 5 files changed, 19 insertions(+) create mode 100644 src/themes/custom/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.html create mode 100644 src/themes/custom/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.scss create mode 100644 src/themes/custom/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.ts diff --git a/src/app/my-dspace-page/my-dspace-search.module.ts b/src/app/my-dspace-page/my-dspace-search.module.ts index 71d1343a30..ec755c6e91 100644 --- a/src/app/my-dspace-page/my-dspace-search.module.ts +++ b/src/app/my-dspace-page/my-dspace-search.module.ts @@ -62,6 +62,9 @@ const DECLARATIONS = [ ResearchEntitiesModule.withEntryComponents(), JournalEntitiesModule.withEntryComponents(), ], + exports: [ + ...DECLARATIONS, + ], declarations: [ ...DECLARATIONS, ] diff --git a/src/themes/custom/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.html b/src/themes/custom/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/themes/custom/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.scss b/src/themes/custom/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.scss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/themes/custom/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.ts b/src/themes/custom/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.ts new file mode 100644 index 0000000000..3d5003df60 --- /dev/null +++ b/src/themes/custom/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.ts @@ -0,0 +1,14 @@ +import { Component } from '@angular/core'; +import { fadeInOut } from '../../../../../../../app/shared/animations/fade'; +import { ItemListPreviewComponent as BaseComponent } from '../../../../../../../app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component'; + +@Component({ + selector: 'ds-item-list-preview', + // styleUrls: ['./item-list-preview.component.scss'], + styleUrls: ['../../../../../../../app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.scss'], + // templateUrl: './item-list-preview.component.html', + templateUrl: '../../../../../../../app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.html', + animations: [fadeInOut], +}) +export class ItemListPreviewComponent extends BaseComponent { +} diff --git a/src/themes/custom/lazy-theme.module.ts b/src/themes/custom/lazy-theme.module.ts index 42d24665ce..a694d8349a 100644 --- a/src/themes/custom/lazy-theme.module.ts +++ b/src/themes/custom/lazy-theme.module.ts @@ -157,6 +157,7 @@ import { EditBitstreamPageComponent } from './app/bitstream-page/edit-bitstream- import { FormModule } from '../../app/shared/form/form.module'; import { RequestCopyModule } from 'src/app/request-copy/request-copy.module'; import { SearchComponent } from './app/shared/search/search.component'; +import { ItemListPreviewComponent } from './app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component'; const DECLARATIONS = [ FileSectionComponent, @@ -241,6 +242,7 @@ const DECLARATIONS = [ ItemStatusComponent, EditBitstreamPageComponent, SearchComponent, + ItemListPreviewComponent, ]; @NgModule({ From 7bf098332899368b8152d31aafddd91cd1cd0c20 Mon Sep 17 00:00:00 2001 From: Alexandre Vryghem Date: Fri, 19 Jan 2024 09:13:35 +0100 Subject: [PATCH 06/15] Fixed component still using the old ds-thumbnail --- ...-search-result-list-element.component.html | 8 ++++---- ...arch-result-list-element.component.spec.ts | 4 ++-- ...-search-result-list-element.component.html | 8 ++++---- ...arch-result-list-element.component.spec.ts | 4 ++-- ...-search-result-list-element.component.html | 8 ++++---- ...arch-result-list-element.component.spec.ts | 4 ++-- ...-search-result-list-element.component.html | 20 +++++++++---------- ...arch-result-list-element.component.spec.ts | 4 ++-- ...-search-result-list-element.component.html | 20 +++++++++---------- ...arch-result-list-element.component.spec.ts | 4 ++-- ...-search-result-list-element.component.html | 20 +++++++++---------- ...arch-result-list-element.component.spec.ts | 4 ++-- ...ult-list-submission-element.component.html | 20 +++++++++---------- ...-list-submission-element.component.spec.ts | 8 ++++---- .../media-viewer/media-viewer.component.html | 6 +++--- .../item-list-preview.component.html | 4 ++-- .../item-list-preview.component.spec.ts | 8 ++++---- ...-search-result-list-element.component.html | 8 ++++---- ...arch-result-list-element.component.spec.ts | 8 ++++---- 19 files changed, 85 insertions(+), 85 deletions(-) diff --git a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-issue/journal-issue-search-result-list-element.component.html b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-issue/journal-issue-search-result-list-element.component.html index e3293be3a0..8f208c4a15 100644 --- a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-issue/journal-issue-search-result-list-element.component.html +++ b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-issue/journal-issue-search-result-list-element.component.html @@ -3,12 +3,12 @@ - - + + - - + +
diff --git a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-issue/journal-issue-search-result-list-element.component.spec.ts b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-issue/journal-issue-search-result-list-element.component.spec.ts index 178ed86c40..243e3b898b 100644 --- a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-issue/journal-issue-search-result-list-element.component.spec.ts +++ b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-issue/journal-issue-search-result-list-element.component.spec.ts @@ -102,7 +102,7 @@ describe('JournalIssueSearchResultListElementComponent', () => { }); it('should add thumbnail element', () => { - const thumbnailElement = fixture.debugElement.query(By.css('ds-thumbnail')); + const thumbnailElement = fixture.debugElement.query(By.css('ds-themed-thumbnail')); expect(thumbnailElement).toBeTruthy(); }); }); @@ -187,7 +187,7 @@ describe('JournalIssueSearchResultListElementComponent', () => { }); it('should not add thumbnail element', () => { - const thumbnailElement = fixture.debugElement.query(By.css('ds-thumbnail')); + const thumbnailElement = fixture.debugElement.query(By.css('ds-themed-thumbnail')); expect(thumbnailElement).toBeFalsy(); }); }); diff --git a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-volume/journal-volume-search-result-list-element.component.html b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-volume/journal-volume-search-result-list-element.component.html index 8d7fbda4af..dbee45223c 100644 --- a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-volume/journal-volume-search-result-list-element.component.html +++ b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-volume/journal-volume-search-result-list-element.component.html @@ -3,12 +3,12 @@ - - + + - - + +
diff --git a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-volume/journal-volume-search-result-list-element.component.spec.ts b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-volume/journal-volume-search-result-list-element.component.spec.ts index 71fa83a3b1..1f3882d642 100644 --- a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-volume/journal-volume-search-result-list-element.component.spec.ts +++ b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-volume/journal-volume-search-result-list-element.component.spec.ts @@ -101,7 +101,7 @@ describe('JournalVolumeSearchResultListElementComponent', () => { }); it('should add thumbnail element', () => { - const thumbnailElement = fixture.debugElement.query(By.css('ds-thumbnail')); + const thumbnailElement = fixture.debugElement.query(By.css('ds-themed-thumbnail')); expect(thumbnailElement).toBeTruthy(); }); }); @@ -184,7 +184,7 @@ describe('JournalVolumeSearchResultListElementComponent', () => { }); it('should not add thumbnail element', () => { - const thumbnailElement = fixture.debugElement.query(By.css('ds-thumbnail')); + const thumbnailElement = fixture.debugElement.query(By.css('ds-themed-thumbnail')); expect(thumbnailElement).toBeFalsy(); }); }); diff --git a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.html b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.html index 6d7f9293ec..77e137597e 100644 --- a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.html +++ b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.html @@ -2,12 +2,12 @@
- - + + - - + +
diff --git a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.spec.ts b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.spec.ts index 07970d7128..4a1c46d252 100644 --- a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.spec.ts +++ b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.spec.ts @@ -97,7 +97,7 @@ describe('JournalSearchResultListElementComponent', () => { }); it('should add thumbnail element', () => { - const thumbnailElement = fixture.debugElement.query(By.css('ds-thumbnail')); + const thumbnailElement = fixture.debugElement.query(By.css('ds-themed-thumbnail')); expect(thumbnailElement).toBeTruthy(); }); }); @@ -157,7 +157,7 @@ describe('JournalSearchResultListElementComponent', () => { }); it('should not add thumbnail element', () => { - const thumbnailElement = fixture.debugElement.query(By.css('ds-thumbnail')); + const thumbnailElement = fixture.debugElement.query(By.css('ds-themed-thumbnail')); expect(thumbnailElement).toBeFalsy(); }); }); diff --git a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.html b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.html index 07c7c5bb89..0bb48432ee 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.html +++ b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.html @@ -3,18 +3,18 @@ - - + + - - + +
diff --git a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.spec.ts b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.spec.ts index 9609a9582a..88109b26d3 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.spec.ts +++ b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.spec.ts @@ -104,7 +104,7 @@ describe('OrgUnitSearchResultListElementComponent', () => { }); it('should add thumbnail element', () => { - const thumbnailElement = fixture.debugElement.query(By.css('ds-thumbnail')); + const thumbnailElement = fixture.debugElement.query(By.css('ds-themed-thumbnail')); expect(thumbnailElement).toBeTruthy(); }); }); @@ -171,7 +171,7 @@ describe('OrgUnitSearchResultListElementComponent', () => { }); it('should not add thumbnail element', () => { - const thumbnailElement = fixture.debugElement.query(By.css('ds-thumbnail')); + const thumbnailElement = fixture.debugElement.query(By.css('ds-themed-thumbnail')); expect(thumbnailElement).toBeNull(); }); }); diff --git a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.html b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.html index f3f892bc98..8eea99f606 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.html +++ b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.html @@ -3,18 +3,18 @@ - - + + - - + +
diff --git a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.spec.ts b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.spec.ts index 31018520f6..3e13aa665c 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.spec.ts +++ b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.spec.ts @@ -104,7 +104,7 @@ describe('PersonSearchResultListElementComponent', () => { }); it('should add thumbnail element', () => { - const thumbnailElement = fixture.debugElement.query(By.css('ds-thumbnail')); + const thumbnailElement = fixture.debugElement.query(By.css('ds-themed-thumbnail')); expect(thumbnailElement).toBeTruthy(); }); }); @@ -171,7 +171,7 @@ describe('PersonSearchResultListElementComponent', () => { }); it('should not add thumbnail element', () => { - const thumbnailElement = fixture.debugElement.query(By.css('ds-thumbnail')); + const thumbnailElement = fixture.debugElement.query(By.css('ds-themed-thumbnail')); expect(thumbnailElement).toBeFalsy(); }); }); diff --git a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.html b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.html index 93289aa525..77ae47f69d 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.html +++ b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.html @@ -3,18 +3,18 @@ - - + + - - + +
diff --git a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.spec.ts b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.spec.ts index 0cb3e63e87..3186aa6067 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.spec.ts +++ b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.spec.ts @@ -96,7 +96,7 @@ describe('ProjectSearchResultListElementComponent', () => { }); it('should add thumbnail element', () => { - const thumbnailElement = fixture.debugElement.query(By.css('ds-thumbnail')); + const thumbnailElement = fixture.debugElement.query(By.css('ds-themed-thumbnail')); expect(thumbnailElement).toBeTruthy(); }); }); @@ -157,7 +157,7 @@ describe('ProjectSearchResultListElementComponent', () => { }); it('should not add thumbnail element', () => { - const thumbnailElement = fixture.debugElement.query(By.css('ds-thumbnail')); + const thumbnailElement = fixture.debugElement.query(By.css('ds-themed-thumbnail')); expect(thumbnailElement).toBeFalsy(); }); }); diff --git a/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-search-result-list-submission-element.component.html b/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-search-result-list-submission-element.component.html index dd2589c726..32a85062bb 100644 --- a/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-search-result-list-submission-element.component.html +++ b/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-search-result-list-submission-element.component.html @@ -2,18 +2,18 @@
- - + + - - + +
diff --git a/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-search-result-list-submission-element.component.spec.ts b/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-search-result-list-submission-element.component.spec.ts index 9e4d347150..c596f49f1e 100644 --- a/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-search-result-list-submission-element.component.spec.ts +++ b/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-search-result-list-submission-element.component.spec.ts @@ -167,8 +167,8 @@ describe('PersonSearchResultListElementSubmissionComponent', () => { fixture.detectChanges(); }); - it('should add the ds-thumbnail element', () => { - const thumbnail = fixture.debugElement.query(By.css('ds-thumbnail')); + it('should add the thumbnail element', () => { + const thumbnail = fixture.debugElement.query(By.css('ds-themed-thumbnail')); expect(thumbnail).toBeTruthy(); }); }); @@ -223,8 +223,8 @@ describe('PersonSearchResultListElementSubmissionComponent', () => { fixture.detectChanges(); }); - it('should not add the ds-thumbnail element', () => { - const thumbnail = fixture.debugElement.query(By.css('ds-thumbnail')); + it('should not add the thumbnail element', () => { + const thumbnail = fixture.debugElement.query(By.css('ds-themed-thumbnail')); expect(thumbnail).toBeNull(); }); }); diff --git a/src/app/item-page/media-viewer/media-viewer.component.html b/src/app/item-page/media-viewer/media-viewer.component.html index c8a02e039c..cbc78605ca 100644 --- a/src/app/item-page/media-viewer/media-viewer.component.html +++ b/src/app/item-page/media-viewer/media-viewer.component.html @@ -20,8 +20,8 @@ [image]="(thumbnailsRD$ | async)?.payload?.page[0]?._links.content.href || thumbnailPlaceholder" [preview]="false" > - - + + diff --git a/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.html b/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.html index c8ef730faf..ac599adfba 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.html +++ b/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.html @@ -1,7 +1,7 @@
- - + +
diff --git a/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.spec.ts b/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.spec.ts index aa618add35..926d74c27a 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.spec.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.spec.ts @@ -118,8 +118,8 @@ describe('ItemListPreviewComponent', () => { component.item = mockItemWithAuthorAndDate; fixture.detectChanges(); }); - it('should add the ds-thumbnail element', () => { - const thumbnail = fixture.debugElement.query(By.css('ds-thumbnail')); + it('should add the thumbnail element', () => { + const thumbnail = fixture.debugElement.query(By.css('ds-themed-thumbnail')); expect(thumbnail).toBeTruthy(); }); }); @@ -223,8 +223,8 @@ describe('ItemListPreviewComponent', () => { component.item = mockItemWithAuthorAndDate; fixture.detectChanges(); }); - it('should add the ds-thumbnail element', () => { - const thumbnail = fixture.debugElement.query(By.css('ds-thumbnail')); + it('should add the thumbnail element', () => { + const thumbnail = fixture.debugElement.query(By.css('ds-themed-thumbnail')); expect(thumbnail).toBeFalsy(); }); }); diff --git a/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component.html b/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component.html index f7a687048a..db10cbee52 100644 --- a/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component.html +++ b/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component.html @@ -2,12 +2,12 @@
- - + + - - + +
diff --git a/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component.spec.ts b/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component.spec.ts index 7665b7d64e..224e98c981 100644 --- a/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component.spec.ts +++ b/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component.spec.ts @@ -215,8 +215,8 @@ describe('ItemSearchResultListElementComponent', () => { expect(publicationListElementComponent.showThumbnails).toBeTrue(); }); - it('should add ds-thumbnail element', () => { - const thumbnailElement = fixture.debugElement.query(By.css('ds-thumbnail')); + it('should add thumbnail element', () => { + const thumbnailElement = fixture.debugElement.query(By.css('ds-themed-thumbnail')); expect(thumbnailElement).toBeTruthy(); }); }); @@ -395,8 +395,8 @@ describe('ItemSearchResultListElementComponent', () => { fixture.detectChanges(); }); - it('should not add ds-thumbnail element', () => { - const thumbnailElement = fixture.debugElement.query(By.css('ds-thumbnail')); + it('should not add thumbnail element', () => { + const thumbnailElement = fixture.debugElement.query(By.css('ds-themed-thumbnail')); expect(thumbnailElement).toBeFalsy(); }); }); From 7abf37cbeabef9379290a2097f7315cd615751cb Mon Sep 17 00:00:00 2001 From: Alexandre Vryghem Date: Sat, 24 Feb 2024 14:20:35 +0100 Subject: [PATCH 07/15] Fixed some components not destroying their ViewContainerRef --- .../item-edit-bitstream-bundle.component.ts | 9 +++++++-- .../item-edit-bitstream-drag-handle.component.ts | 8 ++++++-- .../item-edit-bitstream/item-edit-bitstream.component.ts | 8 ++++++-- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/app/item-page/edit-item-page/item-bitstreams/item-edit-bitstream-bundle/item-edit-bitstream-bundle.component.ts b/src/app/item-page/edit-item-page/item-bitstreams/item-edit-bitstream-bundle/item-edit-bitstream-bundle.component.ts index eb05d5e74f..6a4f1968ae 100644 --- a/src/app/item-page/edit-item-page/item-bitstreams/item-edit-bitstream-bundle/item-edit-bitstream-bundle.component.ts +++ b/src/app/item-page/edit-item-page/item-bitstreams/item-edit-bitstream-bundle/item-edit-bitstream-bundle.component.ts @@ -1,4 +1,4 @@ -import { Component, EventEmitter, Input, OnInit, Output, ViewChild, ViewContainerRef } from '@angular/core'; +import { Component, EventEmitter, Input, OnInit, Output, ViewChild, ViewContainerRef, OnDestroy } from '@angular/core'; import { Bundle } from '../../../../core/shared/bundle.model'; import { Item } from '../../../../core/shared/item.model'; import { ResponsiveColumnSizes } from '../../../../shared/responsive-table-sizes/responsive-column-sizes'; @@ -15,7 +15,7 @@ import { getItemPageRoute } from '../../../item-page-routing-paths'; * Creates an embedded view of the contents. This is to ensure the table structure won't break. * (which means it'll be added to the parents html without a wrapping ds-item-edit-bitstream-bundle element) */ -export class ItemEditBitstreamBundleComponent implements OnInit { +export class ItemEditBitstreamBundleComponent implements OnInit, OnDestroy { /** * The view on the bundle information and bitstreams @@ -63,4 +63,9 @@ export class ItemEditBitstreamBundleComponent implements OnInit { this.viewContainerRef.createEmbeddedView(this.bundleView); this.itemPageRoute = getItemPageRoute(this.item); } + + ngOnDestroy(): void { + this.viewContainerRef.clear(); + } + } diff --git a/src/app/item-page/edit-item-page/item-bitstreams/item-edit-bitstream-drag-handle/item-edit-bitstream-drag-handle.component.ts b/src/app/item-page/edit-item-page/item-bitstreams/item-edit-bitstream-drag-handle/item-edit-bitstream-drag-handle.component.ts index e5cb9ba403..d9c9a8f34a 100644 --- a/src/app/item-page/edit-item-page/item-bitstreams/item-edit-bitstream-drag-handle/item-edit-bitstream-drag-handle.component.ts +++ b/src/app/item-page/edit-item-page/item-bitstreams/item-edit-bitstream-drag-handle/item-edit-bitstream-drag-handle.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, ViewChild, ViewContainerRef } from '@angular/core'; +import { Component, OnInit, ViewChild, ViewContainerRef, OnDestroy } from '@angular/core'; @Component({ selector: 'ds-item-edit-bitstream-drag-handle', @@ -10,7 +10,7 @@ import { Component, OnInit, ViewChild, ViewContainerRef } from '@angular/core'; * Creates an embedded view of the contents * (which means it'll be added to the parents html without a wrapping ds-item-edit-bitstream-drag-handle element) */ -export class ItemEditBitstreamDragHandleComponent implements OnInit { +export class ItemEditBitstreamDragHandleComponent implements OnInit, OnDestroy { /** * The view on the drag-handle */ @@ -23,4 +23,8 @@ export class ItemEditBitstreamDragHandleComponent implements OnInit { this.viewContainerRef.createEmbeddedView(this.handleView); } + ngOnDestroy(): void { + this.viewContainerRef.clear(); + } + } diff --git a/src/app/item-page/edit-item-page/item-bitstreams/item-edit-bitstream/item-edit-bitstream.component.ts b/src/app/item-page/edit-item-page/item-bitstreams/item-edit-bitstream/item-edit-bitstream.component.ts index d7fcc0cb76..1d1644b89a 100644 --- a/src/app/item-page/edit-item-page/item-bitstreams/item-edit-bitstream/item-edit-bitstream.component.ts +++ b/src/app/item-page/edit-item-page/item-bitstreams/item-edit-bitstream/item-edit-bitstream.component.ts @@ -1,4 +1,4 @@ -import { Component, Input, OnChanges, OnInit, SimpleChanges, ViewChild, ViewContainerRef } from '@angular/core'; +import { Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewChild, ViewContainerRef } from '@angular/core'; import { Bitstream } from '../../../../core/shared/bitstream.model'; import { cloneDeep } from 'lodash'; import { ObjectUpdatesService } from '../../../../core/data/object-updates/object-updates.service'; @@ -21,7 +21,7 @@ import { getBitstreamDownloadRoute } from '../../../../app-routing-paths'; * Creates an embedded view of the contents * (which means it'll be added to the parents html without a wrapping ds-item-edit-bitstream element) */ -export class ItemEditBitstreamComponent implements OnChanges, OnInit { +export class ItemEditBitstreamComponent implements OnChanges, OnDestroy, OnInit { /** * The view on the bitstream @@ -72,6 +72,10 @@ export class ItemEditBitstreamComponent implements OnChanges, OnInit { this.viewContainerRef.createEmbeddedView(this.bitstreamView); } + ngOnDestroy(): void { + this.viewContainerRef.clear(); + } + /** * Update the current bitstream and its format on changes * @param changes From 676400625306e96df290038c7fbf694a97716f58 Mon Sep 17 00:00:00 2001 From: Nona Luypaert Date: Mon, 11 Mar 2024 11:42:51 +0100 Subject: [PATCH 08/15] 112807: Theme ItemDetailPreviewFieldComponent --- .../my-dspace-page/my-dspace-search.module.ts | 2 + ...med-item-detail-preview-field.component.ts | 49 +++++++++++++++++++ .../item-detail-preview.component.html | 16 +++--- .../item-detail-preview-field.component.html | 0 .../item-detail-preview-field.component.ts | 14 ++++++ src/themes/custom/lazy-theme.module.ts | 4 ++ 6 files changed, 77 insertions(+), 8 deletions(-) create mode 100644 src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview-field/themed-item-detail-preview-field.component.ts create mode 100644 src/themes/custom/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview-field/item-detail-preview-field.component.html create mode 100644 src/themes/custom/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview-field/item-detail-preview-field.component.ts diff --git a/src/app/my-dspace-page/my-dspace-search.module.ts b/src/app/my-dspace-page/my-dspace-search.module.ts index 71d1343a30..b9f92518a3 100644 --- a/src/app/my-dspace-page/my-dspace-search.module.ts +++ b/src/app/my-dspace-page/my-dspace-search.module.ts @@ -26,6 +26,7 @@ import { ThemedItemListPreviewComponent } from '../shared/object-list/my-dspace- import { JournalEntitiesModule } from '../entity-groups/journal-entities/journal-entities.module'; import { MyDSpaceActionsModule } from '../shared/mydspace-actions/mydspace-actions.module'; import { ClaimedDeclinedTaskSearchResultListElementComponent } from '../shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-declined-task-search-result/claimed-declined-task-search-result-list-element.component'; +import { ThemedItemDetailPreviewFieldComponent } from '../shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview-field/themed-item-detail-preview-field.component'; const ENTRY_COMPONENTS = [ WorkspaceItemSearchResultListElementComponent, @@ -49,6 +50,7 @@ const DECLARATIONS = [ ItemCollectionComponent, ItemDetailPreviewComponent, ItemDetailPreviewFieldComponent, + ThemedItemDetailPreviewFieldComponent, ItemListPreviewComponent, ThemedItemListPreviewComponent, ]; diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview-field/themed-item-detail-preview-field.component.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview-field/themed-item-detail-preview-field.component.ts new file mode 100644 index 0000000000..b2ebe94b30 --- /dev/null +++ b/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview-field/themed-item-detail-preview-field.component.ts @@ -0,0 +1,49 @@ +import { Component, Input } from '@angular/core'; +import { Item } from '../../../../../core/shared/item.model'; +import { SearchResult } from '../../../../search/models/search-result.model'; +import { ThemedComponent } from '../../../../theme-support/themed.component'; +import { ItemDetailPreviewFieldComponent } from './item-detail-preview-field.component'; + +/** + * Themed wrapper for ItemDetailPreviewFieldComponent + */ +@Component({ + selector: 'ds-themed-item-detail-preview-field', + styleUrls: [], + templateUrl: '../../../../theme-support/themed.component.html' +}) +export class ThemedItemDetailPreviewFieldComponent extends ThemedComponent { + + protected inAndOutputNames: (keyof ItemDetailPreviewFieldComponent & keyof this)[] = [ + 'item', + 'object', + 'label', + 'metadata', + 'placeholder', + 'separator', + ]; + + @Input() item: Item; + + @Input() object: SearchResult; + + @Input() label: string; + + @Input() metadata: string | string[]; + + @Input() placeholder: string; + + @Input() separator: string; + + protected getComponentName(): string { + return 'ItemDetailPreviewFieldComponent'; + } + + protected importThemedComponent(themeName: string): Promise { + return import(`../../../../../../themes/${themeName}/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview-field/item-detail-preview-field.component`); + } + + protected importUnthemedComponent(): Promise { + return import('./item-detail-preview-field.component'); + } +} diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview.component.html b/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview.component.html index bd00c9411f..39b46f2ec3 100644 --- a/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview.component.html +++ b/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview.component.html @@ -22,32 +22,32 @@ - - + + [placeholder]="('mydspace.results.no-authors' | translate)">
- - + + [placeholder]="('mydspace.results.no-uri' | translate)">
diff --git a/src/themes/custom/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview-field/item-detail-preview-field.component.html b/src/themes/custom/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview-field/item-detail-preview-field.component.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/themes/custom/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview-field/item-detail-preview-field.component.ts b/src/themes/custom/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview-field/item-detail-preview-field.component.ts new file mode 100644 index 0000000000..adbe8f3e06 --- /dev/null +++ b/src/themes/custom/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview-field/item-detail-preview-field.component.ts @@ -0,0 +1,14 @@ +import { Component } from '@angular/core'; +import { ItemDetailPreviewFieldComponent as BaseComponent } from '../../../../../../../../app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview-field/item-detail-preview-field.component'; + +/** + * This component show values for the given item metadata + */ +@Component({ + selector: 'ds-item-detail-preview-field', + // templateUrl: './item-detail-preview-field.component.html' + templateUrl: '../../../../../../../../app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview-field/item-detail-preview-field.component.html' +}) +export class ItemDetailPreviewFieldComponent extends BaseComponent { + +} diff --git a/src/themes/custom/lazy-theme.module.ts b/src/themes/custom/lazy-theme.module.ts index edb3f5478c..2c7b0f94c9 100644 --- a/src/themes/custom/lazy-theme.module.ts +++ b/src/themes/custom/lazy-theme.module.ts @@ -156,6 +156,9 @@ import { ItemStatusComponent } from './app/item-page/edit-item-page/item-status/ import { EditBitstreamPageComponent } from './app/bitstream-page/edit-bitstream-page/edit-bitstream-page.component'; import { FormModule } from '../../app/shared/form/form.module'; import { RequestCopyModule } from 'src/app/request-copy/request-copy.module'; +import { + ItemDetailPreviewFieldComponent +} from './app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview-field/item-detail-preview-field.component'; const DECLARATIONS = [ FileSectionComponent, @@ -239,6 +242,7 @@ const DECLARATIONS = [ SubmissionSectionUploadFileComponent, ItemStatusComponent, EditBitstreamPageComponent, + ItemDetailPreviewFieldComponent, ]; @NgModule({ From f5f00ca24a36cfba87c8a66ee152be2f9ecefb48 Mon Sep 17 00:00:00 2001 From: Alexandre Vryghem Date: Sun, 14 Apr 2024 13:52:33 +0200 Subject: [PATCH 09/15] 114077: Made ProfilePageMetadataFormComponent themeable --- ...ed-profile-page-metadata-form.component.ts | 33 +++++++++++++++++++ .../profile-page/profile-page.component.html | 2 +- src/app/profile-page/profile-page.module.ts | 3 ++ .../profile-page-metadata-form.component.html | 0 .../profile-page-metadata-form.component.ts | 10 ++++++ src/themes/custom/lazy-theme.module.ts | 2 ++ 6 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 src/app/profile-page/profile-page-metadata-form/themed-profile-page-metadata-form.component.ts create mode 100644 src/themes/custom/app/profile-page/profile-page-metadata-form/profile-page-metadata-form.component.html create mode 100644 src/themes/custom/app/profile-page/profile-page-metadata-form/profile-page-metadata-form.component.ts diff --git a/src/app/profile-page/profile-page-metadata-form/themed-profile-page-metadata-form.component.ts b/src/app/profile-page/profile-page-metadata-form/themed-profile-page-metadata-form.component.ts new file mode 100644 index 0000000000..7af664dc5c --- /dev/null +++ b/src/app/profile-page/profile-page-metadata-form/themed-profile-page-metadata-form.component.ts @@ -0,0 +1,33 @@ +import { ThemedComponent } from '../../shared/theme-support/themed.component'; +import { Component, Input } from '@angular/core'; +import { ProfilePageMetadataFormComponent } from './profile-page-metadata-form.component'; +import { EPerson } from '../../core/eperson/models/eperson.model'; + +/** + * Themed wrapper for {@link ProfilePageMetadataFormComponent} + */ +@Component({ + selector: 'ds-themed-profile-page-metadata-form', + templateUrl: '../../shared/theme-support/themed.component.html', +}) +export class ThemedProfilePageMetadataFormComponent extends ThemedComponent { + + @Input() user: EPerson; + + protected inAndOutputNames: (keyof ProfilePageMetadataFormComponent & keyof this)[] = [ + 'user', + ]; + + protected getComponentName(): string { + return 'ProfilePageMetadataFormComponent'; + } + + protected importThemedComponent(themeName: string): Promise { + return import(`../../../themes/${themeName}/app/profile-page/profile-page-metadata-form/profile-page-metadata-form.component`); + } + + protected importUnthemedComponent(): Promise { + return import('./profile-page-metadata-form.component'); + } + +} diff --git a/src/app/profile-page/profile-page.component.html b/src/app/profile-page/profile-page.component.html index 44783da84e..34cc49417d 100644 --- a/src/app/profile-page/profile-page.component.html +++ b/src/app/profile-page/profile-page.component.html @@ -14,7 +14,7 @@
{{'profile.card.identify' | translate}}
- +
diff --git a/src/app/profile-page/profile-page.module.ts b/src/app/profile-page/profile-page.module.ts index 0e2902de33..34afd4c51b 100644 --- a/src/app/profile-page/profile-page.module.ts +++ b/src/app/profile-page/profile-page.module.ts @@ -12,6 +12,7 @@ import { ThemedProfilePageComponent } from './themed-profile-page.component'; import { FormModule } from '../shared/form/form.module'; import { UiSwitchModule } from 'ngx-ui-switch'; import { ProfileClaimItemModalComponent } from './profile-claim-item-modal/profile-claim-item-modal.component'; +import { ThemedProfilePageMetadataFormComponent } from './profile-page-metadata-form/themed-profile-page-metadata-form.component'; @NgModule({ @@ -26,6 +27,7 @@ import { ProfileClaimItemModalComponent } from './profile-claim-item-modal/profi ProfilePageComponent, ThemedProfilePageComponent, ProfilePageMetadataFormComponent, + ThemedProfilePageMetadataFormComponent, ProfilePageSecurityFormComponent, ProfilePageResearcherFormComponent ], @@ -34,6 +36,7 @@ import { ProfileClaimItemModalComponent } from './profile-claim-item-modal/profi ThemedProfilePageComponent, ProfileClaimItemModalComponent, ProfilePageMetadataFormComponent, + ThemedProfilePageMetadataFormComponent, ProfilePageSecurityFormComponent, ProfilePageResearcherFormComponent ] diff --git a/src/themes/custom/app/profile-page/profile-page-metadata-form/profile-page-metadata-form.component.html b/src/themes/custom/app/profile-page/profile-page-metadata-form/profile-page-metadata-form.component.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/themes/custom/app/profile-page/profile-page-metadata-form/profile-page-metadata-form.component.ts b/src/themes/custom/app/profile-page/profile-page-metadata-form/profile-page-metadata-form.component.ts new file mode 100644 index 0000000000..0901a8f947 --- /dev/null +++ b/src/themes/custom/app/profile-page/profile-page-metadata-form/profile-page-metadata-form.component.ts @@ -0,0 +1,10 @@ +import { Component } from '@angular/core'; +import { ProfilePageMetadataFormComponent as BaseComponent } from '../../../../../app/profile-page/profile-page-metadata-form/profile-page-metadata-form.component'; + +@Component({ + selector: 'ds-profile-page-metadata-form', + templateUrl: '../../../../../app/profile-page/profile-page-metadata-form/profile-page-metadata-form.component.html' + // templateUrl: './profile-page-metadata-form.component.html' +}) +export class ProfilePageMetadataFormComponent extends BaseComponent { +} diff --git a/src/themes/custom/lazy-theme.module.ts b/src/themes/custom/lazy-theme.module.ts index edb3f5478c..53f62e8f00 100644 --- a/src/themes/custom/lazy-theme.module.ts +++ b/src/themes/custom/lazy-theme.module.ts @@ -156,6 +156,7 @@ import { ItemStatusComponent } from './app/item-page/edit-item-page/item-status/ import { EditBitstreamPageComponent } from './app/bitstream-page/edit-bitstream-page/edit-bitstream-page.component'; import { FormModule } from '../../app/shared/form/form.module'; import { RequestCopyModule } from 'src/app/request-copy/request-copy.module'; +import { ProfilePageMetadataFormComponent } from './app/profile-page/profile-page-metadata-form/profile-page-metadata-form.component'; const DECLARATIONS = [ FileSectionComponent, @@ -239,6 +240,7 @@ const DECLARATIONS = [ SubmissionSectionUploadFileComponent, ItemStatusComponent, EditBitstreamPageComponent, + ProfilePageMetadataFormComponent, ]; @NgModule({ From 70000353030bee598305300fd1639659cc258036 Mon Sep 17 00:00:00 2001 From: Alexandre Vryghem Date: Mon, 22 Apr 2024 22:41:02 +0200 Subject: [PATCH 10/15] Fixed duplicate selectors throwing warnings --- .../export-batch-selector/export-batch-selector.component.ts | 2 +- .../community-sidebar-search-list-element.component.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/shared/dso-selector/modal-wrappers/export-batch-selector/export-batch-selector.component.ts b/src/app/shared/dso-selector/modal-wrappers/export-batch-selector/export-batch-selector.component.ts index 0645e09029..4486b4463d 100644 --- a/src/app/shared/dso-selector/modal-wrappers/export-batch-selector/export-batch-selector.component.ts +++ b/src/app/shared/dso-selector/modal-wrappers/export-batch-selector/export-batch-selector.component.ts @@ -26,7 +26,7 @@ import { FeatureID } from '../../../../core/data/feature-authorization/feature-i * Used to choose a dso from to export metadata of */ @Component({ - selector: 'ds-export-metadata-selector', + selector: 'ds-export-batch-selector', templateUrl: '../dso-selector-modal-wrapper.component.html', }) export class ExportBatchSelectorComponent extends DSOSelectorModalWrapperComponent implements OnInit { diff --git a/src/app/shared/object-list/sidebar-search-list-element/community/community-sidebar-search-list-element.component.ts b/src/app/shared/object-list/sidebar-search-list-element/community/community-sidebar-search-list-element.component.ts index 14c8ec09cd..fb0f69f9a9 100644 --- a/src/app/shared/object-list/sidebar-search-list-element/community/community-sidebar-search-list-element.component.ts +++ b/src/app/shared/object-list/sidebar-search-list-element/community/community-sidebar-search-list-element.component.ts @@ -9,7 +9,7 @@ import { Community } from '../../../../core/shared/community.model'; @listableObjectComponent(CommunitySearchResult, ViewMode.ListElement, Context.SideBarSearchModal) @listableObjectComponent(CommunitySearchResult, ViewMode.ListElement, Context.SideBarSearchModalCurrent) @Component({ - selector: 'ds-collection-sidebar-search-list-element', + selector: 'ds-community-sidebar-search-list-element', templateUrl: '../sidebar-search-list-element.component.html' }) /** From 8b29a7189bb2eb42ca5f101d9343ec87aa949041 Mon Sep 17 00:00:00 2001 From: Alexandre Vryghem Date: Tue, 23 Apr 2024 11:42:50 +0200 Subject: [PATCH 11/15] Themed SubmissionUploadFilesComponent --- .../form/submission-form.component.html | 4 +- .../submission-upload-files.component.spec.ts | 4 +- ...hemed-submission-upload-files.component.ts | 38 +++++++++++++++++++ src/app/submission/submission.module.ts | 2 + .../submission-upload-files.component.html | 0 .../submission-upload-files.component.ts | 10 +++++ src/themes/custom/lazy-theme.module.ts | 2 + 7 files changed, 56 insertions(+), 4 deletions(-) create mode 100644 src/app/submission/form/submission-upload-files/themed-submission-upload-files.component.ts create mode 100644 src/themes/custom/app/submission/form/submission-upload-files/submission-upload-files.component.html create mode 100644 src/themes/custom/app/submission/form/submission-upload-files/submission-upload-files.component.ts diff --git a/src/app/submission/form/submission-form.component.html b/src/app/submission/form/submission-form.component.html index 4a916cfe23..de74819cc7 100644 --- a/src/app/submission/form/submission-form.component.html +++ b/src/app/submission/form/submission-form.component.html @@ -1,9 +1,9 @@
- + [uploadFilesOptions]="uploadFilesOptions">
diff --git a/src/app/submission/form/submission-upload-files/submission-upload-files.component.spec.ts b/src/app/submission/form/submission-upload-files/submission-upload-files.component.spec.ts index fa7ecebbff..f9c273ec07 100644 --- a/src/app/submission/form/submission-upload-files/submission-upload-files.component.spec.ts +++ b/src/app/submission/form/submission-upload-files/submission-upload-files.component.spec.ts @@ -81,9 +81,9 @@ describe('SubmissionUploadFilesComponent Component', () => { // synchronous beforeEach beforeEach(() => { const html = ` - `; + [uploadFilesOptions]="uploadFilesOptions">`; testFixture = createTestComponent(html, TestComponent) as ComponentFixture; testComp = testFixture.componentInstance; diff --git a/src/app/submission/form/submission-upload-files/themed-submission-upload-files.component.ts b/src/app/submission/form/submission-upload-files/themed-submission-upload-files.component.ts new file mode 100644 index 0000000000..300eca417c --- /dev/null +++ b/src/app/submission/form/submission-upload-files/themed-submission-upload-files.component.ts @@ -0,0 +1,38 @@ +import { Component, Input } from '@angular/core'; +import { ThemedComponent } from '../../../shared/theme-support/themed.component'; +import { SubmissionUploadFilesComponent } from './submission-upload-files.component'; +import { UploaderOptions } from '../../../shared/upload/uploader/uploader-options.model'; + +/** + * Themed wrapper for {@link SubmissionUploadFilesComponent} + */ +@Component({ + selector: 'ds-themed-submission-upload-files', + templateUrl: '../../../shared/theme-support/themed.component.html', +}) +export class ThemedSubmissionUploadFilesComponent extends ThemedComponent { + + @Input() collectionId: string; + + @Input() submissionId: string; + + @Input() uploadFilesOptions: UploaderOptions; + + protected inAndOutputNames: (keyof SubmissionUploadFilesComponent & keyof this)[] = [ + 'collectionId', + 'submissionId', + 'uploadFilesOptions' + ]; + + protected getComponentName(): string { + return 'SubmissionUploadFilesComponent'; + } + + protected importThemedComponent(themeName: string): Promise { + return import(`../../../../themes/${themeName}/app/submission/form/submission-upload-files/submission-upload-files.component.ts`); + } + + protected importUnthemedComponent(): Promise { + return import('./submission-upload-files.component'); + } +} diff --git a/src/app/submission/submission.module.ts b/src/app/submission/submission.module.ts index cf0ab2b369..86fdc3c1d1 100644 --- a/src/app/submission/submission.module.ts +++ b/src/app/submission/submission.module.ts @@ -67,6 +67,7 @@ import { } from './sections/sherpa-policies/metadata-information/metadata-information.component'; import { SectionFormOperationsService } from './sections/form/section-form-operations.service'; import {SubmissionSectionIdentifiersComponent} from './sections/identifiers/section-identifiers.component'; +import { ThemedSubmissionUploadFilesComponent } from './form/submission-upload-files/themed-submission-upload-files.component'; const ENTRY_COMPONENTS = [ // put only entry components that use custom decorator @@ -90,6 +91,7 @@ const DECLARATIONS = [ SubmissionSubmitComponent, ThemedSubmissionSubmitComponent, SubmissionUploadFilesComponent, + ThemedSubmissionUploadFilesComponent, SubmissionSectionContainerComponent, SubmissionSectionUploadAccessConditionsComponent, SubmissionSectionUploadFileComponent, diff --git a/src/themes/custom/app/submission/form/submission-upload-files/submission-upload-files.component.html b/src/themes/custom/app/submission/form/submission-upload-files/submission-upload-files.component.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/themes/custom/app/submission/form/submission-upload-files/submission-upload-files.component.ts b/src/themes/custom/app/submission/form/submission-upload-files/submission-upload-files.component.ts new file mode 100644 index 0000000000..238b9b2ca6 --- /dev/null +++ b/src/themes/custom/app/submission/form/submission-upload-files/submission-upload-files.component.ts @@ -0,0 +1,10 @@ +import { Component } from '@angular/core'; +import { SubmissionUploadFilesComponent as BaseComponent } from '../../../../../../app/submission/form/submission-upload-files/submission-upload-files.component'; + +@Component({ + selector: 'ds-submission-upload-files', + // templateUrl: './submission-upload-files.component.html', + templateUrl: '../../../../../../app/submission/form/submission-upload-files/submission-upload-files.component.html', +}) +export class SubmissionUploadFilesComponent extends BaseComponent { +} diff --git a/src/themes/custom/lazy-theme.module.ts b/src/themes/custom/lazy-theme.module.ts index edb3f5478c..0c95bd5078 100644 --- a/src/themes/custom/lazy-theme.module.ts +++ b/src/themes/custom/lazy-theme.module.ts @@ -156,6 +156,7 @@ import { ItemStatusComponent } from './app/item-page/edit-item-page/item-status/ import { EditBitstreamPageComponent } from './app/bitstream-page/edit-bitstream-page/edit-bitstream-page.component'; import { FormModule } from '../../app/shared/form/form.module'; import { RequestCopyModule } from 'src/app/request-copy/request-copy.module'; +import { SubmissionUploadFilesComponent } from './app/submission/form/submission-upload-files/submission-upload-files.component'; const DECLARATIONS = [ FileSectionComponent, @@ -239,6 +240,7 @@ const DECLARATIONS = [ SubmissionSectionUploadFileComponent, ItemStatusComponent, EditBitstreamPageComponent, + SubmissionUploadFilesComponent, ]; @NgModule({ From 20e96ac9bcf3939495d01b74a728a8ca1e69a5a4 Mon Sep 17 00:00:00 2001 From: Alexandre Vryghem Date: Tue, 30 Apr 2024 22:56:59 +0200 Subject: [PATCH 12/15] Moved the WorkspaceItemsDeletePageComponent component to the correct folder in the custom theme --- .../themed-workspaceitems-delete-page.component.ts | 7 +++---- .../workspaceitems-delete-page.component.html} | 0 .../workspaceitems-delete-page.component.scss} | 0 .../workspaceitems-delete-page.component.ts} | 2 +- src/themes/custom/lazy-theme.module.ts | 2 +- 5 files changed, 5 insertions(+), 6 deletions(-) rename src/themes/custom/app/{workspace-items-delete-page/workspace-items-delete/workspace-items-delete.component.html => workspaceitems-edit-page/workspaceitems-delete-page/workspaceitems-delete-page.component.html} (100%) rename src/themes/custom/app/{workspace-items-delete-page/workspace-items-delete/workspace-items-delete.component.scss => workspaceitems-edit-page/workspaceitems-delete-page/workspaceitems-delete-page.component.scss} (100%) rename src/themes/custom/app/{workspace-items-delete-page/workspace-items-delete/workspace-items-delete.component.ts => workspaceitems-edit-page/workspaceitems-delete-page/workspaceitems-delete-page.component.ts} (93%) diff --git a/src/app/workspaceitems-edit-page/workspaceitems-delete-page/themed-workspaceitems-delete-page.component.ts b/src/app/workspaceitems-edit-page/workspaceitems-delete-page/themed-workspaceitems-delete-page.component.ts index 6907f15af8..b7e1858b79 100644 --- a/src/app/workspaceitems-edit-page/workspaceitems-delete-page/themed-workspaceitems-delete-page.component.ts +++ b/src/app/workspaceitems-edit-page/workspaceitems-delete-page/themed-workspaceitems-delete-page.component.ts @@ -4,9 +4,8 @@ import { ThemedComponent } from '../../shared/theme-support/themed.component'; import { WorkspaceItemsDeletePageComponent } from './workspaceitems-delete-page.component'; /** - * Themed wrapper for WorkspaceItemsDeletePageComponent + * Themed wrapper for {@link WorkspaceItemsDeletePageComponent} */ - @Component({ selector: 'ds-workspace-items-delete', styleUrls: [], @@ -20,10 +19,10 @@ export class ThemedWorkspaceItemsDeletePageComponent extends ThemedComponent { - return import(`../../../themes/${themeName}/app/workflowitems-edit-page/workflow-item-delete/workflow-item-delete.component`); + return import(`../../../themes/${themeName}/app/workspaceitems-edit-page/workspaceitems-delete-page/workspaceitems-delete-page.component`); } protected importUnthemedComponent(): Promise { - return import(`./workspaceitems-delete-page.component`); + return import('./workspaceitems-delete-page.component'); } } diff --git a/src/themes/custom/app/workspace-items-delete-page/workspace-items-delete/workspace-items-delete.component.html b/src/themes/custom/app/workspaceitems-edit-page/workspaceitems-delete-page/workspaceitems-delete-page.component.html similarity index 100% rename from src/themes/custom/app/workspace-items-delete-page/workspace-items-delete/workspace-items-delete.component.html rename to src/themes/custom/app/workspaceitems-edit-page/workspaceitems-delete-page/workspaceitems-delete-page.component.html diff --git a/src/themes/custom/app/workspace-items-delete-page/workspace-items-delete/workspace-items-delete.component.scss b/src/themes/custom/app/workspaceitems-edit-page/workspaceitems-delete-page/workspaceitems-delete-page.component.scss similarity index 100% rename from src/themes/custom/app/workspace-items-delete-page/workspace-items-delete/workspace-items-delete.component.scss rename to src/themes/custom/app/workspaceitems-edit-page/workspaceitems-delete-page/workspaceitems-delete-page.component.scss diff --git a/src/themes/custom/app/workspace-items-delete-page/workspace-items-delete/workspace-items-delete.component.ts b/src/themes/custom/app/workspaceitems-edit-page/workspaceitems-delete-page/workspaceitems-delete-page.component.ts similarity index 93% rename from src/themes/custom/app/workspace-items-delete-page/workspace-items-delete/workspace-items-delete.component.ts rename to src/themes/custom/app/workspaceitems-edit-page/workspaceitems-delete-page/workspaceitems-delete-page.component.ts index ca8fc7bcae..aeecb081d7 100644 --- a/src/themes/custom/app/workspace-items-delete-page/workspace-items-delete/workspace-items-delete.component.ts +++ b/src/themes/custom/app/workspaceitems-edit-page/workspaceitems-delete-page/workspaceitems-delete-page.component.ts @@ -7,7 +7,7 @@ import { WorkspaceItemsDeletePageComponent as BaseComponent } from '../../../../ @Component({ - selector: 'ds-base-workspaceitems-delete-page', + selector: 'ds-themed-workspaceitems-delete-page', templateUrl: '../../../../../app/workspaceitems-edit-page/workspaceitems-delete-page/workspaceitems-delete-page.component.html', standalone: true, imports: [ diff --git a/src/themes/custom/lazy-theme.module.ts b/src/themes/custom/lazy-theme.module.ts index 42da1c8c96..26d9959ee9 100644 --- a/src/themes/custom/lazy-theme.module.ts +++ b/src/themes/custom/lazy-theme.module.ts @@ -100,7 +100,7 @@ import { SubmissionSubmitComponent } from './app/submission/submit/submission-su import { ThumbnailComponent } from './app/thumbnail/thumbnail.component'; import { WorkflowItemDeleteComponent } from './app/workflowitems-edit-page/workflow-item-delete/workflow-item-delete.component'; import { WorkflowItemSendBackComponent } from './app/workflowitems-edit-page/workflow-item-send-back/workflow-item-send-back.component'; -import { WorkspaceItemsDeletePageComponent } from './app/workspace-items-delete-page/workspace-items-delete/workspace-items-delete.component'; +import { WorkspaceItemsDeletePageComponent } from './app/workspaceitems-edit-page/workspaceitems-delete-page/workspaceitems-delete-page.component'; const DECLARATIONS = [ FileSectionComponent, From 4c4531fe1e2107809f7d45b7ff297b7cbcc1dbe9 Mon Sep 17 00:00:00 2001 From: Alexandre Vryghem Date: Wed, 8 May 2024 00:40:01 +0200 Subject: [PATCH 13/15] Custom theme fixes - Moved PublicationSidebarSearchListElementComponent to correct folder - Synced standalone imports in the custom theme with src/app - Pointed custom theme's SearchComponent template to the ones from src/app --- .../metadata-import-page.component.ts | 4 ++-- .../comcol-page-handle.component.ts | 5 ++++- .../item-detail-preview-field.component.ts | 7 ++++++- .../item-list-preview.component.ts | 14 +++++++++++++- src/app/shared/search/search.component.ts | 13 ++++++++++++- .../custom/app/login-page/login-page.component.ts | 2 +- ...tion-sidebar-search-list-element.component.html | 0 ...cation-sidebar-search-list-element.component.ts | 14 +++++++------- .../custom/app/shared/search/search.component.ts | 6 ++++-- src/themes/custom/eager-theme.module.ts | 2 +- 10 files changed, 50 insertions(+), 17 deletions(-) rename src/themes/custom/app/shared/object-list/sidebar-search-list-element/item-types/{ => publication}/publication-sidebar-search-list-element.component.html (100%) rename src/themes/custom/app/shared/object-list/sidebar-search-list-element/item-types/{ => publication}/publication-sidebar-search-list-element.component.ts (53%) diff --git a/src/app/admin/admin-import-metadata-page/metadata-import-page.component.ts b/src/app/admin/admin-import-metadata-page/metadata-import-page.component.ts index 6d52fbe4e2..56d504d57d 100644 --- a/src/app/admin/admin-import-metadata-page/metadata-import-page.component.ts +++ b/src/app/admin/admin-import-metadata-page/metadata-import-page.component.ts @@ -24,9 +24,9 @@ import { FileDropzoneNoUploaderComponent } from '../../shared/upload/file-dropzo selector: 'ds-base-metadata-import-page', templateUrl: './metadata-import-page.component.html', imports: [ - TranslateModule, - FormsModule, FileDropzoneNoUploaderComponent, + FormsModule, + TranslateModule, ], standalone: true, }) diff --git a/src/app/shared/comcol/comcol-page-handle/comcol-page-handle.component.ts b/src/app/shared/comcol/comcol-page-handle/comcol-page-handle.component.ts index a3ce50b379..538ed51a32 100644 --- a/src/app/shared/comcol/comcol-page-handle/comcol-page-handle.component.ts +++ b/src/app/shared/comcol/comcol-page-handle/comcol-page-handle.component.ts @@ -13,7 +13,10 @@ import { TranslateModule } from '@ngx-translate/core'; selector: 'ds-base-comcol-page-handle', styleUrls: ['./comcol-page-handle.component.scss'], templateUrl: './comcol-page-handle.component.html', - imports: [NgIf, TranslateModule], + imports: [ + NgIf, + TranslateModule, + ], standalone: true, }) export class ComcolPageHandleComponent { diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview-field/item-detail-preview-field.component.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview-field/item-detail-preview-field.component.ts index 347922d9e6..5bcda37837 100644 --- a/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview-field/item-detail-preview-field.component.ts +++ b/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview-field/item-detail-preview-field.component.ts @@ -20,7 +20,12 @@ import { SearchResult } from '../../../../search/models/search-result.model'; selector: 'ds-base-item-detail-preview-field', templateUrl: './item-detail-preview-field.component.html', standalone: true, - imports: [MetadataFieldWrapperComponent, NgIf, NgFor, TranslateModule], + imports: [ + MetadataFieldWrapperComponent, + NgFor, + NgIf, + TranslateModule, + ], }) export class ItemDetailPreviewFieldComponent { diff --git a/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.ts index 17ca6ce0a0..583b857063 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.ts @@ -38,7 +38,19 @@ import { TruncatablePartComponent } from '../../../truncatable/truncatable-part/ templateUrl: 'item-list-preview.component.html', animations: [fadeInOut], standalone: true, - imports: [NgIf, ThemedThumbnailComponent, NgClass, ThemedBadgesComponent, TruncatableComponent, TruncatablePartComponent, NgFor, ItemSubmitterComponent, ItemCollectionComponent, AsyncPipe, TranslateModule], + imports: [ + AsyncPipe, + ItemCollectionComponent, + ItemSubmitterComponent, + NgClass, + NgFor, + NgIf, + ThemedBadgesComponent, + ThemedThumbnailComponent, + TranslateModule, + TruncatableComponent, + TruncatablePartComponent, + ], }) export class ItemListPreviewComponent implements OnInit { diff --git a/src/app/shared/search/search.component.ts b/src/app/shared/search/search.component.ts index 68880119a4..f7911731df 100644 --- a/src/app/shared/search/search.component.ts +++ b/src/app/shared/search/search.component.ts @@ -88,7 +88,18 @@ import { SearchConfigurationOption } from './search-switch-configuration/search- changeDetection: ChangeDetectionStrategy.OnPush, animations: [pushInOut], standalone: true, - imports: [NgIf, NgTemplateOutlet, PageWithSidebarComponent, ViewModeSwitchComponent, ThemedSearchResultsComponent, ThemedSearchSidebarComponent, ThemedSearchFormComponent, SearchLabelsComponent, AsyncPipe, TranslateModule], + imports: [ + AsyncPipe, + NgIf, + NgTemplateOutlet, + PageWithSidebarComponent, + ThemedSearchFormComponent, + ThemedSearchResultsComponent, + ThemedSearchSidebarComponent, + TranslateModule, + SearchLabelsComponent, + ViewModeSwitchComponent, + ], }) /** diff --git a/src/themes/custom/app/login-page/login-page.component.ts b/src/themes/custom/app/login-page/login-page.component.ts index 68a36b182d..1e7daae653 100644 --- a/src/themes/custom/app/login-page/login-page.component.ts +++ b/src/themes/custom/app/login-page/login-page.component.ts @@ -14,7 +14,7 @@ import { LoginPageComponent as BaseComponent } from '../../../../app/login-page/ // templateUrl: './login-page.component.html' templateUrl: '../../../../app/login-page/login-page.component.html', standalone: true, - imports: [ThemedLogInComponent ,TranslateModule], + imports: [ThemedLogInComponent, TranslateModule], }) export class LoginPageComponent extends BaseComponent { } diff --git a/src/themes/custom/app/shared/object-list/sidebar-search-list-element/item-types/publication-sidebar-search-list-element.component.html b/src/themes/custom/app/shared/object-list/sidebar-search-list-element/item-types/publication/publication-sidebar-search-list-element.component.html similarity index 100% rename from src/themes/custom/app/shared/object-list/sidebar-search-list-element/item-types/publication-sidebar-search-list-element.component.html rename to src/themes/custom/app/shared/object-list/sidebar-search-list-element/item-types/publication/publication-sidebar-search-list-element.component.html diff --git a/src/themes/custom/app/shared/object-list/sidebar-search-list-element/item-types/publication-sidebar-search-list-element.component.ts b/src/themes/custom/app/shared/object-list/sidebar-search-list-element/item-types/publication/publication-sidebar-search-list-element.component.ts similarity index 53% rename from src/themes/custom/app/shared/object-list/sidebar-search-list-element/item-types/publication-sidebar-search-list-element.component.ts rename to src/themes/custom/app/shared/object-list/sidebar-search-list-element/item-types/publication/publication-sidebar-search-list-element.component.ts index 7d2f03d26d..dbb4526a9a 100644 --- a/src/themes/custom/app/shared/object-list/sidebar-search-list-element/item-types/publication-sidebar-search-list-element.component.ts +++ b/src/themes/custom/app/shared/object-list/sidebar-search-list-element/item-types/publication/publication-sidebar-search-list-element.component.ts @@ -6,12 +6,12 @@ import { import { Component } from '@angular/core'; import { TranslateModule } from '@ngx-translate/core'; -import { Context } from '../../../../../../../app/core/shared/context.model'; -import { ViewMode } from '../../../../../../../app/core/shared/view-mode.model'; -import { ItemSearchResult } from '../../../../../../../app/shared/object-collection/shared/item-search-result.model'; -import { listableObjectComponent } from '../../../../../../../app/shared/object-collection/shared/listable-object/listable-object.decorator'; -import { PublicationSidebarSearchListElementComponent as BaseComponent } from '../../../../../../../app/shared/object-list/sidebar-search-list-element/item-types/publication/publication-sidebar-search-list-element.component'; -import { TruncatablePartComponent } from '../../../../../../../app/shared/truncatable/truncatable-part/truncatable-part.component'; +import { Context } from '../../../../../../../../app/core/shared/context.model'; +import { ViewMode } from '../../../../../../../../app/core/shared/view-mode.model'; +import { ItemSearchResult } from '../../../../../../../../app/shared/object-collection/shared/item-search-result.model'; +import { listableObjectComponent } from '../../../../../../../../app/shared/object-collection/shared/listable-object/listable-object.decorator'; +import { PublicationSidebarSearchListElementComponent as BaseComponent } from '../../../../../../../../app/shared/object-list/sidebar-search-list-element/item-types/publication/publication-sidebar-search-list-element.component'; +import { TruncatablePartComponent } from '../../../../../../../../app/shared/truncatable/truncatable-part/truncatable-part.component'; @listableObjectComponent('PublicationSearchResult', ViewMode.ListElement, Context.SideBarSearchModal, 'custom') @listableObjectComponent('PublicationSearchResult', ViewMode.ListElement, Context.SideBarSearchModalCurrent, 'custom') @@ -20,7 +20,7 @@ import { TruncatablePartComponent } from '../../../../../../../app/shared/trunca @Component({ selector: 'ds-publication-sidebar-search-list-element', // templateUrl: './publication-sidebar-search-list-element.component.html', - templateUrl: '../../../../../../../app/shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component.html', + templateUrl: '../../../../../../../../app/shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component.html', standalone: true, imports: [TruncatablePartComponent, NgClass, NgIf, AsyncPipe, TranslateModule], }) diff --git a/src/themes/custom/app/shared/search/search.component.ts b/src/themes/custom/app/shared/search/search.component.ts index eedb68a2c8..85a453c16c 100644 --- a/src/themes/custom/app/shared/search/search.component.ts +++ b/src/themes/custom/app/shared/search/search.component.ts @@ -20,8 +20,10 @@ import { ViewModeSwitchComponent } from '../../../../../app/shared/view-mode-swi @Component({ selector: 'ds-themed-search', - styleUrls: ['./search.component.scss'], - templateUrl: './search.component.html', + // styleUrls: ['./search.component.scss'], + styleUrls: ['../../../../../app/shared/search/search.component.scss'], + // templateUrl: './search.component.html', + templateUrl: '../../../../../app/shared/search/search.component.html', changeDetection: ChangeDetectionStrategy.OnPush, animations: [pushInOut], standalone: true, diff --git a/src/themes/custom/eager-theme.module.ts b/src/themes/custom/eager-theme.module.ts index 8b734d73d1..ecc88073a3 100644 --- a/src/themes/custom/eager-theme.module.ts +++ b/src/themes/custom/eager-theme.module.ts @@ -29,7 +29,7 @@ import { BrowseEntryListElementComponent } from './app/shared/object-list/browse import { CollectionListElementComponent } from './app/shared/object-list/collection-list-element/collection-list-element.component'; import { CommunityListElementComponent } from './app/shared/object-list/community-list-element/community-list-element.component'; import { ItemSearchResultListElementComponent } from './app/shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component'; -import { PublicationSidebarSearchListElementComponent } from './app/shared/object-list/sidebar-search-list-element/item-types/publication-sidebar-search-list-element.component'; +import { PublicationSidebarSearchListElementComponent } from './app/shared/object-list/sidebar-search-list-element/item-types/publication/publication-sidebar-search-list-element.component'; import { StartsWithDateComponent } from './app/shared/starts-with/date/starts-with-date.component'; import { StartsWithTextComponent } from './app/shared/starts-with/text/starts-with-text.component'; From 83fbf8b02bf0af0b9318626e0a3869e1b1dc34b2 Mon Sep 17 00:00:00 2001 From: Alexandre Vryghem Date: Wed, 8 May 2024 21:20:15 +0200 Subject: [PATCH 14/15] 114077: Fixed ViewChild not working correctly --- .../profile-page.component.spec.ts | 44 +++++++++++++------ .../profile-page/profile-page.component.ts | 8 ++-- .../shared/theme-support/themed.component.ts | 2 +- 3 files changed, 35 insertions(+), 19 deletions(-) diff --git a/src/app/profile-page/profile-page.component.spec.ts b/src/app/profile-page/profile-page.component.spec.ts index 709ed56790..ecaf3ee1e1 100644 --- a/src/app/profile-page/profile-page.component.spec.ts +++ b/src/app/profile-page/profile-page.component.spec.ts @@ -2,7 +2,7 @@ import { ProfilePageComponent } from './profile-page.component'; import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { VarDirective } from '../shared/utils/var.directive'; import { TranslateModule } from '@ngx-translate/core'; -import { RouterTestingModule } from '@angular/router/testing'; +import { RouterModule } from '@angular/router'; import { NO_ERRORS_SCHEMA } from '@angular/core'; import { EPerson } from '../core/eperson/models/eperson.model'; import { StoreModule } from '@ngrx/store'; @@ -93,7 +93,7 @@ describe('ProfilePageComponent', () => { imports: [ StoreModule.forRoot({ auth: authReducer }, storeModuleConfig), TranslateModule.forRoot(), - RouterTestingModule.withRoutes([]) + RouterModule.forRoot([]), ], providers: [ { provide: EPersonDataService, useValue: epersonService }, @@ -122,9 +122,13 @@ describe('ProfilePageComponent', () => { describe('updateProfile', () => { describe('when the metadata form returns false and the security form returns true', () => { beforeEach(() => { - component.metadataForm = jasmine.createSpyObj('metadataForm', { - updateProfile: false - }); + component.metadataForm = { + compRef: { + instance: { + updateProfile: () => false, + }, + }, + } as any; spyOn(component, 'updateSecurity').and.returnValue(true); component.updateProfile(); }); @@ -136,9 +140,13 @@ describe('ProfilePageComponent', () => { describe('when the metadata form returns true and the security form returns false', () => { beforeEach(() => { - component.metadataForm = jasmine.createSpyObj('metadataForm', { - updateProfile: true - }); + component.metadataForm = { + compRef: { + instance: { + updateProfile: () => true, + }, + }, + } as any; component.updateProfile(); }); @@ -149,9 +157,13 @@ describe('ProfilePageComponent', () => { describe('when the metadata form returns true and the security form returns true', () => { beforeEach(() => { - component.metadataForm = jasmine.createSpyObj('metadataForm', { - updateProfile: true - }); + component.metadataForm = { + compRef: { + instance: { + updateProfile: () => true, + }, + }, + } as any; component.updateProfile(); }); @@ -162,9 +174,13 @@ describe('ProfilePageComponent', () => { describe('when the metadata form returns false and the security form returns false', () => { beforeEach(() => { - component.metadataForm = jasmine.createSpyObj('metadataForm', { - updateProfile: false - }); + component.metadataForm = { + compRef: { + instance: { + updateProfile: () => false, + }, + }, + } as any; component.updateProfile(); }); diff --git a/src/app/profile-page/profile-page.component.ts b/src/app/profile-page/profile-page.component.ts index 343314999b..7650afbe48 100644 --- a/src/app/profile-page/profile-page.component.ts +++ b/src/app/profile-page/profile-page.component.ts @@ -1,7 +1,7 @@ import { Component, OnInit, ViewChild } from '@angular/core'; import { BehaviorSubject, Observable } from 'rxjs'; import { EPerson } from '../core/eperson/models/eperson.model'; -import { ProfilePageMetadataFormComponent } from './profile-page-metadata-form/profile-page-metadata-form.component'; +import { ThemedProfilePageMetadataFormComponent } from './profile-page-metadata-form/themed-profile-page-metadata-form.component'; import { NotificationsService } from '../shared/notifications/notifications.service'; import { TranslateService } from '@ngx-translate/core'; import { Group } from '../core/eperson/models/group.model'; @@ -32,7 +32,7 @@ export class ProfilePageComponent implements OnInit { /** * A reference to the metadata form component */ - @ViewChild(ProfilePageMetadataFormComponent) metadataForm: ProfilePageMetadataFormComponent; + @ViewChild(ThemedProfilePageMetadataFormComponent) metadataForm: ThemedProfilePageMetadataFormComponent; /** * The authenticated user as observable @@ -114,8 +114,8 @@ export class ProfilePageComponent implements OnInit { * Fire an update on both the metadata and security forms * Show a warning notification when no changes were made in both forms */ - updateProfile() { - const metadataChanged = this.metadataForm.updateProfile(); + updateProfile(): void { + const metadataChanged = this.metadataForm.compRef.instance.updateProfile(); const securityChanged = this.updateSecurity(); if (!metadataChanged && !securityChanged) { this.notificationsService.warning( diff --git a/src/app/shared/theme-support/themed.component.ts b/src/app/shared/theme-support/themed.component.ts index 6b0727ccdd..8c173fd71a 100644 --- a/src/app/shared/theme-support/themed.component.ts +++ b/src/app/shared/theme-support/themed.component.ts @@ -27,7 +27,7 @@ import { BASE_THEME_NAME } from './theme.constants'; export abstract class ThemedComponent implements OnInit, OnDestroy, OnChanges { @ViewChild('vcr', { read: ViewContainerRef }) vcr: ViewContainerRef; @ViewChild('content') themedElementContent: ElementRef; - protected compRef: ComponentRef; + compRef: ComponentRef; /** * A reference to the themed component. Will start as undefined and emit every time the themed From c24e58eb667221aa10b55d81ed5f4ae3b17feda5 Mon Sep 17 00:00:00 2001 From: Alexandre Vryghem Date: Thu, 9 May 2024 19:51:20 +0200 Subject: [PATCH 15/15] Added ComcolPageContentComponent to custom theme & fixed template urls of CommunityPageSubCollectionListComponent --- .../themed-comcol-page-content.component.ts | 2 +- ...nity-page-sub-collection-list.component.ts | 4 ++-- .../comcol-page-content.component.html | 0 .../comcol-page-content.component.scss | 0 .../comcol-page-content.component.ts | 20 +++++++++++++++++++ src/themes/custom/lazy-theme.module.ts | 2 ++ 6 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 src/themes/custom/app/shared/comcol/comcol-page-content/comcol-page-content.component.html create mode 100644 src/themes/custom/app/shared/comcol/comcol-page-content/comcol-page-content.component.scss create mode 100644 src/themes/custom/app/shared/comcol/comcol-page-content/comcol-page-content.component.ts diff --git a/src/app/shared/comcol/comcol-page-content/themed-comcol-page-content.component.ts b/src/app/shared/comcol/comcol-page-content/themed-comcol-page-content.component.ts index ce81b5b0e0..1c63349533 100644 --- a/src/app/shared/comcol/comcol-page-content/themed-comcol-page-content.component.ts +++ b/src/app/shared/comcol/comcol-page-content/themed-comcol-page-content.component.ts @@ -34,7 +34,7 @@ export class ThemedComcolPageContentComponent extends ThemedComponent { - return import(`../../../../themes/${themeName}/app/admin/admin-sidebar/admin-sidebar.component`); + return import(`../../../../themes/${themeName}/app/shared/comcol/comcol-page-content/comcol-page-content.component`); } protected importUnthemedComponent(): Promise { diff --git a/src/themes/custom/app/community-page/sections/sub-com-col-section/sub-collection-list/community-page-sub-collection-list.component.ts b/src/themes/custom/app/community-page/sections/sub-com-col-section/sub-collection-list/community-page-sub-collection-list.component.ts index 6160a2d451..ab2d49b920 100644 --- a/src/themes/custom/app/community-page/sections/sub-com-col-section/sub-collection-list/community-page-sub-collection-list.component.ts +++ b/src/themes/custom/app/community-page/sections/sub-com-col-section/sub-collection-list/community-page-sub-collection-list.component.ts @@ -14,9 +14,9 @@ import { VarDirective } from '../../../../../../../app/shared/utils/var.directiv @Component({ selector: 'ds-themed-community-page-sub-collection-list', // styleUrls: ['./community-page-sub-collection-list.component.scss'], - styleUrls: ['../../../../../app/community-page/sections/sub-com-col-section/sub-collection-list/community-page-sub-collection-list.component.scss'], + styleUrls: ['../../../../../../../app/community-page/sections/sub-com-col-section/sub-collection-list/community-page-sub-collection-list.component.scss'], // templateUrl: './community-page-sub-collection-list.component.html', - templateUrl: '../../../../../app/community-page/sections/sub-com-col-section/sub-collection-list/community-page-sub-collection-list.component.html', + templateUrl: '../../../../../../../app/community-page/sections/sub-com-col-section/sub-collection-list/community-page-sub-collection-list.component.html', imports: [ ObjectCollectionComponent, ErrorComponent, diff --git a/src/themes/custom/app/shared/comcol/comcol-page-content/comcol-page-content.component.html b/src/themes/custom/app/shared/comcol/comcol-page-content/comcol-page-content.component.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/themes/custom/app/shared/comcol/comcol-page-content/comcol-page-content.component.scss b/src/themes/custom/app/shared/comcol/comcol-page-content/comcol-page-content.component.scss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/themes/custom/app/shared/comcol/comcol-page-content/comcol-page-content.component.ts b/src/themes/custom/app/shared/comcol/comcol-page-content/comcol-page-content.component.ts new file mode 100644 index 0000000000..1d98892e33 --- /dev/null +++ b/src/themes/custom/app/shared/comcol/comcol-page-content/comcol-page-content.component.ts @@ -0,0 +1,20 @@ +import { NgIf } from '@angular/common'; +import { Component } from '@angular/core'; +import { TranslateModule } from '@ngx-translate/core'; + +import { ComcolPageContentComponent as BaseComponent } from '../../../../../../app/shared/comcol/comcol-page-content/comcol-page-content.component'; + +@Component({ + selector: 'ds-themed-comcol-page-content', + // styleUrls: ['./comcol-page-content.component.scss'], + styleUrls: ['../../../../../../app/shared/comcol/comcol-page-content/comcol-page-content.component.scss'], + // templateUrl: './comcol-page-content.component.html', + templateUrl: '../../../../../../app/shared/comcol/comcol-page-content/comcol-page-content.component.html', + imports: [ + TranslateModule, + NgIf, + ], + standalone: true, +}) +export class ComcolPageContentComponent extends BaseComponent { +} diff --git a/src/themes/custom/lazy-theme.module.ts b/src/themes/custom/lazy-theme.module.ts index 26d9959ee9..cb80948daf 100644 --- a/src/themes/custom/lazy-theme.module.ts +++ b/src/themes/custom/lazy-theme.module.ts @@ -68,6 +68,7 @@ import { AuthNavMenuComponent } from './app/shared/auth-nav-menu/auth-nav-menu.c import { UserMenuComponent } from './app/shared/auth-nav-menu/user-menu/user-menu.component'; import { BrowseByComponent } from './app/shared/browse-by/browse-by.component'; import { ComcolPageBrowseByComponent } from './app/shared/comcol/comcol-page-browse-by/comcol-page-browse-by.component'; +import { ComcolPageContentComponent } from './app/shared/comcol/comcol-page-content/comcol-page-content.component'; import { ComcolPageHandleComponent } from './app/shared/comcol/comcol-page-handle/comcol-page-handle.component'; import { DsDynamicLookupRelationExternalSourceTabComponent } from './app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/dynamic-lookup-relation-external-source-tab.component'; import { ExternalSourceEntryImportModalComponent } from './app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/external-source-entry-import-modal/external-source-entry-import-modal.component'; @@ -192,6 +193,7 @@ const DECLARATIONS = [ ItemDetailPreviewFieldComponent, ProfilePageMetadataFormComponent, SubmissionUploadFilesComponent, + ComcolPageContentComponent, ]; @NgModule({