Skip to content

Property forms clip long text values: every field is forced into a 1/3-width grid cell; content only readable after click-to-edit #195

Description

@rosalie1984

Summary

On auto-generated node detail pages (default layout areas), every content property is rendered in a fixed ⅓-page-width grid cell on desktop, regardless of content length. Long free-text values — e.g. extracted values from Geschäftsberichten — are clipped/cramped and only become readable after clicking the field into edit mode.

Reproduce

  1. Open any data node whose content type has free-text string properties, e.g.
    https://atioz.meshweaver.cloud/AgenticPension/Jahresbericht/JB-2024-SGPK
    (or any AgenticPension/Erhebung/* node — the Wert (roh) field holds the extracted content).
  2. Observe: each field sits in a narrow cell (3 per row on LG breakpoints); long values are not readable.
  3. Click a field → it toggles to the edit control → only now the value is visible.

Root cause

  1. Hardcoded grid sizing — every regular property gets the same responsive cell, independent of its type:
    • src/MeshWeaver.Layout/Domain/EditLayoutArea.csBuildPropertyForm:
      propsGrid.WithView(control, s => s.WithXs(12).WithMd(6).WithLg(4));
    • src/MeshWeaver.Graph/MeshNodePropertyEditor.cs:69 — same pattern in the second property-grid renderer.
  2. No wrapping on read-only valuesEditorExtensions.BuildReadonlyControl renders the generic string label without white-space/word-break styling, so long values clip instead of wrapping.

Only properties detected as markdown (UiControlAttribute.SeparateEditView == true, e.g. [Markdown]) escape the grid and render full-width — type authors cannot fix this per-type for plain string values without misusing [Markdown] semantics.

Proposed fix (drafted on my-working-branch-rs, pending review)

  1. EditLayoutArea: new WithPropertyCellSizing(this LayoutGridItemSkin, PropertyInfo)
    plain free-text string properties (no [Dimension], no [MeshNode], no fixed Options) span the full row (Xs(12)); structured values (numbers, dates, bools, enums, dimension/mesh-node references — all short labels) keep the compact Xs(12).Md(6).Lg(4) cells.
  2. Apply the same sizing in MeshNodePropertyEditor.BuildPropertyEditors.
  3. EditorExtensions.BuildReadonlyControl: add white-space: pre-wrap; word-break: break-word; to the generic read-only label so long values wrap instead of clipping.

Verification (already run against the draft)

  • MeshWeaver.Layout + MeshWeaver.Graph build clean (0 errors)
  • MeshWeaver.Layout.Test: 185/185 passed
  • MeshWeaver.Graph.Test (Overview/InlineEditing): 15/15 passed

Acceptance criteria

  • Free-text string values on node detail pages are fully readable without entering edit mode (full-width row, wrapped).
  • Structured fields (numbers, dates, enums, dimension/node references) keep the compact multi-column layout.
  • Behaviour applies platform-wide (both property-form renderers), not per content type.
  • Existing [Markdown]-attributed properties keep their current full-width rendered sections.

Affected scope

All node detail/overview pages using the default layout areas (AddDefaultLayoutAreasBuildPropertyOverview/BuildContentView) — observed on atioz (AgenticPension/Jahresbericht/*, Erhebung/*, Dokument/*, Datenpunkt/*), but platform-wide by construction.

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workinguifront-end

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions