Skip to content

Commit fece8f3

Browse files
committed
Merged dspace-cris-2023_02_x into task/dspace-cris-2023_02_x/DSC-1677
2 parents 5f44e68 + 63f5072 commit fece8f3

48 files changed

Lines changed: 837 additions & 347 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "dspace-angular",
3-
"version": "2023.02.05-SNAPSHOT",
3+
"version": "2023.02.06-SNAPHOT",
44
"scripts": {
55
"ng": "ng",
66
"config:watch": "nodemon",

src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.html

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,24 +11,32 @@
1111
</span>
1212
</div>
1313
<div [ngClass]="showThumbnails ? 'col-9 col-xl-10' : 'col-md-12'">
14-
<ds-themed-badges *ngIf="showLabel" [object]="dso" [context]="context"></ds-themed-badges>
15-
<ds-truncatable [id]="dso.id">
16-
<a *ngIf="linkType != linkTypes.None" [target]="(linkType == linkTypes.ExternalLink) ? '_blank' : '_self'" [attr.rel]="(linkType == linkTypes.ExternalLink) ? 'noopener noreferrer' : null"
17-
[routerLink]="[itemPageRoute]" class="lead item-list-title dont-break-out"
18-
[innerHTML]="dsoTitle"></a>
19-
<span *ngIf="linkType == linkTypes.None"
20-
class="lead item-list-title dont-break-out"
21-
[innerHTML]="dsoTitle"></span>
22-
<span class="text-muted">
23-
<ds-truncatable-part [id]="dso.id" [minLines]="1">
24-
<span *ngIf="dso.allMetadata(['creativeworkseries.issn']).length > 0"
25-
class="item-list-journals">
26-
<span *ngFor="let value of allMetadataValues(['creativeworkseries.issn']); let last=last;">
27-
<span [innerHTML]="value"><span [innerHTML]="value"></span></span>
28-
</span>
29-
</span>
30-
</ds-truncatable-part>
31-
</span>
32-
</ds-truncatable>
14+
<div class="d-flex justify-content-between">
15+
<div class="flex-fill">
16+
<ds-themed-badges *ngIf="showLabel" [object]="dso" [context]="context"></ds-themed-badges>
17+
<ds-truncatable [id]="dso.id">
18+
<a *ngIf="linkType != linkTypes.None" [target]="(linkType == linkTypes.ExternalLink) ? '_blank' : '_self'" [attr.rel]="(linkType == linkTypes.ExternalLink) ? 'noopener noreferrer' : null"
19+
[routerLink]="[itemPageRoute]" class="lead item-list-title dont-break-out"
20+
[innerHTML]="dsoTitle"></a>
21+
<span *ngIf="linkType == linkTypes.None"
22+
class="lead item-list-title dont-break-out"
23+
[innerHTML]="dsoTitle"></span>
24+
<span class="text-muted">
25+
<ds-truncatable-part [id]="dso.id" [minLines]="1">
26+
<span *ngIf="dso.allMetadata(['creativeworkseries.issn']).length > 0"
27+
class="item-list-journals">
28+
<span *ngFor="let value of allMetadataValues(['creativeworkseries.issn']); let last=last;">
29+
<span [innerHTML]="value"><span [innerHTML]="value"></span></span>
30+
</span>
31+
</span>
32+
</ds-truncatable-part>
33+
</span>
34+
</ds-truncatable>
35+
<ds-metric-badges *ngIf="showMetrics" class="d-block clearfix" [item]="dso"></ds-metric-badges>
36+
</div>
37+
<div class="align-self-center">
38+
<ds-metric-donuts [item]="dso"></ds-metric-donuts>
39+
</div>
40+
</div>
3341
</div>
3442
</div>

src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.html

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -18,21 +18,29 @@
1818
</span>
1919
</div>
2020
<div [ngClass]="showThumbnails ? 'col-9 col-xl-10' : 'col-md-12'">
21-
<ds-themed-badges *ngIf="showLabel" [object]="dso" [context]="context"></ds-themed-badges>
22-
<ds-truncatable [id]="dso.id">
23-
<a *ngIf="linkType != linkTypes.None" [target]="(linkType == linkTypes.ExternalLink) ? '_blank' : '_self'"
24-
[attr.rel]="(linkType == linkTypes.ExternalLink) ? 'noopener noreferrer' : null"
25-
[routerLink]="[itemPageRoute]" class="lead"
26-
[innerHTML]="dsoTitle || ('orgunit.listelement.no-title' | translate)"></a>
27-
<span *ngIf="linkType == linkTypes.None"
28-
class="lead"
29-
[innerHTML]="dsoTitle || ('orgunit.listelement.no-title' | translate)"></span>
30-
<div *ngIf="dso.allMetadata(['dc.description.*']).length > 0" class="text-muted">
31-
<ds-truncatable-part [id]="dso.id" [minLines]="3">
32-
<span class="item-list-org-unit-description" [innerHTML]="firstMetadataValue('dc.description.abstract')"></span>
33-
</ds-truncatable-part>
34-
</div>
35-
<ds-additional-metadata [object]="dso"></ds-additional-metadata>
36-
</ds-truncatable>
21+
<div class="d-flex justify-content-between">
22+
<div class="flex-fill">
23+
<ds-themed-badges *ngIf="showLabel" [object]="dso" [context]="context"></ds-themed-badges>
24+
<ds-truncatable [id]="dso.id">
25+
<a *ngIf="linkType != linkTypes.None" [target]="(linkType == linkTypes.ExternalLink) ? '_blank' : '_self'"
26+
[attr.rel]="(linkType == linkTypes.ExternalLink) ? 'noopener noreferrer' : null"
27+
[routerLink]="[itemPageRoute]" class="lead"
28+
[innerHTML]="dsoTitle || ('orgunit.listelement.no-title' | translate)"></a>
29+
<span *ngIf="linkType == linkTypes.None"
30+
class="lead"
31+
[innerHTML]="dsoTitle || ('orgunit.listelement.no-title' | translate)"></span>
32+
<div *ngIf="dso.allMetadata(['dc.description.*']).length > 0" class="text-muted">
33+
<ds-truncatable-part [id]="dso.id" [minLines]="3">
34+
<span class="item-list-org-unit-description" [innerHTML]="firstMetadataValue('dc.description.abstract')"></span>
35+
</ds-truncatable-part>
36+
</div>
37+
<ds-additional-metadata [object]="dso"></ds-additional-metadata>
38+
</ds-truncatable>
39+
<ds-metric-badges *ngIf="showMetrics" class="d-block clearfix" [item]="dso"></ds-metric-badges>
40+
</div>
41+
<div class="align-self-center" *ngIf="showMetrics">
42+
<ds-metric-donuts [item]="dso"></ds-metric-donuts>
43+
</div>
3744
</div>
45+
</div>
3846
</div>

src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
</div>
4242
<ds-additional-metadata [object]="dso"></ds-additional-metadata>
4343
</ds-truncatable>
44+
<ds-metric-badges *ngIf="showMetrics" class="d-block clearfix" [item]="dso"></ds-metric-badges>
4445
</div>
4546
<div class="align-self-center" *ngIf="showMetrics">
4647
<ds-metric-donuts [item]="dso"></ds-metric-donuts>

src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.html

Lines changed: 29 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -18,26 +18,34 @@
1818
</span>
1919
</div>
2020
<div [ngClass]="showThumbnails ? 'col-9 col-xl-10' : 'col-md-12'">
21-
<ds-truncatable [id]="dso.id">
22-
<ds-themed-badges *ngIf="showLabel" [object]="dso" [context]="context"></ds-themed-badges>
23-
<a *ngIf="linkType != linkTypes.None" [target]="(linkType == linkTypes.ExternalLink) ? '_blank' : '_self'"
24-
[attr.rel]="(linkType == linkTypes.ExternalLink) ? 'noopener noreferrer' : null"
25-
[routerLink]="[itemPageRoute]" class="lead item-list-title dont-break-out"
26-
[innerHTML]="dsoTitle"></a>
27-
<span *ngIf="linkType == linkTypes.None"
28-
class="lead item-list-title dont-break-out"
29-
[innerHTML]="dsoTitle"></span>
30-
<!--<span class="text-muted">-->
31-
<!--<ds-truncatable-part [id]="dso.id" [minLines]="1">-->
32-
<!--<span *ngIf="dso.allMetadata(['project.identifier.status']).length > 0"-->
33-
<!--class="item-list-status">-->
34-
<!--<span *ngFor="let value of allMetadataValues(['project.identifier.status']); let last=last;">-->
35-
<!--<span [innerHTML]="value"><span [innerHTML]="value"></span></span>-->
36-
<!--</span>-->
37-
<!--</span>-->
38-
<!--</ds-truncatable-part>-->
39-
<!--</span>-->
40-
<ds-additional-metadata [object]="dso"></ds-additional-metadata>
41-
</ds-truncatable>
21+
<div class="d-flex justify-content-between">
22+
<div class="flex-fill">
23+
<ds-truncatable [id]="dso.id">
24+
<ds-themed-badges *ngIf="showLabel" [object]="dso" [context]="context"></ds-themed-badges>
25+
<a *ngIf="linkType != linkTypes.None" [target]="(linkType == linkTypes.ExternalLink) ? '_blank' : '_self'"
26+
[attr.rel]="(linkType == linkTypes.ExternalLink) ? 'noopener noreferrer' : null"
27+
[routerLink]="[itemPageRoute]" class="lead item-list-title dont-break-out"
28+
[innerHTML]="dsoTitle"></a>
29+
<span *ngIf="linkType == linkTypes.None"
30+
class="lead item-list-title dont-break-out"
31+
[innerHTML]="dsoTitle"></span>
32+
<!--<span class="text-muted">-->
33+
<!--<ds-truncatable-part [id]="dso.id" [minLines]="1">-->
34+
<!--<span *ngIf="dso.allMetadata(['project.identifier.status']).length > 0"-->
35+
<!--class="item-list-status">-->
36+
<!--<span *ngFor="let value of allMetadataValues(['project.identifier.status']); let last=last;">-->
37+
<!--<span [innerHTML]="value"><span [innerHTML]="value"></span></span>-->
38+
<!--</span>-->
39+
<!--</span>-->
40+
<!--</ds-truncatable-part>-->
41+
<!--</span>-->
42+
<ds-additional-metadata [object]="dso"></ds-additional-metadata>
43+
</ds-truncatable>
44+
<ds-metric-badges *ngIf="showMetrics" class="d-block clearfix" [item]="dso"></ds-metric-badges>
45+
</div>
46+
<div class="align-self-center">
47+
<ds-metric-donuts [item]="dso"></ds-metric-donuts>
48+
</div>
49+
</div>
4250
</div>
4351
</div>

src/app/register-page/create-profile/create-profile.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ <h3 class="mb-4">{{'register-page.create-profile.header' | translate}}</h3>
1414
<div class="card-body">
1515
<div class="row">
1616
<div class="col-12">
17-
<label class="font-weight-bold"
17+
<label class="font-weight-bold mr-4"
1818
for="email">{{'register-page.create-profile.identification.email' | translate}}</label>
1919
<span id="email">{{(registration$ |async).email}}</span></div>
2020
</div>

src/app/shared/eperson-group-list/eperson-group-list.component.html

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,12 @@
2323
<td>{{entry.id}}</td>
2424
<td>{{dsoNameService.getName(entry)}}</td>
2525
<td class="text-center">
26-
<button class="btn btn-sm btn-outline-primary" (click)="emitSelect(entry)">
26+
<button class="btn btn-sm btn-outline-primary" *ngIf="!(isSelected(entry) | async)" (click)="emitSelect(entry)">
2727
{{'resource-policies.form.eperson-group-list.select.btn' | translate}}
2828
</button>
29+
<button class="btn btn-sm btn-primary" *ngIf="isSelected(entry) | async" (click)="emitDeselect(entry)">
30+
{{'resource-policies.form.eperson-group-list.deselect.btn' | translate}}
31+
</button>
2932
</td>
3033
</tr>
3134
</tbody>

src/app/shared/eperson-group-list/eperson-group-list.component.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,12 @@ export class EpersonGroupListComponent implements OnInit, OnDestroy {
5555
*/
5656
@Output() select: EventEmitter<DSpaceObject> = new EventEmitter<DSpaceObject>();
5757

58+
/**
59+
* An event fired when a eperson or group is deselected.
60+
* Event's payload equals to DSpaceObject.
61+
*/
62+
@Output() deselect: EventEmitter<DSpaceObject> = new EventEmitter<DSpaceObject>();
63+
5864
/**
5965
* Current search query
6066
*/
@@ -204,5 +210,14 @@ export class EpersonGroupListComponent implements OnInit, OnDestroy {
204210
this.paginationService.clearPagination(this.paginationOptions.id);
205211
}
206212

207-
213+
/**
214+
* Method called when an entry is deselected.
215+
* Emit a new select Event
216+
*
217+
* @param entry The eperson or group selected
218+
*/
219+
emitDeselect(entry: DSpaceObject) {
220+
this.deselect.emit(entry);
221+
this.entrySelectedId.next(null);
222+
}
208223
}

src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.html

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,9 @@
1919
<div>
2020
<ng-container #componentViewContainer></ng-container>
2121
</div>
22-
<small
23-
*ngIf="hasHint &&
22+
<div class="d-flex flex-column w-100">
23+
<small
24+
*ngIf="hasHint &&
2425
(formBuilderService.hasArrayGroupValue(model) ||
2526
(
2627
(!model.repeatable
@@ -31,8 +32,12 @@
3132
|| (model.repeatable === true && context?.index === context?.context?.groups?.length - 1 )
3233
|| hasHintAndIsRepeatable
3334
|| (model.type==='TAG')) && (!showErrorMessages || errorMessages.length === 0)"
34-
class="text-muted ds-hint" [innerHTML]="model.hint | translate" [ngClass]="getClass('element', 'hint')"
35-
></small>
35+
class="text-muted ds-hint" [innerHTML]="model.hint | translate" [ngClass]="getClass('element', 'hint')"
36+
></small>
37+
<small class="text-muted mt-2" *ngIf="formBuilderService.isScrollableDropdown(model) && enabledDropdownHints[model?.metadataFields[0]] && (model.value?.value) !== null">
38+
<i class="fas fa-info-circle mr-2"></i>{{'submission.dropdown.hint.' + model.value?.value | translate}}
39+
</small>
40+
</div>
3641
<!-- In case of repeatable fields show empty space for all elements except the first -->
3742
<!-- In case of not repeatable field with multiple values show empty space for all elements except the last -->
3843
<div *ngIf="(context?.index !== null && (!showErrorMessages || errorMessages.length === 0)) || (!hasHint && !showErrorMessages) ||

src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.spec.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ import { FormBuilderService } from '../form-builder.service';
8282
import { NgxMaskModule } from 'ngx-mask';
8383
import { APP_CONFIG } from '../../../../../config/app-config.interface';
8484
import { environment } from '../../../../../environments/environment';
85+
import { getMockFormBuilderService } from '../../../mocks/form-builder-service.mock';
8586

8687
function getMockDsDynamicTypeBindRelationService(): DsDynamicTypeBindRelationService {
8788
return jasmine.createSpyObj('DsDynamicTypeBindRelationService', {
@@ -246,7 +247,7 @@ describe('DsDynamicFormControlContainerComponent test suite', () => {
246247
{ provide: RelationshipDataService, useValue: {} },
247248
{ provide: SelectableListService, useValue: {} },
248249
{ provide: FormService, useValue: {} },
249-
{ provide: FormBuilderService, useValue: {} },
250+
{ provide: FormBuilderService, useValue: getMockFormBuilderService() },
250251
{ provide: SubmissionService, useValue: {} },
251252
{
252253
provide: SubmissionObjectDataService,

0 commit comments

Comments
 (0)