Merge remote-tracking branch 'templates/w2p-91874_Authority-control_contribute-7.2' into atmire-contributions-alex-7.5

# Conflicts:
#	src/app/shared/form/form.module.ts
#	src/app/shared/shared.module.ts
#	src/themes/custom/lazy-theme.module.ts
This commit is contained in:
Alexandre Vryghem
2023-02-22 13:51:27 +01:00
18 changed files with 250 additions and 10 deletions

View File

@@ -18,12 +18,12 @@
<!--[fields]="['project.identifier.status']"--> <!--[fields]="['project.identifier.status']"-->
<!--[label]="'project.page.status'">--> <!--[label]="'project.page.status'">-->
<!--</ds-generic-item-page-field>--> <!--</ds-generic-item-page-field>-->
<ds-metadata-representation-list <ds-themed-metadata-representation-list
[parentItem]="object" [parentItem]="object"
[itemType]="'OrgUnit'" [itemType]="'OrgUnit'"
[metadataFields]="['project.contributor.other']" [metadataFields]="['project.contributor.other']"
[label]="'project.page.contributor' | translate"> [label]="'project.page.contributor' | translate">
</ds-metadata-representation-list> </ds-themed-metadata-representation-list>
<ds-generic-item-page-field [item]="object" <ds-generic-item-page-field [item]="object"
[fields]="['project.identifier.funder']" [fields]="['project.identifier.funder']"
[label]="'project.page.funder'"> [label]="'project.page.funder'">

View File

@@ -13,6 +13,9 @@ import { MetadataValuesComponent } from './field-components/metadata-values/meta
import { GenericItemPageFieldComponent } from './simple/field-components/specific-field/generic/generic-item-page-field.component'; import { GenericItemPageFieldComponent } from './simple/field-components/specific-field/generic/generic-item-page-field.component';
import { MetadataRepresentationListComponent } from './simple/metadata-representation-list/metadata-representation-list.component'; import { MetadataRepresentationListComponent } from './simple/metadata-representation-list/metadata-representation-list.component';
import { RelatedItemsComponent } from './simple/related-items/related-items-component'; import { RelatedItemsComponent } from './simple/related-items/related-items-component';
import {
ThemedMetadataRepresentationListComponent
} from './simple/metadata-representation-list/themed-metadata-representation-list.component';
const ENTRY_COMPONENTS = [ const ENTRY_COMPONENTS = [
ItemVersionsDeleteModalComponent, ItemVersionsDeleteModalComponent,
@@ -27,6 +30,7 @@ const COMPONENTS = [
MetadataValuesComponent, MetadataValuesComponent,
GenericItemPageFieldComponent, GenericItemPageFieldComponent,
MetadataRepresentationListComponent, MetadataRepresentationListComponent,
ThemedMetadataRepresentationListComponent,
RelatedItemsComponent, RelatedItemsComponent,
]; ];

View File

@@ -25,12 +25,12 @@
</ng-container> </ng-container>
<ds-themed-item-page-file-section [item]="object"></ds-themed-item-page-file-section> <ds-themed-item-page-file-section [item]="object"></ds-themed-item-page-file-section>
<ds-item-page-date-field [item]="object"></ds-item-page-date-field> <ds-item-page-date-field [item]="object"></ds-item-page-date-field>
<ds-metadata-representation-list class="ds-item-page-mixed-author-field" <ds-themed-metadata-representation-list class="ds-item-page-mixed-author-field"
[parentItem]="object" [parentItem]="object"
[itemType]="'Person'" [itemType]="'Person'"
[metadataFields]="['dc.contributor.author', 'dc.creator']" [metadataFields]="['dc.contributor.author', 'dc.creator']"
[label]="'relationships.isAuthorOf' | translate"> [label]="'relationships.isAuthorOf' | translate">
</ds-metadata-representation-list> </ds-themed-metadata-representation-list>
<ds-generic-item-page-field [item]="object" <ds-generic-item-page-field [item]="object"
[fields]="['journal.title']" [fields]="['journal.title']"
[label]="'publication.page.journal-title'"> [label]="'publication.page.journal-title'">

View File

@@ -26,12 +26,12 @@
</ng-container> </ng-container>
<ds-themed-item-page-file-section [item]="object"></ds-themed-item-page-file-section> <ds-themed-item-page-file-section [item]="object"></ds-themed-item-page-file-section>
<ds-item-page-date-field [item]="object"></ds-item-page-date-field> <ds-item-page-date-field [item]="object"></ds-item-page-date-field>
<ds-metadata-representation-list class="ds-item-page-mixed-author-field" <ds-themed-metadata-representation-list class="ds-item-page-mixed-author-field"
[parentItem]="object" [parentItem]="object"
[itemType]="'Person'" [itemType]="'Person'"
[metadataFields]="['dc.contributor.author', 'dc.creator']" [metadataFields]="['dc.contributor.author', 'dc.creator']"
[label]="'relationships.isAuthorOf' | translate"> [label]="'relationships.isAuthorOf' | translate">
</ds-metadata-representation-list> </ds-themed-metadata-representation-list>
<ds-generic-item-page-field [item]="object" <ds-generic-item-page-field [item]="object"
[fields]="['journal.title']" [fields]="['journal.title']"
[label]="'item.page.journal-title'"> [label]="'item.page.journal-title'">

View File

@@ -0,0 +1,35 @@
import { ThemedComponent } from '../../../shared/theme-support/themed.component';
import { MetadataRepresentationListComponent } from './metadata-representation-list.component';
import { Component, Input } from '@angular/core';
import { Item } from '../../../core/shared/item.model';
@Component({
selector: 'ds-themed-metadata-representation-list',
styleUrls: [],
templateUrl: '../../../shared/theme-support/themed.component.html',
})
export class ThemedMetadataRepresentationListComponent extends ThemedComponent<MetadataRepresentationListComponent> {
protected inAndOutputNames: (keyof MetadataRepresentationListComponent & keyof this)[] = ['parentItem', 'itemType', 'metadataFields', 'label', 'incrementBy'];
@Input() parentItem: Item;
@Input() itemType: string;
@Input() metadataFields: string[];
@Input() label: string;
@Input() incrementBy = 10;
protected getComponentName(): string {
return 'MetadataRepresentationListComponent';
}
protected importThemedComponent(themeName: string): Promise<any> {
return import(`../../../../themes/${themeName}/app/item-page/simple/metadata-representation-list/metadata-representation-list.component`);
}
protected importUnthemedComponent(): Promise<any> {
return import(`./metadata-representation-list.component`);
}
}

View File

@@ -12,7 +12,7 @@
<li ngbNavItem> <li ngbNavItem>
<a ngbNavLink>{{'submission.sections.describe.relationship-lookup.search-tab.tab-title.' + relationshipOptions.relationshipType | translate : { count: (totalInternal$ | async)} }}</a> <a ngbNavLink>{{'submission.sections.describe.relationship-lookup.search-tab.tab-title.' + relationshipOptions.relationshipType | translate : { count: (totalInternal$ | async)} }}</a>
<ng-template ngbNavContent> <ng-template ngbNavContent>
<ds-dynamic-lookup-relation-search-tab <ds-themed-dynamic-lookup-relation-search-tab
[selection$]="selection$" [selection$]="selection$"
[listId]="listId" [listId]="listId"
[relationship]="relationshipOptions" [relationship]="relationshipOptions"
@@ -28,13 +28,13 @@
(deselectObject)="deselect($event)" (deselectObject)="deselect($event)"
(resultFound)="setTotalInternals($event.pageInfo.totalElements)" (resultFound)="setTotalInternals($event.pageInfo.totalElements)"
class="d-block pt-3"> class="d-block pt-3">
</ds-dynamic-lookup-relation-search-tab> </ds-themed-dynamic-lookup-relation-search-tab>
</ng-template> </ng-template>
</li> </li>
<li ngbNavItem *ngFor="let source of (externalSourcesRD$ | async); let idx = index"> <li ngbNavItem *ngFor="let source of (externalSourcesRD$ | async); let idx = index">
<a ngbNavLink>{{'submission.sections.describe.relationship-lookup.search-tab.tab-title.' + source.id | translate : { count: (totalExternal$ | async)[idx] } }}</a> <a ngbNavLink>{{'submission.sections.describe.relationship-lookup.search-tab.tab-title.' + source.id | translate : { count: (totalExternal$ | async)[idx] } }}</a>
<ng-template ngbNavContent> <ng-template ngbNavContent>
<ds-dynamic-lookup-relation-external-source-tab <ds-themed-dynamic-lookup-relation-external-source-tab
[label]="label" [label]="label"
[listId]="listId" [listId]="listId"
[repeatable]="repeatable" [repeatable]="repeatable"
@@ -45,7 +45,7 @@
[externalSource]="source" [externalSource]="source"
(importedObject)="imported($event)" (importedObject)="imported($event)"
class="d-block pt-3"> class="d-block pt-3">
</ds-dynamic-lookup-relation-external-source-tab> </ds-themed-dynamic-lookup-relation-external-source-tab>
</ng-template> </ng-template>
</li> </li>
<li ngbNavItem *ngIf="!isEditRelationship"> <li ngbNavItem *ngIf="!isEditRelationship">

View File

@@ -0,0 +1,62 @@
import { ThemedComponent } from '../../../../../theme-support/themed.component';
import { Component, EventEmitter, Input, Output } from '@angular/core';
import { RelationshipOptions } from '../../../models/relationship-options.model';
import { ListableObject } from '../../../../../object-collection/shared/listable-object.model';
import { Context } from '../../../../../../core/shared/context.model';
import { Item } from '../../../../../../core/shared/item.model';
import { SEARCH_CONFIG_SERVICE } from '../../../../../../my-dspace-page/my-dspace-page.component';
import { SearchConfigurationService } from '../../../../../../core/shared/search/search-configuration.service';
import { Collection } from '../../../../../../core/shared/collection.model';
import { ExternalSource } from '../../../../../../core/shared/external-source.model';
import { DsDynamicLookupRelationExternalSourceTabComponent } from './dynamic-lookup-relation-external-source-tab.component';
import { fadeIn, fadeInOut } from '../../../../../animations/fade';
@Component({
selector: 'ds-themed-dynamic-lookup-relation-external-source-tab',
styleUrls: [],
templateUrl: '../../../../../theme-support/themed.component.html',
providers: [
{
provide: SEARCH_CONFIG_SERVICE,
useClass: SearchConfigurationService
}
],
animations: [
fadeIn,
fadeInOut
]
})
export class ThemedDynamicLookupRelationExternalSourceTabComponent extends ThemedComponent<DsDynamicLookupRelationExternalSourceTabComponent> {
protected inAndOutputNames: (keyof DsDynamicLookupRelationExternalSourceTabComponent & keyof this)[] = ['label', 'listId',
'item', 'collection', 'relationship', 'context', 'repeatable', 'importedObject', 'externalSource'];
@Input() label: string;
@Input() listId: string;
@Input() item: Item;
@Input() collection: Collection;
@Input() relationship: RelationshipOptions;
@Input() context: Context;
@Input() repeatable: boolean;
@Output() importedObject: EventEmitter<ListableObject> = new EventEmitter<ListableObject>();
@Input() externalSource: ExternalSource;
protected getComponentName(): string {
return 'DsDynamicLookupRelationExternalSourceTabComponent';
}
protected importThemedComponent(themeName: string): Promise<any> {
return import(`../../../../../../../themes/${themeName}/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/dynamic-lookup-relation-external-source-tab.component`);
}
protected importUnthemedComponent(): Promise<any> {
return import(`./dynamic-lookup-relation-external-source-tab.component`);
}
}

View File

@@ -0,0 +1,71 @@
import { ThemedComponent } from '../../../../../theme-support/themed.component';
import { DsDynamicLookupRelationSearchTabComponent } from './dynamic-lookup-relation-search-tab.component';
import { Component, EventEmitter, Input, Output } from '@angular/core';
import { RelationshipOptions } from '../../../models/relationship-options.model';
import { Observable } from 'rxjs';
import { ListableObject } from '../../../../../object-collection/shared/listable-object.model';
import { Context } from '../../../../../../core/shared/context.model';
import { RelationshipType } from '../../../../../../core/shared/item-relationships/relationship-type.model';
import { Item } from '../../../../../../core/shared/item.model';
import { SearchResult } from '../../../../../search/models/search-result.model';
import { SearchObjects } from '../../../../../search/models/search-objects.model';
import { DSpaceObject } from '../../../../../../core/shared/dspace-object.model';
import { SEARCH_CONFIG_SERVICE } from '../../../../../../my-dspace-page/my-dspace-page.component';
import { SearchConfigurationService } from '../../../../../../core/shared/search/search-configuration.service';
@Component({
selector: 'ds-themed-dynamic-lookup-relation-search-tab',
styleUrls: [],
templateUrl: '../../../../../theme-support/themed.component.html',
providers: [
{
provide: SEARCH_CONFIG_SERVICE,
useClass: SearchConfigurationService
}
]
})
export class ThemedDynamicLookupRelationSearchTabComponent extends ThemedComponent<DsDynamicLookupRelationSearchTabComponent> {
protected inAndOutputNames: (keyof DsDynamicLookupRelationSearchTabComponent & keyof this)[] = ['relationship', 'listId',
'query', 'repeatable', 'selection$', 'context', 'relationshipType', 'item', 'isLeft', 'toRemove', 'isEditRelationship',
'deselectObject', 'selectObject', 'resultFound'];
@Input() relationship: RelationshipOptions;
@Input() listId: string;
@Input() query: string;
@Input() repeatable: boolean;
@Input() selection$: Observable<ListableObject[]>;
@Input() context: Context;
@Input() relationshipType: RelationshipType;
@Input() item: Item;
@Input() isLeft: boolean;
@Input() toRemove: SearchResult<Item>[];
@Input() isEditRelationship: boolean;
@Output() deselectObject: EventEmitter<ListableObject> = new EventEmitter<ListableObject>();
@Output() selectObject: EventEmitter<ListableObject> = new EventEmitter<ListableObject>();
@Output() resultFound: EventEmitter<SearchObjects<DSpaceObject>> = new EventEmitter<SearchObjects<DSpaceObject>>();
protected getComponentName(): string {
return 'DsDynamicLookupRelationSearchTabComponent';
}
protected importThemedComponent(themeName: string): Promise<any> {
return import(`../../../../../../../themes/${themeName}/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/search-tab/dynamic-lookup-relation-search-tab.component`);
}
protected importUnthemedComponent(): Promise<any> {
return import(`./dynamic-lookup-relation-search-tab.component`);
}
}

View File

@@ -40,6 +40,8 @@ import { NgxMaskModule } from 'ngx-mask';
import { ThemedExternalSourceEntryImportModalComponent } from './builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/external-source-entry-import-modal/themed-external-source-entry-import-modal.component'; import { ThemedExternalSourceEntryImportModalComponent } from './builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/external-source-entry-import-modal/themed-external-source-entry-import-modal.component';
import { NgbDatepickerModule, NgbTimepickerModule } from '@ng-bootstrap/ng-bootstrap'; import { NgbDatepickerModule, NgbTimepickerModule } from '@ng-bootstrap/ng-bootstrap';
import { CdkTreeModule } from '@angular/cdk/tree'; import { CdkTreeModule } from '@angular/cdk/tree';
import { ThemedDynamicLookupRelationSearchTabComponent } from './builder/ds-dynamic-form-ui/relation-lookup-modal/search-tab/themed-dynamic-lookup-relation-search-tab.component';
import { ThemedDynamicLookupRelationExternalSourceTabComponent } from './builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/themed-dynamic-lookup-relation-external-source-tab.component';
const COMPONENTS = [ const COMPONENTS = [
CustomSwitchComponent, CustomSwitchComponent,
@@ -48,8 +50,10 @@ const COMPONENTS = [
DsDynamicListComponent, DsDynamicListComponent,
DsDynamicLookupComponent, DsDynamicLookupComponent,
DsDynamicLookupRelationSearchTabComponent, DsDynamicLookupRelationSearchTabComponent,
ThemedDynamicLookupRelationSearchTabComponent,
DsDynamicLookupRelationSelectionTabComponent, DsDynamicLookupRelationSelectionTabComponent,
DsDynamicLookupRelationExternalSourceTabComponent, DsDynamicLookupRelationExternalSourceTabComponent,
ThemedDynamicLookupRelationExternalSourceTabComponent,
DsDynamicDisabledComponent, DsDynamicDisabledComponent,
DsDynamicLookupRelationModalComponent, DsDynamicLookupRelationModalComponent,
DsDynamicScrollableDropdownComponent, DsDynamicScrollableDropdownComponent,

View File

@@ -0,0 +1,11 @@
import { MetadataRepresentationListComponent as BaseComponent } from '../../../../../../app/item-page/simple/metadata-representation-list/metadata-representation-list.component';
import { Component } from '@angular/core';
@Component({
selector: 'ds-metadata-representation-list',
// templateUrl: './metadata-representation-list.component.html'
templateUrl: '../../../../../../app/item-page/simple/metadata-representation-list/metadata-representation-list.component.html'
})
export class MetadataRepresentationListComponent extends BaseComponent {
}

View File

@@ -0,0 +1,26 @@
import { DsDynamicLookupRelationExternalSourceTabComponent as BaseComponent } from '../../../../../../../../../app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/dynamic-lookup-relation-external-source-tab.component';
import { Component } from '@angular/core';
import { SEARCH_CONFIG_SERVICE } from '../../../../../../../../../app/my-dspace-page/my-dspace-page.component';
import { SearchConfigurationService } from '../../../../../../../../../app/core/shared/search/search-configuration.service';
import { fadeIn, fadeInOut } from '../../../../../../../../../app/shared/animations/fade';
@Component({
selector: 'ds-dynamic-lookup-relation-external-source-tab',
// styleUrls: ['./dynamic-lookup-relation-external-source-tab.component.scss'],
styleUrls: ['../../../../../../../../../app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/dynamic-lookup-relation-external-source-tab.component.scss'],
// templateUrl: './dynamic-lookup-relation-external-source-tab.component.html',
templateUrl: '../../../../../../../../../app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/dynamic-lookup-relation-external-source-tab.component.html',
providers: [
{
provide: SEARCH_CONFIG_SERVICE,
useClass: SearchConfigurationService
}
],
animations: [
fadeIn,
fadeInOut
]
})
export class DsDynamicLookupRelationExternalSourceTabComponent extends BaseComponent {
}

View File

@@ -0,0 +1,21 @@
import { DsDynamicLookupRelationSearchTabComponent as BaseComponent } from '../../../../../../../../../app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/search-tab/dynamic-lookup-relation-search-tab.component';
import { Component } from '@angular/core';
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-dynamic-lookup-relation-search-tab',
// styleUrls: ['./dynamic-lookup-relation-search-tab.component.scss'],
styleUrls: ['../../../../../../../../../app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/search-tab/dynamic-lookup-relation-search-tab.component.scss'],
// templateUrl: './dynamic-lookup-relation-search-tab.component.html',
templateUrl: '../../../../../../../../../app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/search-tab/dynamic-lookup-relation-search-tab.component.html',
providers: [
{
provide: SEARCH_CONFIG_SERVICE,
useClass: SearchConfigurationService
}
]
})
export class DsDynamicLookupRelationSearchTabComponent extends BaseComponent {
}

View File

@@ -130,6 +130,9 @@ import { ItemAlertsComponent } from './app/item-page/alerts/item-alerts.componen
import { import {
FullFileSectionComponent FullFileSectionComponent
} from './app/item-page/full/field-components/file-section/full-file-section.component'; } from './app/item-page/full/field-components/file-section/full-file-section.component';
import { MetadataRepresentationListComponent } from './app/item-page/simple/metadata-representation-list/metadata-representation-list.component';
import { DsDynamicLookupRelationSearchTabComponent } from './app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/search-tab/dynamic-lookup-relation-search-tab.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';
const DECLARATIONS = [ const DECLARATIONS = [
FileSectionComponent, FileSectionComponent,
@@ -189,6 +192,9 @@ const DECLARATIONS = [
DsoEditMetadataComponent, DsoEditMetadataComponent,
ItemAlertsComponent, ItemAlertsComponent,
FullFileSectionComponent, FullFileSectionComponent,
MetadataRepresentationListComponent,
DsDynamicLookupRelationSearchTabComponent,
DsDynamicLookupRelationExternalSourceTabComponent,
]; ];
@NgModule({ @NgModule({