diff --git a/src/uix/morfo/components/number-field.ts b/src/uix/morfo/components/number-field.ts index 037cb6f45..57dae2ed2 100644 --- a/src/uix/morfo/components/number-field.ts +++ b/src/uix/morfo/components/number-field.ts @@ -15,12 +15,12 @@ export const numberFieldMorfo = { defaultElement: 'div', optional: false, data: [ - { attr: 'data-disabled', severity: 'optional' }, - { attr: 'data-readonly', severity: 'optional' }, - { attr: 'data-required', severity: 'optional' }, - { attr: 'data-invalid', severity: 'optional' }, - { attr: 'data-focused', severity: 'optional' }, - { attr: 'data-scrubbing', severity: 'optional' } + { attr: 'data-disabled', value: v.propRef('disabled'), severity: 'optional' }, + { attr: 'data-readonly', value: v.propRef('readonly'), severity: 'optional' }, + { attr: 'data-required', value: v.propRef('required'), severity: 'optional' }, + { attr: 'data-invalid', value: v.propRef('invalid'), severity: 'optional' }, + { attr: 'data-focused', value: v.propRef('focused'), severity: 'optional' }, + { attr: 'data-scrubbing', value: v.propRef('scrubbing'), severity: 'optional' } ], aria: [] }, diff --git a/src/uix/soma/components/number-field/number-field-provider.svelte.ts b/src/uix/soma/components/number-field/number-field-provider.svelte.ts index 0897c0443..eb329570f 100644 --- a/src/uix/soma/components/number-field/number-field-provider.svelte.ts +++ b/src/uix/soma/components/number-field/number-field-provider.svelte.ts @@ -117,12 +117,22 @@ export class NumberFieldProvider { private constructor(opts: NumberFieldOpts) { this.opts = opts; this.soma = Soma.require(); - this.runtime = this.soma.runtime(numberFieldMorfo, {}); + this.runtime = this.soma.runtime(numberFieldMorfo, { + props: { + disabled: () => this.isDisabled, + readonly: () => this.isReadonly, + required: () => this.isRequired, + invalid: () => this.isInvalid, + focused: () => this.focused, + scrubbing: () => this.scrubbing + } + }); this.runtimePart = this.runtime.part('provider', { id: opts.id, ref: opts.ref, owner: this, - context: NumberFieldProvider.ctx + context: NumberFieldProvider.ctx, + syncAttrs: true }); this.locale = readableActive(() => opts.locale.current ?? this.soma.langs.getLocale() ?? 'en'); @@ -424,13 +434,7 @@ export class NumberFieldProvider { readonly props = $derived.by(() => this.runtimePart.assert({ ...this.runtimePart.props, - dir: this.opts.dir.current, - 'data-disabled': boolToEmptyStrOrUndef(this.isDisabled), - 'data-readonly': boolToEmptyStrOrUndef(this.isReadonly), - 'data-required': boolToEmptyStrOrUndef(this.isRequired), - 'data-invalid': boolToEmptyStrOrUndef(this.isInvalid), - 'data-focused': boolToEmptyStrOrUndef(this.focused), - 'data-scrubbing': boolToEmptyStrOrUndef(this.scrubbing) + dir: this.opts.dir.current } as const) ); }