Merge pull request #1319 from 4Science/DSC-192

edit item metadata fix
This commit is contained in:
Tim Donohue
2021-09-28 13:41:40 -05:00
committed by GitHub
5 changed files with 72 additions and 4 deletions

View File

@@ -4,7 +4,7 @@
<span >{{metadata?.key?.split('.').join('.&#8203;')}}</span> <span >{{metadata?.key?.split('.').join('.&#8203;')}}</span>
</div> </div>
<div *ngIf="(editable | async)" class="field-container"> <div *ngIf="(editable | async)" class="field-container">
<ds-validation-suggestions [suggestions]="(metadataFieldSuggestions | async)" <ds-validation-suggestions [disable]="fieldUpdate.changeType != 1" [suggestions]="(metadataFieldSuggestions | async)"
[(ngModel)]="metadata.key" [(ngModel)]="metadata.key"
[url]="this.url" [url]="this.url"
[metadata]="this.metadata" [metadata]="this.metadata"

View File

@@ -463,4 +463,43 @@ describe('EditInPlaceFieldComponent', () => {
}); });
}); });
describe('canEditMetadataField', () => {
describe('when the fieldUpdate\'s changeType is currently ADD', () => {
beforeEach(() => {
objectUpdatesService.isEditable.and.returnValue(observableOf(true));
comp.fieldUpdate.changeType = FieldChangeType.ADD;
fixture.detectChanges();
});
it('can edit metadata field', () => {
const disabledMetadataField = fixture.debugElement.query(By.css('ds-validation-suggestions'))
.componentInstance.disable;
expect(disabledMetadataField).toBe(false);
});
});
describe('when the fieldUpdate\'s changeType is currently REMOVE', () => {
beforeEach(() => {
objectUpdatesService.isEditable.and.returnValue(observableOf(true));
comp.fieldUpdate.changeType = FieldChangeType.REMOVE;
fixture.detectChanges();
});
it('can edit metadata field', () => {
const disabledMetadataField = fixture.debugElement.query(By.css('ds-validation-suggestions'))
.componentInstance.disable;
expect(disabledMetadataField).toBe(true);
});
});
describe('when the fieldUpdate\'s changeType is currently UPDATE', () => {
beforeEach(() => {
objectUpdatesService.isEditable.and.returnValue(observableOf(true));
comp.fieldUpdate.changeType = FieldChangeType.UPDATE;
fixture.detectChanges();
});
it('can edit metadata field', () => {
const disabledMetadataField = fixture.debugElement.query(By.css('ds-validation-suggestions'))
.componentInstance.disable;
expect(disabledMetadataField).toBe(true);
});
});
});
}); });

View File

@@ -3,7 +3,7 @@
(keydown.arrowdown)="shiftFocusDown($event)" (keydown.arrowdown)="shiftFocusDown($event)"
(keydown.arrowup)="shiftFocusUp($event)" (keydown.esc)="close()" (keydown.arrowup)="shiftFocusUp($event)" (keydown.esc)="close()"
(dsClickOutside)="checkIfValidInput(form);close();"> (dsClickOutside)="checkIfValidInput(form);close();">
<input #inputField type="text" formControlName="metadataNameField" attr.aria-labelledby="fieldName" [(ngModel)]="value" id="name" [name]="name" <input [readonly]="disable" #inputField type="text" formControlName="metadataNameField" attr.aria-labelledby="fieldName" [(ngModel)]="value" id="name" [name]="name"
class="form-control suggestion_input" class="form-control suggestion_input"
[ngClass]="{'is-invalid': !valid}" [ngClass]="{'is-invalid': !valid}"
[dsDebounce]="debounceTime" (onDebounce)="find($event)" [dsDebounce]="debounceTime" (onDebounce)="find($event)"

View File

@@ -60,4 +60,30 @@ describe('ValidationSuggestionsComponent', () => {
expect(comp.onClickSuggestion).toHaveBeenCalledWith(suggestions[clickedIndex].value); expect(comp.onClickSuggestion).toHaveBeenCalledWith(suggestions[clickedIndex].value);
}); });
}); });
describe('can edit input', () => {
describe('test input field readonly property when input disable is true', () => {
beforeEach(() => {
comp.disable = true;
fixture.detectChanges();
});
it('it should be true', () => {
fixture.detectChanges();
const input = fixture.debugElement.query(By.css('input'));
const element = input.nativeElement;
expect(element.readOnly).toBe(true);
});
});
describe('test input field readonly property when input disable is false', () => {
beforeEach(() => {
comp.disable = false;
fixture.detectChanges();
});
it('it should be true', () => {
fixture.detectChanges();
const input = fixture.debugElement.query(By.css('input'));
const element = input.nativeElement;
expect(element.readOnly).toBe(false);
});
});
});
}); });

View File

@@ -42,7 +42,10 @@ export class ValidationSuggestionsComponent extends InputSuggestionsComponent im
* The suggestions that should be shown * The suggestions that should be shown
*/ */
@Input() suggestions: InputSuggestion[] = []; @Input() suggestions: InputSuggestion[] = [];
/**
* The possibility to edit metadata
*/
@Input() disable;
constructor(private metadataFieldValidator: MetadataFieldValidator, constructor(private metadataFieldValidator: MetadataFieldValidator,
private objectUpdatesService: ObjectUpdatesService) { private objectUpdatesService: ObjectUpdatesService) {
super(); super();