From 054bf326050e4336ed9c2f7b0d987dc2179459a9 Mon Sep 17 00:00:00 2001 From: Erik Date: Sun, 6 Sep 2026 20:34:18 +0200 Subject: [PATCH] docs(vt): slice-1 contract amended from the Part B reviews (text onclick, auto width, no header); review ledger Co-Authored-By: Claude Fable 5.1 --- ...06-campaign-vt-slice1-files-and-columns.md | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/docs/plans/2026-09-06-campaign-vt-slice1-files-and-columns.md b/docs/plans/2026-09-06-campaign-vt-slice1-files-and-columns.md index 3f622531..3dc81e98 100644 --- a/docs/plans/2026-09-06-campaign-vt-slice1-files-and-columns.md +++ b/docs/plans/2026-09-06-campaign-vt-slice1-files-and-columns.md @@ -84,24 +84,29 @@ B1. Markup, exactly doc 08 §3's proposal: `` accepts child `` elements, each binding its own per-row source parallel to the row count (per-attribute binding like every other element; no new `Plugin.Abstractions` type): -`items="{IReadOnlyList}"` for text, `values="{IReadOnlyList}"` +`items="{IReadOnlyList}"` for text (plus an OPTIONAL +`onclick="{Action}"` that fires INSTEAD of selecting — review finding: +none of VTank's eight lists uses row selection, every text cell is an action +target, `PluginCore.cs:7948-8089`), `values="{IReadOnlyList}"` + `onchange="{Action}"` (row index; the plugin flips its own bool) for check, `values="{IReadOnlyList}"` + `iconkind` + `onclick="{Action}"` for icon. Row count = the longest bound column; short columns draw empty cells. The list's own `selected`/`onchange` stay as today; a click in a check/icon column fires that column's callback and does NOT change selection; a click in a text column selects. No header row (VTank's idiom -is `