Merge branch 'w2p-97184_theme-feedback_contribute-7.4' into w2p-97184_theme-feedback_contribute-main

This commit is contained in:
lotte
2023-01-23 12:54:14 +01:00
30 changed files with 229 additions and 47 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"
[index]="index"
[linkType]="linkType"
[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>

View File

@@ -1,10 +1,10 @@
<div class="workflow-badge">
<span class="badge badge-info">{{ "admin.workflow.item.workflow" | translate }}</span>
</div>
<ds-listable-object-component-loader *ngIf="item$ | async"
<ds-themed-listable-object-component-loader *ngIf="item$ | async"
[object]="item$ | async"
[viewMode]="viewModes.ListElement"
[index]="index"
[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>

View File

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

View File

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

View File

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

View File

@@ -4,7 +4,7 @@
<ds-item-alerts [item]="item"></ds-item-alerts>
<ds-item-versions-notice [item]="item"></ds-item-versions-notice>
<ds-view-tracker [object]="item"></ds-view-tracker>
<ds-listable-object-component-loader *ngIf="!item.isWithdrawn || (isAdmin$|async)" [object]="item" [viewMode]="viewMode"></ds-listable-object-component-loader>
<ds-themed-listable-object-component-loader *ngIf="!item.isWithdrawn || (isAdmin$|async)" [object]="item" [viewMode]="viewMode"></ds-themed-listable-object-component-loader>
<ds-item-versions class="mt-2" [item]="item" [displayActions]="false"></ds-item-versions>
</div>
</div>

View File

@@ -1,9 +1,9 @@
<ds-metadata-field-wrapper [label]="label" [ngClass]="placeholderFontClass">
<ng-container *ngFor="let objectPage of objects; let i = index">
<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">
</ds-listable-object-component-loader>
</ds-themed-listable-object-component-loader>
<ds-themed-loading *ngIf="(i + 1) === objects.length && (itemsRD || i > 0) && !(itemsRD?.hasSucceeded && itemsRD?.payload && itemsRD?.payload?.page?.length > 0)" message="{{'loading.default' | translate}}"></ds-themed-loading>
<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">

View File

@@ -76,7 +76,7 @@ describe('RelatedItemsComponent', () => {
}));
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);
});

View File

@@ -0,0 +1,49 @@
import { NgModule } from '@angular/core';
import { SharedModule } from '../shared/shared.module';
import { ProcessPageRoutingModule } from './process-page-routing.module';
import { NewProcessComponent } from './new/new-process.component';
import { ScriptsSelectComponent } from './form/scripts-select/scripts-select.component';
import { ScriptHelpComponent } from './form/script-help/script-help.component';
import { ParameterSelectComponent } from './form/process-parameters/parameter-select/parameter-select.component';
import { ProcessParametersComponent } from './form/process-parameters/process-parameters.component';
import { StringValueInputComponent } from './form/process-parameters/parameter-value-input/string-value-input/string-value-input.component';
import { ParameterValueInputComponent } from './form/process-parameters/parameter-value-input/parameter-value-input.component';
import { FileValueInputComponent } from './form/process-parameters/parameter-value-input/file-value-input/file-value-input.component';
import { BooleanValueInputComponent } from './form/process-parameters/parameter-value-input/boolean-value-input/boolean-value-input.component';
import { DateValueInputComponent } from './form/process-parameters/parameter-value-input/date-value-input/date-value-input.component';
import { ProcessOverviewComponent } from './overview/process-overview.component';
import { ProcessDetailComponent } from './detail/process-detail.component';
import { ProcessDetailFieldComponent } from './detail/process-detail-field/process-detail-field.component';
import { ProcessBreadcrumbsService } from './process-breadcrumbs.service';
import { ProcessBreadcrumbResolver } from './process-breadcrumb.resolver';
import { ProcessFormComponent } from './form/process-form.component';
@NgModule({
imports: [
SharedModule,
],
declarations: [
NewProcessComponent,
ScriptsSelectComponent,
ScriptHelpComponent,
ParameterSelectComponent,
ProcessParametersComponent,
StringValueInputComponent,
ParameterValueInputComponent,
FileValueInputComponent,
BooleanValueInputComponent,
DateValueInputComponent,
ProcessOverviewComponent,
ProcessDetailComponent,
ProcessDetailFieldComponent,
ProcessFormComponent
],
providers: [
ProcessBreadcrumbResolver,
ProcessBreadcrumbsService
]
})
export class ProcessPageSharedModule {
}

View File

@@ -17,31 +17,17 @@ import { ProcessDetailFieldComponent } from './detail/process-detail-field/proce
import { ProcessBreadcrumbsService } from './process-breadcrumbs.service';
import { ProcessBreadcrumbResolver } from './process-breadcrumb.resolver';
import { ProcessFormComponent } from './form/process-form.component';
import { ProcessPageSharedModule } from './process-page-shared.module';
@NgModule({
imports: [
ProcessPageRoutingModule,
SharedModule,
ProcessPageSharedModule,
],
declarations: [
NewProcessComponent,
ScriptsSelectComponent,
ScriptHelpComponent,
ParameterSelectComponent,
ProcessParametersComponent,
StringValueInputComponent,
ParameterValueInputComponent,
FileValueInputComponent,
BooleanValueInputComponent,
DateValueInputComponent,
ProcessOverviewComponent,
ProcessDetailComponent,
ProcessDetailFieldComponent,
ProcessFormComponent
],
providers: [
ProcessBreadcrumbResolver,
ProcessBreadcrumbsService
]
})

View File

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

View File

@@ -4,7 +4,7 @@
<ds-themed-loading [showMessage]="false"></ds-themed-loading>
</ng-container>
<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>
</div>
<button type="button" class="btn btn-secondary"

View File

@@ -14,7 +14,7 @@
<div class="dropdown-list">
<div *ngFor="let suggestionOption of suggestions">
<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>
</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

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

View File

@@ -19,7 +19,7 @@
<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-element" *ngFor="let object of column" [attr.data-test]="'grid-object' | dsBrowserOnly">
<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>

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', () => {
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);
});

View File

@@ -25,9 +25,9 @@
<ds-importable-list-item-control *ngIf="importable" [object]="object"
[importConfig]="importConfig"
(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"
(contentChange)="contentChange.emit($event)"></ds-listable-object-component-loader>
(contentChange)="contentChange.emit($event)"></ds-themed-listable-object-component-loader>
</li>
</ul>
</ds-pagination>

View File

@@ -0,0 +1,51 @@
import { Component, EventEmitter, Input, Output } from '@angular/core';
import { ThemedComponent } from '../../theme-support/themed.component';
import { SearchSidebarComponent } from './search-sidebar.component';
import { SearchConfigurationOption } from '../search-switch-configuration/search-configuration-option.model';
import { SortOptions } from '../../../core/cache/models/sort-options.model';
import { ViewMode } from '../../../core/shared/view-mode.model';
import { PaginatedSearchOptions } from '../models/paginated-search-options.model';
import { Observable } from 'rxjs';
/**
* Themed wrapper for SearchSidebarComponent
*/
@Component({
selector: 'ds-themed-search-sidebar',
styleUrls: [],
templateUrl: '../../theme-support/themed.component.html',
})
export class ThemedSearchSidebarComponent extends ThemedComponent<SearchSidebarComponent> {
@Input() configuration;
@Input() configurationList: SearchConfigurationOption[];
@Input() currentScope: string;
@Input() currentSortOption: SortOptions;
@Input() resultCount;
@Input() viewModeList: ViewMode[];
@Input() showViewModes = true;
@Input() inPlaceSearch;
@Input() searchOptions: PaginatedSearchOptions;
@Input() sortOptionsList: SortOptions[];
@Input() refreshFilters: Observable<any>;
@Output() toggleSidebar = new EventEmitter<boolean>();
@Output() changeConfiguration: EventEmitter<SearchConfigurationOption> = new EventEmitter<SearchConfigurationOption>();
@Output() changeViewMode: EventEmitter<ViewMode> = new EventEmitter<ViewMode>();
protected inAndOutputNames: (keyof SearchSidebarComponent & keyof this)[] = [
'configuration', 'configurationList', 'currentScope', 'currentSortOption',
'resultCount', 'viewModeList', 'showViewModes', 'inPlaceSearch',
'searchOptions', 'sortOptionsList', 'refreshFilters', 'toggleSidebar', 'changeConfiguration', 'changeViewMode'];
protected getComponentName(): string {
return 'SearchSidebarComponent';
}
protected importThemedComponent(themeName: string): Promise<any> {
return import(`../../../../themes/${themeName}/app/shared/search/search-sidebar/search-sidebar.component`);
}
protected importUnthemedComponent(): Promise<any> {
return import('./search-sidebar.component');
}
}

View File

@@ -45,7 +45,7 @@
</ng-template>
<ng-template #sidebarContent>
<ds-search-sidebar id="search-sidebar" *ngIf="!(isXsOrSm$ | async)"
<ds-themed-search-sidebar id="search-sidebar" *ngIf="!(isXsOrSm$ | async)"
[configurationList]="configurationList"
[configuration]="(currentConfiguration$ | async)"
[currentScope]="(currentScope$ | async)"
@@ -59,8 +59,8 @@
[viewModeList]="viewModeList"
[showViewModes]="showViewModes"
(changeConfiguration)="changeContext($event.context)"
(changeViewMode)="changeViewMode()"></ds-search-sidebar>
<ds-search-sidebar id="search-sidebar-sm" *ngIf="(isXsOrSm$ | async)"
(changeViewMode)="changeViewMode()"></ds-themed-search-sidebar>
<ds-themed-search-sidebar id="search-sidebar-sm" *ngIf="(isXsOrSm$ | async)"
[configurationList]="configurationList"
[configuration]="(currentConfiguration$ | async)"
[currentScope]="(currentScope$ | async)"
@@ -75,7 +75,7 @@
(toggleSidebar)="closeSidebar()"
(changeConfiguration)="changeContext($event.context)"
(changeViewMode)="changeViewMode()">
</ds-search-sidebar>
</ds-themed-search-sidebar>
</ng-template>
<ng-template #searchForm>

View File

@@ -33,6 +33,7 @@ import { ThemedSearchResultsComponent } from './search-results/themed-search-res
import { ThemedSearchSettingsComponent } from './search-settings/themed-search-settings.component';
import { NouisliderModule } from 'ng2-nouislider';
import { ThemedSearchFiltersComponent } from './search-filters/themed-search-filters.component';
import { ThemedSearchSidebarComponent } from './search-sidebar/themed-search-sidebar.component';
const COMPONENTS = [
SearchComponent,
@@ -60,6 +61,7 @@ const COMPONENTS = [
ThemedSearchResultsComponent,
ThemedSearchSettingsComponent,
ThemedSearchFiltersComponent,
ThemedSearchSidebarComponent,
];
const ENTRY_COMPONENTS = [

View File

@@ -245,6 +245,7 @@ import { ThemedCollectionDropdownComponent } from './collection-dropdown/themed-
import { MetadataFieldWrapperComponent } from './metadata-field-wrapper/metadata-field-wrapper.component';
import { LogInExternalProviderComponent } from './log-in/methods/log-in-external-provider/log-in-external-provider.component';
import { ThemedListableObjectComponentLoaderComponent } from './object-collection/shared/listable-object/themed-listable-object-component-loader.component';
const MODULES = [
CommonModule,
@@ -322,6 +323,7 @@ const COMPONENTS = [
SearchExportCsvComponent,
PageSizeSelectorComponent,
ListableObjectComponentLoaderComponent,
ThemedListableObjectComponentLoaderComponent,
AbstractTrackableComponent,
ComcolMetadataComponent,
TypeBadgeComponent,

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

@@ -0,0 +1,32 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE_ATMIRE and NOTICE_ATMIRE files at the root of the source
* tree and available online at
*
* https://www.atmire.com/software-license/
*/
import { Component } from '@angular/core';
import {
SearchSidebarComponent as BaseComponent,
} from '../../../../../../app/shared/search/search-sidebar/search-sidebar.component';
import { SEARCH_CONFIG_SERVICE } from '../../../../../../app/my-dspace-page/my-dspace-page.component';
import { SearchConfigurationService } from '../../../../../../app/core/shared/search/search-configuration.service';
@Component({
selector: 'ds-search-sidebar',
// styleUrls: ['./search-sidebar.component.scss'],
styleUrls: ['../../../../../../app/shared/search/search-sidebar/search-sidebar.component.scss'],
// templateUrl: './search-sidebar.component.html',
templateUrl: '../../../../../../app/shared/search/search-sidebar/search-sidebar.component.html',
providers: [
{
provide: SEARCH_CONFIG_SERVICE,
useClass: SearchConfigurationService
}
]
})
export class SearchSidebarComponent extends BaseComponent {
}

View File

@@ -120,6 +120,8 @@ import {
import { ItemVersionsModule } from '../../app/item-page/versions/item-versions.module';
import { ItemSharedModule } from '../../app/item-page/item-shared.module';
import { SearchFiltersComponent } from './app/shared/search/search-filters/search-filters.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 = [
FileSectionComponent,
@@ -176,6 +178,8 @@ const DECLARATIONS = [
BrowseByTitlePageComponent,
ExternalSourceEntryImportModalComponent,
SearchFiltersComponent,
SearchSidebarComponent,
ListableObjectComponentLoaderComponent
];
@NgModule({