Made ListableObjectComponentLoaderComponent themeable

This commit is contained in:
lotte
2023-01-23 12:33:01 +01:00
parent 6114337660
commit a4679ca7e5
23 changed files with 87 additions and 27 deletions

View File

@@ -1,7 +1,7 @@
<ds-listable-object-component-loader [object]="object" <ds-themed-listable-object-component-loader [object]="object"
[viewMode]="viewModes.ListElement" [viewMode]="viewModes.ListElement"
[index]="index" [index]="index"
[linkType]="linkType" [linkType]="linkType"
[listID]="listID" [listID]="listID"
[hideBadges]="true"></ds-listable-object-component-loader> [hideBadges]="true"></ds-themed-listable-object-component-loader>
<ds-item-admin-search-result-actions-element [item]="dso" [small]="false"></ds-item-admin-search-result-actions-element> <ds-item-admin-search-result-actions-element [item]="dso" [small]="false"></ds-item-admin-search-result-actions-element>

View File

@@ -1,10 +1,10 @@
<div class="workflow-badge"> <div class="workflow-badge">
<span class="badge badge-info">{{ "admin.workflow.item.workflow" | translate }}</span> <span class="badge badge-info">{{ "admin.workflow.item.workflow" | translate }}</span>
</div> </div>
<ds-listable-object-component-loader *ngIf="item$ | async" <ds-themed-listable-object-component-loader *ngIf="item$ | async"
[object]="item$ | async" [object]="item$ | async"
[viewMode]="viewModes.ListElement" [viewMode]="viewModes.ListElement"
[index]="index" [index]="index"
[linkType]="linkType" [linkType]="linkType"
[listID]="listID"></ds-listable-object-component-loader> [listID]="listID"></ds-themed-listable-object-component-loader>
<ds-workflow-item-admin-workflow-actions-element [wfi]="dso" [small]="false"></ds-workflow-item-admin-workflow-actions-element> <ds-workflow-item-admin-workflow-actions-element [wfi]="dso" [small]="false"></ds-workflow-item-admin-workflow-actions-element>

View File

@@ -31,11 +31,11 @@
class="d-flex flex-row"> class="d-flex flex-row">
<ng-container *ngVar="(getRelatedItem(relationship) | async) as relatedItem"> <ng-container *ngVar="(getRelatedItem(relationship) | async) as relatedItem">
<ds-listable-object-component-loader <ds-themed-listable-object-component-loader
*ngIf="relatedItem" *ngIf="relatedItem"
[object]="relatedItem" [object]="relatedItem"
[viewMode]="viewMode"> [viewMode]="viewMode">
</ds-listable-object-component-loader> </ds-themed-listable-object-component-loader>
<div class="ml-auto"> <div class="ml-auto">
<div class="btn-group"> <div class="btn-group">
<button class="btn btn-outline-info btn-sm" <button class="btn btn-outline-info btn-sm"
@@ -55,11 +55,11 @@
</button> </button>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<ds-listable-object-component-loader <ds-themed-listable-object-component-loader
*ngIf="relatedItem" *ngIf="relatedItem"
[object]="relatedItem" [object]="relatedItem"
[viewMode]="viewMode"> [viewMode]="viewMode">
</ds-listable-object-component-loader> </ds-themed-listable-object-component-loader>
<div *ngFor="let metadata of (getVirtualMetadata(relationship) | async)"> <div *ngFor="let metadata of (getVirtualMetadata(relationship) | async)">
<div> <div>
<div class="font-weight-bold"> <div class="font-weight-bold">

View File

@@ -1,11 +1,11 @@
<div class="row" *ngIf="relatedItem$ | async"> <div class="row" *ngIf="relatedItem$ | async">
<div class="col-10 relationship"> <div class="col-10 relationship">
<ds-listable-object-component-loader <ds-themed-listable-object-component-loader
[object]="relatedItem$ | async" [object]="relatedItem$ | async"
[viewMode]="viewMode" [viewMode]="viewMode"
[value]="nameVariant" [value]="nameVariant"
> >
</ds-listable-object-component-loader> </ds-themed-listable-object-component-loader>
</div> </div>
<div class="col-2"> <div class="col-2">
<div class="btn-group relationship-action-buttons"> <div class="btn-group relationship-action-buttons">

View File

@@ -15,8 +15,8 @@
</label> </label>
</div> </div>
<div class="flex-column"> <div class="flex-column">
<ds-listable-object-component-loader [object]="item"> <ds-themed-listable-object-component-loader [object]="item">
</ds-listable-object-component-loader> </ds-themed-listable-object-component-loader>
<div *ngFor="let metadata of virtualMetadata.get(item.uuid)"> <div *ngFor="let metadata of virtualMetadata.get(item.uuid)">
<div class="font-weight-bold"> <div class="font-weight-bold">
{{metadata.metadataField}} {{metadata.metadataField}}

View File

@@ -4,7 +4,7 @@
<ds-item-alerts [item]="item"></ds-item-alerts> <ds-item-alerts [item]="item"></ds-item-alerts>
<ds-item-versions-notice [item]="item"></ds-item-versions-notice> <ds-item-versions-notice [item]="item"></ds-item-versions-notice>
<ds-view-tracker [object]="item"></ds-view-tracker> <ds-view-tracker [object]="item"></ds-view-tracker>
<ds-listable-object-component-loader [object]="item" [viewMode]="viewMode"></ds-listable-object-component-loader> <ds-themed-listable-object-component-loader [object]="item" [viewMode]="viewMode"></ds-themed-listable-object-component-loader>
<ds-item-versions class="mt-2" [item]="item" [displayActions]="false"></ds-item-versions> <ds-item-versions class="mt-2" [item]="item" [displayActions]="false"></ds-item-versions>
</div> </div>
</div> </div>

View File

@@ -1,9 +1,9 @@
<ds-metadata-field-wrapper [label]="label"> <ds-metadata-field-wrapper [label]="label">
<ng-container *ngFor="let objectPage of objects; let i = index"> <ng-container *ngFor="let objectPage of objects; let i = index">
<ng-container *ngVar="(objectPage | async) as itemsRD"> <ng-container *ngVar="(objectPage | async) as itemsRD">
<ds-listable-object-component-loader *ngFor="let item of itemsRD?.payload?.page" <ds-themed-listable-object-component-loader *ngFor="let item of itemsRD?.payload?.page"
[object]="item" [viewMode]="viewMode"> [object]="item" [viewMode]="viewMode">
</ds-listable-object-component-loader> </ds-themed-listable-object-component-loader>
<ds-loading *ngIf="(i + 1) === objects.length && (itemsRD || i > 0) && !(itemsRD?.hasSucceeded && itemsRD?.payload && itemsRD?.payload?.page?.length > 0)" message="{{'loading.default' | translate}}"></ds-loading> <ds-loading *ngIf="(i + 1) === objects.length && (itemsRD || i > 0) && !(itemsRD?.hasSucceeded && itemsRD?.payload && itemsRD?.payload?.page?.length > 0)" message="{{'loading.default' | translate}}"></ds-loading>
<div class="d-inline-block w-100 mt-2" *ngIf="(i + 1) === objects.length && itemsRD?.payload?.page?.length > 0"> <div class="d-inline-block w-100 mt-2" *ngIf="(i + 1) === objects.length && itemsRD?.payload?.page?.length > 0">
<div *ngIf="itemsRD?.payload?.totalPages > objects.length" class="float-left" id="view-more"> <div *ngIf="itemsRD?.payload?.totalPages > objects.length" class="float-left" id="view-more">

View File

@@ -62,7 +62,7 @@ describe('RelatedItemsComponent', () => {
})); }));
it(`should load ${mockItems.length} item-type-switcher components`, () => { it(`should load ${mockItems.length} item-type-switcher components`, () => {
const fields = fixture.debugElement.queryAll(By.css('ds-listable-object-component-loader')); const fields = fixture.debugElement.queryAll(By.css('ds-themed-listable-object-component-loader'));
expect(fields.length).toBe(mockItems.length); expect(fields.length).toBe(mockItems.length);
}); });

View File

@@ -25,7 +25,7 @@
</div> </div>
<ul class="list-unstyled"> <ul class="list-unstyled">
<li *ngFor="let object of objects?.payload?.page" class="mt-4 mb-4"> <li *ngFor="let object of objects?.payload?.page" class="mt-4 mb-4">
<ds-listable-object-component-loader [object]="object" [viewMode]="viewMode"></ds-listable-object-component-loader> <ds-themed-listable-object-component-loader [object]="object" [viewMode]="viewMode"></ds-themed-listable-object-component-loader>
</li> </li>
</ul> </ul>
<div> <div>

View File

@@ -25,8 +25,8 @@
title="{{ getName(listEntry) }}" title="{{ getName(listEntry) }}"
dsHoverClass="ds-hover" dsHoverClass="ds-hover"
(click)="onSelect.emit(listEntry.indexableObject)" #listEntryElement> (click)="onSelect.emit(listEntry.indexableObject)" #listEntryElement>
<ds-listable-object-component-loader [object]="listEntry" [viewMode]="viewMode" <ds-themed-listable-object-component-loader [object]="listEntry" [viewMode]="viewMode"
[linkType]=linkTypes.None [context]="getContext(listEntry.indexableObject.id)"></ds-listable-object-component-loader> [linkType]=linkTypes.None [context]="getContext(listEntry.indexableObject.id)"></ds-themed-listable-object-component-loader>
</button> </button>
</ng-container> </ng-container>
<button *ngIf="loading" <button *ngIf="loading"

View File

@@ -4,7 +4,7 @@
<ds-loading [showMessage]="false"></ds-loading> <ds-loading [showMessage]="false"></ds-loading>
</ng-container> </ng-container>
<ng-container *ngIf="(relatedItem$ | async)"> <ng-container *ngIf="(relatedItem$ | async)">
<ds-listable-object-component-loader [showLabel]="false" [viewMode]="viewType" [object]="(relatedItem$ | async)"></ds-listable-object-component-loader> <ds-themed-listable-object-component-loader [showLabel]="false" [viewMode]="viewType" [object]="(relatedItem$ | async)"></ds-themed-listable-object-component-loader>
</ng-container> </ng-container>
</span> </span>
<button type="button" class="btn btn-secondary" <button type="button" class="btn btn-secondary"

View File

@@ -14,7 +14,7 @@
<div class="dropdown-list"> <div class="dropdown-list">
<div *ngFor="let suggestionOption of suggestions"> <div *ngFor="let suggestionOption of suggestions">
<button class="d-block dropdown-item" (click)="onClickSuggestion(suggestionOption)" #suggestion> <button class="d-block dropdown-item" (click)="onClickSuggestion(suggestionOption)" #suggestion>
<ds-listable-object-component-loader [object]="suggestionOption" [viewMode]="viewMode" [linkType]="linkTypes.None"></ds-listable-object-component-loader> <ds-themed-listable-object-component-loader [object]="suggestionOption" [viewMode]="viewMode" [linkType]="linkTypes.None"></ds-themed-listable-object-component-loader>
</button> </button>
</div> </div>
</div> </div>

View File

@@ -0,0 +1,43 @@
import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';
import { ListableObjectComponentLoaderComponent } from './listable-object-component-loader.component';
import { ThemedComponent } from '../../../theme-support/themed.component';
import { ListableObject } from '../listable-object.model';
import { ViewMode } from '../../../../core/shared/view-mode.model';
import { Context } from '../../../../core/shared/context.model';
import { CollectionElementLinkType } from '../../collection-element-link.type';
/**
* Themed wrapper for SearchComponent
*/
@Component({
selector: 'ds-themed-listable-object-component-loader',
styleUrls: [],
templateUrl: '../theme-support/themed.component.html',
})
export class ThemedListableObjectComponentLoaderComponent extends ThemedComponent<ListableObjectComponentLoaderComponent> {
protected inAndOutputNames: (keyof ListableObjectComponentLoaderComponent & keyof this)[] = [
'object', 'index', 'viewMode', 'context', 'linkType', 'listID', 'linkType', 'showLabel', 'value', 'hideBadges', 'contentChange'];
@Input() object: ListableObject;
@Input() index: number;
@Input() viewMode: ViewMode;
@Input() context: Context;
@Input() linkType: CollectionElementLinkType;
@Input() listID: string;
@Input() showLabel = true;
@Input() value: string;
@Input() hideBadges = false;
@Output() contentChange = new EventEmitter<ListableObject>();
protected getComponentName(): string {
return 'ListableObjectComponentLoaderComponent';
}
protected importThemedComponent(themeName: string): Promise<any> {
return import(`../../../themes/${themeName}/app/shared/object-collection/shared/listable-object/listable-object-component-loader.component`);
}
protected importUnthemedComponent(): Promise<any> {
return import('./listable-object-component-loader.component');
}
}

View File

@@ -14,7 +14,7 @@
<div class="row mt-2" *ngIf="objects?.hasSucceeded" @fadeIn> <div class="row mt-2" *ngIf="objects?.hasSucceeded" @fadeIn>
<div class="col" <div class="col"
*ngFor="let object of objects?.payload?.page"> *ngFor="let object of objects?.payload?.page">
<ds-listable-object-component-loader [object]="object" [viewMode]="viewMode" [context]="context"></ds-listable-object-component-loader> <ds-themed-listable-object-component-loader [object]="object" [viewMode]="viewMode" [context]="context"></ds-themed-listable-object-component-loader>
</div> </div>
</div> </div>
<ds-error *ngIf="objects.hasFailed" message="{{'error.objects' | translate}}"></ds-error> <ds-error *ngIf="objects.hasFailed" message="{{'error.objects' | translate}}"></ds-error>

View File

@@ -14,7 +14,7 @@
<div class="card-columns row" *ngIf="objects?.hasSucceeded"> <div class="card-columns row" *ngIf="objects?.hasSucceeded">
<div class="card-column col col-sm-6 col-lg-4" *ngFor="let column of (columns$ | async)" @fadeIn> <div class="card-column col col-sm-6 col-lg-4" *ngFor="let column of (columns$ | async)" @fadeIn>
<div class="card-element" *ngFor="let object of column"> <div class="card-element" *ngFor="let object of column">
<ds-listable-object-component-loader [object]="object" [viewMode]="viewMode" [context]="context" [linkType]="linkType"></ds-listable-object-component-loader> <ds-themed-listable-object-component-loader [object]="object" [viewMode]="viewMode" [context]="context" [linkType]="linkType"></ds-themed-listable-object-component-loader>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -1 +1 @@
<ds-listable-object-component-loader [object]="metadataRepresentation" [viewMode]="viewMode"></ds-listable-object-component-loader> <ds-themed-listable-object-component-loader [object]="metadataRepresentation" [viewMode]="viewMode"></ds-themed-listable-object-component-loader>

View File

@@ -28,7 +28,7 @@ describe('ItemMetadataListElementComponent', () => {
})); }));
it('should call a listable-object-component-loader component and pass the item-metadata-representation', () => { it('should call a listable-object-component-loader component and pass the item-metadata-representation', () => {
const objectLoader = fixture.debugElement.query(By.css('ds-listable-object-component-loader')).nativeElement; const objectLoader = fixture.debugElement.query(By.css('ds-themed-listable-object-component-loader')).nativeElement;
expect(objectLoader.object).toBe(mockItemMetadataRepresentation); expect(objectLoader.object).toBe(mockItemMetadataRepresentation);
}); });

View File

@@ -21,10 +21,10 @@
<ds-importable-list-item-control *ngIf="importable" [object]="object" <ds-importable-list-item-control *ngIf="importable" [object]="object"
[importConfig]="importConfig" [importConfig]="importConfig"
(importObject)="importObject.emit($event)"></ds-importable-list-item-control> (importObject)="importObject.emit($event)"></ds-importable-list-item-control>
<ds-listable-object-component-loader [object]="object" [viewMode]="viewMode" [index]="i" [context]="context" [linkType]="linkType" <ds-themed-listable-object-component-loader [object]="object" [viewMode]="viewMode" [index]="i" [context]="context" [linkType]="linkType"
[listID]="selectionConfig?.listId" [listID]="selectionConfig?.listId"
(contentChange)="contentChange.emit()" (contentChange)="contentChange.emit()"
></ds-listable-object-component-loader> ></ds-themed-listable-object-component-loader>
</li> </li>
</ul> </ul>
</ds-pagination> </ds-pagination>

View File

@@ -173,6 +173,7 @@ import { BitstreamRequestACopyPageComponent } from './bitstream-request-a-copy-p
import { DsSelectComponent } from './ds-select/ds-select.component'; import { DsSelectComponent } from './ds-select/ds-select.component';
import { LogInOidcComponent } from './log-in/methods/oidc/log-in-oidc.component'; import { LogInOidcComponent } from './log-in/methods/oidc/log-in-oidc.component';
import { ThemedItemListPreviewComponent } from './object-list/my-dspace-result-list-element/item-list-preview/themed-item-list-preview.component'; import { ThemedItemListPreviewComponent } from './object-list/my-dspace-result-list-element/item-list-preview/themed-item-list-preview.component';
import { ThemedListableObjectComponentLoaderComponent } from './object-collection/shared/listable-object/themed-listable-object-component-loader.component';
const MODULES = [ const MODULES = [
// Do NOT include UniversalModule, HttpModule, or JsonpModule here // Do NOT include UniversalModule, HttpModule, or JsonpModule here
@@ -286,6 +287,7 @@ const COMPONENTS = [
CommunitySearchResultGridElementComponent, CommunitySearchResultGridElementComponent,
PageSizeSelectorComponent, PageSizeSelectorComponent,
ListableObjectComponentLoaderComponent, ListableObjectComponentLoaderComponent,
ThemedListableObjectComponentLoaderComponent,
CollectionListElementComponent, CollectionListElementComponent,
CommunityListElementComponent, CommunityListElementComponent,
CollectionGridElementComponent, CollectionGridElementComponent,

View File

@@ -0,0 +1,13 @@
import { Component } from '@angular/core';
import { ListableObjectComponentLoaderComponent as BaseComponent } from 'src/app/shared/object-collection/shared/listable-object/listable-object-component-loader.component';
@Component({
selector: 'ds-listable-object-component-loader',
// styleUrls: ['./listable-object-component-loader.component.scss'],
styleUrls: ['../../../../../../../app/shared/object-collection/shared/listable-object/listable-object-component-loader.component.scss'],
// templateUrl: './listable-object-component-loader.component.html'
templateUrl: '../../../../../../../app/shared/object-collection/shared/listable-object/listable-object-component-loader.component.html'
})
export class ListableObjectComponentLoaderComponent extends BaseComponent {
}

View File

@@ -86,6 +86,7 @@ import { ComcolModule } from '../../app/shared/comcol/comcol.module';
import { FeedbackComponent } from './app/info/feedback/feedback.component'; import { FeedbackComponent } from './app/info/feedback/feedback.component';
import { SearchFiltersComponent } from './app/shared/search/search-filters/search-filters.component'; import { SearchFiltersComponent } from './app/shared/search/search-filters/search-filters.component';
import { SearchSidebarComponent } from './app/shared/search/search-sidebar/search-sidebar.component'; import { SearchSidebarComponent } from './app/shared/search/search-sidebar/search-sidebar.component';
import { ListableObjectComponentLoaderComponent } from './app/shared/object-collection/shared/listable-object/listable-object-component-loader.component';
const DECLARATIONS = [ const DECLARATIONS = [
FileSectionComponent, FileSectionComponent,
@@ -131,6 +132,7 @@ const DECLARATIONS = [
FeedbackComponent, FeedbackComponent,
SearchFiltersComponent, SearchFiltersComponent,
SearchSidebarComponent, SearchSidebarComponent,
ListableObjectComponentLoaderComponent
]; ];
@NgModule({ @NgModule({