mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-07 01:54:15 +00:00
Made ListableObjectComponentLoaderComponent themeable
This commit is contained in:
@@ -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>
|
||||||
|
@@ -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>
|
||||||
|
@@ -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">
|
||||||
|
@@ -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">
|
||||||
|
@@ -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}}
|
||||||
|
@@ -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>
|
||||||
|
@@ -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">
|
||||||
|
@@ -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);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@@ -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>
|
||||||
|
@@ -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"
|
||||||
|
@@ -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"
|
||||||
|
@@ -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>
|
||||||
|
@@ -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');
|
||||||
|
}
|
||||||
|
}
|
@@ -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>
|
||||||
|
@@ -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>
|
||||||
|
@@ -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>
|
||||||
|
@@ -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);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@@ -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>
|
||||||
|
@@ -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,
|
||||||
|
@@ -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 {
|
||||||
|
}
|
@@ -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({
|
||||||
|
Reference in New Issue
Block a user