mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +00:00
[ADF-3864] Create library - no error is displayed when name contains white spaces only (#4101)
* only spaces error message * title custom error support * tests * validate title against only spaces * generate id only when title is valid
This commit is contained in:
committed by
Eugenio Romano
parent
b035193be5
commit
7f106f7a56
@@ -84,13 +84,17 @@ export class LibraryDialogComponent implements OnInit, OnDestroy {
|
||||
Validators.maxLength(72),
|
||||
this.forbidSpecialCharacters
|
||||
],
|
||||
title: [Validators.required, Validators.maxLength(256)],
|
||||
title: [
|
||||
Validators.required,
|
||||
this.forbidOnlySpaces,
|
||||
Validators.maxLength(256)
|
||||
],
|
||||
description: [Validators.maxLength(512)]
|
||||
};
|
||||
|
||||
this.form = this.formBuilder.group({
|
||||
title: ['', validators.title],
|
||||
id: ['', validators.id, this.createSiteIdValidator()],
|
||||
title: [null, validators.title],
|
||||
id: [null, validators.id, this.createSiteIdValidator()],
|
||||
description: ['', validators.description]
|
||||
});
|
||||
|
||||
@@ -106,11 +110,7 @@ export class LibraryDialogComponent implements OnInit, OnDestroy {
|
||||
takeUntil(this.onDestroy$)
|
||||
)
|
||||
.subscribe((title: string) => {
|
||||
if (!title.trim().length) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!this.form.controls['id'].dirty) {
|
||||
if (!this.form.controls['id'].dirty && this.canGenerateId(title)) {
|
||||
this.form.patchValue({ id: this.sanitize(title.trim()) });
|
||||
this.form.controls['id'].markAsTouched();
|
||||
}
|
||||
@@ -177,7 +177,11 @@ export class LibraryDialogComponent implements OnInit, OnDestroy {
|
||||
}
|
||||
|
||||
private sanitize(input: string) {
|
||||
return input.replace(/[\s]/g, '-').replace(/[^A-Za-z0-9-]/g, '');
|
||||
return input.replace(/[\s\s]+/g, '-').replace(/[^A-Za-z0-9-]/g, '');
|
||||
}
|
||||
|
||||
private canGenerateId(title) {
|
||||
return Boolean(title.replace(/[^A-Za-z0-9-]/g, '').length);
|
||||
}
|
||||
|
||||
private handleError(error: any): any {
|
||||
@@ -215,6 +219,10 @@ export class LibraryDialogComponent implements OnInit, OnDestroy {
|
||||
}
|
||||
|
||||
private forbidSpecialCharacters({ value }: FormControl) {
|
||||
if (value === null || value.length === 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const validCharacters: RegExp = /[^A-Za-z0-9-]/;
|
||||
const isValid: boolean = !validCharacters.test(value);
|
||||
|
||||
@@ -225,6 +233,20 @@ export class LibraryDialogComponent implements OnInit, OnDestroy {
|
||||
};
|
||||
}
|
||||
|
||||
private forbidOnlySpaces({ value }: FormControl) {
|
||||
if (value === null || value.length === 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const isValid: boolean = !!(value || '').trim();
|
||||
|
||||
return isValid
|
||||
? null
|
||||
: {
|
||||
message: 'LIBRARY.ERRORS.ONLY_SPACES'
|
||||
};
|
||||
}
|
||||
|
||||
private createSiteIdValidator() {
|
||||
let timer;
|
||||
|
||||
|
Reference in New Issue
Block a user