Skip to content

Commit 4769e8a

Browse files
FrancescoMolinarodavide-negretti
authored andcommitted
[DSC-1542] improve select button behavior, disable field, add translations
1 parent 4d840b5 commit 4769e8a

4 files changed

Lines changed: 32 additions & 7 deletions

File tree

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/resource-policies/form/resource-policy-form.component.html

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,19 @@
77
[displayCancel]="false"></ds-form>
88
<div class="container-fluid">
99
<label for="ResourcePolicyObject">{{'resource-policies.form.eperson-group-list.label' | translate}}</label>
10-
<input id="ResourcePolicyObject" class="form-control mb-3" type="text" [value]="resourcePolicyTargetName$ | async">
10+
<input id="ResourcePolicyObject" class="form-control mb-3" type="text" [value]="resourcePolicyTargetName$ | async" disabled>
1111
<ul ngbNav #nav="ngbNav" class="nav-pills" [(activeId)]="navActiveId" (navChange)="onNavChange($event)">
1212
<li [ngbNavItem]="'eperson'">
1313
<a ngbNavLink>{{'resource-policies.form.eperson-group-list.tab.eperson' | translate}}</a>
1414
<ng-template ngbNavContent>
15-
<ds-eperson-group-list (select)="updateObjectSelected($event, true)"></ds-eperson-group-list>
15+
<ds-eperson-group-list (deselect)="updateObjectSelected($event, false, true)" (select)="updateObjectSelected($event, true)"></ds-eperson-group-list>
1616
</ng-template>
1717
</li>
1818
<li [ngbNavItem]="'group'">
1919
<a ngbNavLink>{{'resource-policies.form.eperson-group-list.tab.group' | translate}}</a>
2020
<ng-template ngbNavContent>
2121
<ds-eperson-group-list [isListOfEPerson]="false"
22+
(deselect)="updateObjectSelected($event, false, true)"
2223
(select)="updateObjectSelected($event, false)"></ds-eperson-group-list>
2324
</ng-template>
2425
</li>

src/app/shared/resource-policies/form/resource-policy-form.component.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -275,11 +275,17 @@ export class ResourcePolicyFormComponent implements OnInit, OnDestroy {
275275
/**
276276
* Update reference to the eperson or group that will be granted the permission
277277
*/
278-
updateObjectSelected(object: DSpaceObject, isEPerson: boolean): void {
278+
updateObjectSelected(object: DSpaceObject, isEPerson: boolean, deselect = false): void {
279279
this.resourcePolicyTargetUpdated = true;
280-
this.resourcePolicyGrant = object;
281280
this.resourcePolicyGrantType = isEPerson ? 'eperson' : 'group';
282-
this.resourcePolicyTargetName$.next(this.getResourcePolicyTargetName());
281+
282+
if (deselect) {
283+
this.resourcePolicyGrant = null;
284+
this.resourcePolicyTargetName$.next(null);
285+
} else {
286+
this.resourcePolicyGrant = object;
287+
this.resourcePolicyTargetName$.next(this.getResourcePolicyTargetName());
288+
}
283289
}
284290

285291
/**

0 commit comments

Comments
 (0)