From 56a7c6aa08f2c8ed5b5ceb07f3bbc3efd5d5641b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 18 Apr 2024 08:52:09 +0200 Subject: [PATCH] make the ValueType a composition of Given type and default type --- .../validation/mixins/form-control.mixin.ts | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/validation/mixins/form-control.mixin.ts b/src/Umbraco.Web.UI.Client/src/packages/core/validation/mixins/form-control.mixin.ts index 2436a1ac7a..1e58626a9e 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/validation/mixins/form-control.mixin.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/validation/mixins/form-control.mixin.ts @@ -83,7 +83,7 @@ export declare abstract class UmbFormControlMixinElement export function UmbFormControlMixin< ValueType = FormData | FormDataEntryValue, T extends HTMLElementConstructor = HTMLElementConstructor, - DefaultValueType extends ValueType = ValueType, + DefaultValueType = undefined, >(superClass: T, defaultValue?: DefaultValueType) { abstract class UmbFormControlMixinClass extends superClass { /** @@ -102,10 +102,10 @@ export function UmbFormControlMixin< * @default '' */ @property({ reflect: false }) // Do not 'reflect' as the attribute value is used as fallback. [NL] - get value(): ValueType { + get value(): ValueType | DefaultValueType { return this.#value; } - set value(newValue: ValueType) { + set value(newValue: ValueType | DefaultValueType) { this.#value = newValue; this._runValidators(); } @@ -132,7 +132,7 @@ export function UmbFormControlMixin< } private _pristine: boolean = true; - #value: ValueType = defaultValue; + #value: ValueType | DefaultValueType = defaultValue as unknown as DefaultValueType; protected _internals: ElementInternals; #form: HTMLFormElement | null = null; #validators: UmbFormControlValidatorConfig[] = []; @@ -356,10 +356,10 @@ export function UmbFormControlMixin< } protected getDefaultValue(): DefaultValueType { - return defaultValue; + return defaultValue as DefaultValueType; } - protected getInitialValue(): ValueType { - return this.getAttribute('value') as ValueType; + protected getInitialValue(): ValueType | DefaultValueType { + return this.getAttribute('value') as ValueType | DefaultValueType; } public checkValidity() { @@ -384,5 +384,8 @@ export function UmbFormControlMixin< return this._internals?.validationMessage; } } - return UmbFormControlMixinClass as unknown as HTMLElementConstructor> & T; + return UmbFormControlMixinClass as unknown as HTMLElementConstructor< + UmbFormControlMixinElement + > & + T; }