Skip to content

Make bound fields read-only until their binding is removed #6027

Description

@kof

Problem

Fields that are directly bound to mutable Data Variables can still be edited. Editing the field silently creates a temporary override of the shared variable, which is difficult to discover and can affect other consumers of that variable.

This behavior is especially confusing in authored configuration such as Assets query filters, where a bound value looks like an editable literal.

Desired outcome

Use one consistent binding interaction throughout the Builder:

  • A bound field displays its evaluated value as read-only.
  • A user removes the binding before entering a custom literal value.
  • Removing a binding preserves the last evaluated value as the editable literal.
  • Bound fields do not implicitly create temporary Data Variable overrides.

Product scope

Apply the interaction consistently to component properties, page settings, resource configuration, and structured Assets query controls.

Runtime variable updates through actions and published-site behavior are not affected.

Constraints

  • Preserve existing project data without a migration.
  • Preserve the evaluated value when removing a binding.
  • Do not remove runtime variable state used by actions.
  • Keep accessibility and keyboard behavior intact.

Acceptance criteria

  • Direct bindings to mutable Data Variables are read-only in every bound field.
  • Complex expressions, parameters, and resource bindings remain read-only.
  • Removing a binding converts the evaluated value to the appropriate literal.
  • The overwritten binding state and reset UI are removed when no longer reachable.
  • String and numeric Assets query controls follow the same behavior.
  • Regression tests cover bound component properties and query values.
  • Existing projects require no data migration.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions