Skip to content

Commit eeafb3c

Browse files
authored
Merge pull request #18092 from umbraco/v15/feature/reject-validation-promise
Feature: Clean up validation messages
2 parents 151e0a8 + ec50891 commit eeafb3c

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

src/Umbraco.Web.UI.Client/src/packages/core/validation/context/server-model-validator.context.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ export class UmbServerModelValidatorContext
2424
{
2525
#validatePromise?: Promise<void>;
2626
#validatePromiseResolve?: () => void;
27+
#validatePromiseReject?: () => void;
2728

2829
#context?: typeof UMB_VALIDATION_CONTEXT.TYPE;
2930
#isValid = true;
@@ -50,9 +51,10 @@ export class UmbServerModelValidatorContext
5051
this.#context?.messages.removeMessagesByType('server');
5152

5253
this.#isValid = false;
53-
//this.#validatePromiseReject?.();
54-
this.#validatePromise = new Promise<void>((resolve) => {
54+
this.#validatePromiseReject?.();
55+
this.#validatePromise = new Promise<void>((resolve, reject) => {
5556
this.#validatePromiseResolve = resolve;
57+
this.#validatePromiseReject = reject;
5658
});
5759

5860
// Store this state of the data for translator look ups:
@@ -100,6 +102,7 @@ export class UmbServerModelValidatorContext
100102

101103
this.#validatePromiseResolve?.();
102104
this.#validatePromiseResolve = undefined;
105+
this.#validatePromiseReject = undefined;
103106
}
104107

105108
get isValid(): boolean {
@@ -112,7 +115,12 @@ export class UmbServerModelValidatorContext
112115
return this.#isValid ? Promise.resolve() : Promise.reject();
113116
}
114117

115-
reset(): void {}
118+
reset(): void {
119+
this.#isValid = true;
120+
this.#validatePromiseReject?.();
121+
this.#validatePromiseResolve = undefined;
122+
this.#validatePromiseReject = undefined;
123+
}
116124

117125
focusFirstInvalidElement(): void {}
118126

src/Umbraco.Web.UI.Client/src/packages/core/validation/controllers/validation.controller.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,9 @@ export class UmbValidationController extends UmbControllerBase implements UmbVal
192192
*/
193193
addValidator(validator: UmbValidator): void {
194194
if (this.#validators.includes(validator)) return;
195+
if (validator === this) {
196+
throw new Error('Cannot add it self as validator');
197+
}
195198
this.#validators.push(validator);
196199
//validator.addEventListener('change', this.#onValidatorChange);
197200
if (this.#validationMode) {
@@ -231,7 +234,7 @@ export class UmbValidationController extends UmbControllerBase implements UmbVal
231234

232235
if (!this.messages) {
233236
// This Context has been destroyed while is was validating, so we should not continue.
234-
return;
237+
return Promise.reject();
235238
}
236239

237240
// If we have any messages then we are not valid, otherwise lets check the validation results: [NL]
@@ -264,6 +267,7 @@ export class UmbValidationController extends UmbControllerBase implements UmbVal
264267
*/
265268
reset(): void {
266269
this.#validationMode = false;
270+
this.messages.clear();
267271
this.#validators.forEach((v) => v.reset());
268272
}
269273

0 commit comments

Comments
 (0)