diff --git a/number/number.view.ts b/number/number.view.ts index b1360dbc4f9..1c74f500ada 100644 --- a/number/number.view.ts +++ b/number/number.view.ts @@ -6,13 +6,12 @@ namespace $.$$ { */ export class $mol_number extends $.$mol_number { - value_limited( next? : any ) : number { + value_limited( next? : string | number ) : number { if ( next === undefined ) return this.value() if ( next === '' ) return this.value( Number.NaN ) const min = this.value_min() const max = this.value_max() - const val = Number( next ) if( val < min ) return this.value( min ) @@ -28,23 +27,36 @@ namespace $.$$ { override event_inc( next? : Event ) { this.value_limited( ( this.value_limited() || 0 ) + this.precision_change() ) } - - override value_string( next? : string ) { - const next_num = this.value_limited( next ) - const precisionView = this.precision_view() + value_normalized(next?: string) { + const next_num = this.value_limited( next ) + if (Number.isNaN(next_num)) return '' + const precision_view = this.precision_view() if( next_num === 0 ) return '0' if( !next_num ) return '' - if( precisionView >= 1 ) { - return ( next_num / precisionView ).toFixed() + if( precision_view >= 1 ) { + return ( next_num / precision_view ).toFixed() } else { - const fixedNumber = Math.log10( 1 / precisionView ) - return next_num.toFixed( Math.ceil( fixedNumber ) ) + const fixed_number = Math.log10( 1 / precision_view ) + return next_num.toFixed( Math.ceil( fixed_number ) ) } } + @ $mol_mem + override value_string( next? : string ) { + const current = this.value_normalized() + + if ( next !== undefined) { + const normalized = this.value_normalized( next ) + if (normalized) return normalized + } + + return next ?? current + + } + @ $mol_mem override dec_enabled() : boolean { return this.enabled() && (