fix(ui): one busy-button pattern and one ellipsis glyph #476

Merged
nrupard merged 1 commit from fix/MAPPS-410-busy-labels into main 2026-08-05 18:14:45 +02:00
Owner

Implements MAPPS-410 (2026-08-04 mokosh-apps UI audit, F18): one busy-indication pattern and one ellipsis glyph. 22 files.

Busy buttons route through the loading prop

Ten buttons that hand-rolled their busy state by swapping their label text (if saving() { "Saving..." } else { "Save changes" }) now use the shared Button { loading: <signal> } pattern with a STABLE label; the spinner conveys busy, so the label no longer changes. Six needed the loading prop added (profile, portal reply, and the four assets.rs bulk/edit/credential/relationship saves); four already had loading and just shed the redundant text-swap (onboarding, portal_set_password, login, portal_login). The audit's "manual spinner" cases were the already-present loading prop, so no hand-rolled spinner markup remained to remove. Every onclick/disabled/variant/title/type was preserved; no imports changed (all were already the shared Button).

Two sites beyond the audit's list (login and portal_login "Signing in...") were caught by the general text-swap shape and converted too.

One ellipsis glyph in busy/loading labels

31 busy/loading label strings that used the three-ASCII-dot ... now use the single-character (U+2026), matching the ~32 the codebase already used. Covered: data-fetch placeholders ("Loading comments…", "Searching…"), status checks (system_status "Checking…"), and full-screen transitional/auth states (lib.rs sign-in/redirect/profile-setup, auth_callback "Signing you in…", the account-deleted countdown). Scope was strictly user-visible busy/loading label literals: zero code ... (ranges, struct-update, rest patterns, macro paths), zero comments, and the layout.rs document.title normalization that compares against a literal "Loading..." on purpose, were touched.

Out of scope (tracked)

Non-busy labels (input placeholders like "Search tickets...", menu labels like "Manage templates...") still use ...; standardizing those is tracked in MAPPS-417 so this issue's busy/loading scope stays tight.

Verification

Diff-reviewed (no local cargo): all loading signals match their sibling disabled signal, labels are stable, no imports orphaned, no em-dash. CI runs fmt/clippy(-D warnings)/wasm-build/tests.

#MAPPS-410

Implements MAPPS-410 (2026-08-04 mokosh-apps UI audit, F18): one busy-indication pattern and one ellipsis glyph. 22 files. ## Busy buttons route through the `loading` prop Ten buttons that hand-rolled their busy state by swapping their label text (`if saving() { "Saving..." } else { "Save changes" }`) now use the shared `Button { loading: <signal> }` pattern with a STABLE label; the spinner conveys busy, so the label no longer changes. Six needed the `loading` prop added (profile, portal reply, and the four assets.rs bulk/edit/credential/relationship saves); four already had `loading` and just shed the redundant text-swap (onboarding, portal_set_password, login, portal_login). The audit's "manual spinner" cases were the already-present `loading` prop, so no hand-rolled spinner markup remained to remove. Every onclick/disabled/variant/title/type was preserved; no imports changed (all were already the shared `Button`). Two sites beyond the audit's list (login and portal_login "Signing in...") were caught by the general text-swap shape and converted too. ## One ellipsis glyph in busy/loading labels 31 busy/loading label strings that used the three-ASCII-dot `...` now use the single-character `…` (U+2026), matching the ~32 the codebase already used. Covered: data-fetch placeholders ("Loading comments…", "Searching…"), status checks (system_status "Checking…"), and full-screen transitional/auth states (lib.rs sign-in/redirect/profile-setup, auth_callback "Signing you in…", the account-deleted countdown). Scope was strictly user-visible busy/loading label literals: zero code `...` (ranges, struct-update, rest patterns, macro paths), zero comments, and the `layout.rs` `document.title` normalization that compares against a literal `"Loading..."` on purpose, were touched. ## Out of scope (tracked) Non-busy labels (input placeholders like "Search tickets...", menu labels like "Manage templates...") still use `...`; standardizing those is tracked in MAPPS-417 so this issue's busy/loading scope stays tight. ## Verification Diff-reviewed (no local cargo): all `loading` signals match their sibling `disabled` signal, labels are stable, no imports orphaned, no em-dash. CI runs fmt/clippy(-D warnings)/wasm-build/tests. #MAPPS-410
fix(ui): one busy-button pattern and one ellipsis glyph
All checks were successful
Check / fmt + clippy + tests (pull_request) Successful in 1m21s
Create release / Create release from merged PR (pull_request) Has been skipped
499439abdb
Implements MAPPS-410 (2026-08-04 UI audit F18). Ten buttons that swapped their label text to indicate busy now use the shared Button { loading } prop with a stable label (six gain the prop, four already had it and shed the redundant text-swap). Standardizes 31 busy/loading label strings from the three-dot ... to the single-character ellipsis, scoped strictly to user-visible busy/loading literals (no code, comment, range, or the layout.rs title-comparison touched). Non-busy placeholder/menu ellipsis is tracked separately in MAPPS-417.

#MAPPS-410
nrupard deleted branch fix/MAPPS-410-busy-labels 2026-08-05 18:14:45 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
psa-systems/mokosh-apps!476
No description provided.