From 0432a2db7521f4cb047ca015176ad1d6f597ccd1 Mon Sep 17 00:00:00 2001 From: Claudio Schaad Date: Mon, 6 Jul 2026 17:42:34 +0200 Subject: [PATCH] Note U-11 revert in the UI plan Record the reason U-11 was reverted (SignalR flood from per-row FluentCombobox with fresh Items IEnumerable + inline delegate parameters on every render) and what a retry needs (materialised sortedBookingTexts field, static Func for OptionText/ OptionValue, browser verification with a real pending-bookings count). Co-Authored-By: Claude Opus 4.7 --- UI_IMPROVEMENT_PLAN.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UI_IMPROVEMENT_PLAN.md b/UI_IMPROVEMENT_PLAN.md index e4b7394..8826baa 100644 --- a/UI_IMPROVEMENT_PLAN.md +++ b/UI_IMPROVEMENT_PLAN.md @@ -177,7 +177,7 @@ Split into two PRs on delivery because the header path touches ~15 pages. ### Phase 5 — Home page split - **U-10** Extract `` and `` components. Home stacks them. -- **U-11** Replace the Home `` + `` with `FluentAutocomplete` so the autocomplete UI is uniform with the split dialog. +- **U-11** ~~Replace the Home `` + `` with `FluentAutocomplete` so the autocomplete UI is uniform with the split dialog.~~ **Attempted with `FluentCombobox` in `ceef2c1`, reverted in `2522274` because the UI became unresponsive.** Root cause: rendered per row inside a `@foreach`, three parameters were re-created on every render — `sortedBookingTexts` as a computed `.OrderBy(...)` getter (fresh `IEnumerable` each access), `OptionText="@(t => t)"` and `OptionValue="@(t => t)"` inline lambdas (fresh delegate each render), plus `Autocomplete=Both` which does JS interop per keystroke. Combined, N pending bookings flooded the SignalR circuit with render + interop messages until the whole UI froze. Retry needs: materialise `sortedBookingTexts` to a real field populated in `LoadDataAsync`, extract the identity lambdas to `static readonly Func` fields, and test in the browser with a realistic pending-bookings count before merging. ### Phase 6 — Report componentization