Skip to content

bug(lit): v0.8 interactive components missing requestUpdate after setData #1023

@ppazosp

Description

@ppazosp

Description

While fixing #597 (Slider value not updating) in #1022, I discovered that other v0.8 interactive components have the same latent bug: they call processor.setData() without requestUpdate(), meaning the component does not re-render after the data model is updated.

Affected components

Component File Has requestUpdate()?
Slider renderers/lit/src/0.8/ui/slider.ts Yes (fixed in #1022)
MultipleChoice renderers/lit/src/0.8/ui/multiple-choice.ts Yes (already had it)
TextField renderers/lit/src/0.8/ui/text-field.ts No
DateTimeInput renderers/lit/src/0.8/ui/datetime-input.ts No
CheckBox renderers/lit/src/0.8/ui/checkbox.ts No

Why it's not immediately visible

  • TextField: The native `` element displays typed characters regardless of Lit re-renders, so the bug is masked. However, any other component or label bound to the same data path will not update.
  • CheckBox / DateTimeInput: These would need testing to confirm visible impact.

Suggested fix

In #1022 I added a updateBoundData() helper to the Root base class that encapsulates the setData() + requestUpdate() pattern. The affected components can be refactored to use it, the change would be minimal for each.

Root cause

The deeper issue is that SignalWatcher does not pick up changes made through SignalMap.set() during processor.setData(). This might be worth investigating separately in web_core, but in the meantime requestUpdate() is a reliable workaround (and already used by MultipleChoice).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    In Progress

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions