11import { InputFieldMDRC } from '../renderChildren/InputFieldMDRC' ;
22import { MBExtendedLiteral } from '../utils/Utils' ;
33import { ComputedSignal } from '../utils/Signal' ;
4+ import { InputFieldArgumentType } from '../parsers/InputFieldDeclarationParser' ;
5+ import { DefaultValueInputFieldArgument } from '../inputFieldArguments/arguments/DefaultValueInputFieldArgument' ;
46
57export type GetInputFieldType < T extends AbstractInputField < any > > = T extends AbstractInputField < infer R > ? R : unknown ;
68
@@ -18,7 +20,8 @@ export abstract class AbstractInputField<T extends MBExtendedLiteral> {
1820 } ;
1921
2022 this . filteredWriteSignal = new ComputedSignal < MBExtendedLiteral | undefined , T > ( this . renderChild . writeSignal , ( value : MBExtendedLiteral | undefined ) => {
21- return this . filterValue ( value ) ;
23+ const filteredValue = this . filterValue ( value ) ;
24+ return filteredValue !== undefined ? filteredValue : this . getDefaultValue ( ) ;
2225 } ) ;
2326
2427 this . filteredWriteSignal . registerListener ( {
@@ -38,6 +41,15 @@ export abstract class AbstractInputField<T extends MBExtendedLiteral> {
3841 return this . getValue ( ) === value ;
3942 }
4043
44+ getDefaultValue ( ) : T {
45+ const defaultValueArgument = this . renderChild . getArgument ( InputFieldArgumentType . DEFAULT_VALUE ) as DefaultValueInputFieldArgument | undefined ;
46+ if ( ! defaultValueArgument ) {
47+ return this . getFallbackDefaultValue ( ) ;
48+ }
49+ const filteredValue = this . filterValue ( defaultValueArgument . value ) ;
50+ return filteredValue !== undefined ? filteredValue : this . getFallbackDefaultValue ( ) ;
51+ }
52+
4153 /**
4254 * Returns the current content of the input field
4355 */
@@ -48,14 +60,14 @@ export abstract class AbstractInputField<T extends MBExtendedLiteral> {
4860 *
4961 * @param value
5062 */
51- abstract filterValue ( value : MBExtendedLiteral | undefined ) : T ;
63+ abstract filterValue ( value : MBExtendedLiteral | undefined ) : T | undefined ;
5264
5365 abstract updateDisplayValue ( value : T ) : void ;
5466
5567 /**
5668 * Returns the default value of this input field
5769 */
58- abstract getDefaultValue ( ) : T ;
70+ abstract getFallbackDefaultValue ( ) : T ;
5971
6072 /**
6173 * Returns the HTML element this input field is wrapped in
0 commit comments