Skip to content

Commit e67e6d8

Browse files
committed
Improve user controls supported types layout and controller toolbar spacing - PR_26163_066-user-controls-layout-polish
1 parent fcd74bb commit e67e6d8

7 files changed

Lines changed: 414 additions & 184 deletions

File tree

account/user-controls.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,10 +84,10 @@ <h2>Physical Input Mapping</h2>
8484
<details class="vertical-accordion" open data-account-user-controls-section="Game Controllers">
8585
<summary>Game Controllers</summary>
8686
<div class="accordion-body content-stack">
87-
<div class="content-cluster" aria-label="Account controller device selection">
87+
<div class="content-cluster content-cluster--nowrap" aria-label="Account controller device selection">
8888
<button class="btn" type="button" data-account-user-controls-refresh>Refresh Devices</button>
8989
<label class="field-label" for="account-user-controls-device">Controller</label>
90-
<select id="account-user-controls-device" data-account-user-controls-device></select>
90+
<select class="content-cluster__grow" id="account-user-controls-device" data-account-user-controls-device></select>
9191
<button class="btn" type="button" data-account-user-controls-add-profile>Create User Control Profile</button>
9292
</div>
9393
<p class="status" role="status" data-account-user-controls-device-status>Game controllers auto-detect after the browser exposes them.</p>
@@ -119,7 +119,7 @@ <h2>Physical Input Mapping</h2>
119119
<details class="vertical-accordion" open>
120120
<summary>Supported Control Types</summary>
121121
<div class="accordion-body">
122-
<ul class="list--multi-column" data-account-user-controls-types></ul>
122+
<ul class="list--multi-column list--multi-column-3" data-account-user-controls-types></ul>
123123
</div>
124124
</details>
125125
<details class="vertical-accordion" open>

assets/theme-v2/css/layout.css

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,21 @@ div {
9595
align-items: center
9696
}
9797

98+
.content-cluster--nowrap {
99+
flex-wrap: nowrap
100+
}
101+
102+
.content-cluster--nowrap > .btn,
103+
.content-cluster--nowrap > .field-label {
104+
flex: 0 0 auto;
105+
white-space: nowrap
106+
}
107+
108+
.content-cluster__grow {
109+
flex: 1 1 auto;
110+
min-width: var(--space-0)
111+
}
112+
98113
.content-grid {
99114
display: grid;
100115
grid-template-columns: var(--grid-cols-2);

assets/theme-v2/css/typography.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,10 @@ li {
116116
padding-left: var(--space-18)
117117
}
118118

119+
.list--multi-column-3 {
120+
columns: 3
121+
}
122+
119123
.list--multi-column li {
120124
break-inside: avoid;
121125
padding-left: var(--space-4)
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
# PR_26163_066-user-controls-layout-polish
2+
3+
## Branch Validation
4+
5+
- PASS: Current branch is `main`.
6+
- PASS: Expected branch is `main`.
7+
- Evidence: `git branch --show-current` returned `main`.
8+
9+
## Requirement Checklist
10+
11+
- PASS: Read `docs_build/dev/PROJECT_INSTRUCTIONS.md` before implementation.
12+
- PASS: `account/user-controls.html` renders Supported Control Types with `list--multi-column list--multi-column-3`.
13+
- PASS: Supported Control Types render as exactly 3 columns.
14+
- PASS: Bullet alignment is maintained with the existing outside bullet positioning and padding from `list--multi-column`.
15+
- PASS: Alphabetical ordering remains unchanged because the DOM order is still generated from the sorted `SUPPORTED_CONTROL_TYPES` list.
16+
- PASS: Columns fill top-to-bottom, then left-to-right; Playwright validates column-local top order and cross-column index order.
17+
- PASS: Controller selection toolbar renders as one line: `[ Refresh Devices ] [ Controller ] [ Controller Dropdown ] [ Create User Control Profile ]`.
18+
- PASS: Controller dropdown consumes remaining horizontal space with reusable `content-cluster__grow`.
19+
- PASS: Controller names do not force the toolbar onto multiple lines at 1440px desktop width; Playwright validates no-wrap layout before and after selecting a controller.
20+
- PASS: Refresh Devices and Create User Control Profile remain visible and sized to content.
21+
- PASS: Workflow/profile behavior was not changed; no account runtime JavaScript changed.
22+
- PASS: Reused and extended Theme V2 only; no page-local CSS, inline styles, or new layout system.
23+
24+
## Theme V2 Notes
25+
26+
- Existing Theme V2 already had `list--multi-column` for 2-column lists and `content-cluster` for wrapping control rows.
27+
- This PR added small reusable modifiers in Theme V2:
28+
- `list--multi-column-3`
29+
- `content-cluster--nowrap`
30+
- `content-cluster__grow`
31+
- These are reusable modifiers on existing Theme V2 patterns, not page-local CSS.
32+
33+
## Changed Files
34+
35+
- `account/user-controls.html`
36+
- `assets/theme-v2/css/layout.css`
37+
- `assets/theme-v2/css/typography.css`
38+
- `tests/playwright/tools/InputMappingV2Tool.spec.mjs`
39+
- `docs_build/dev/reports/PR_26163_066-user-controls-layout-polish.md`
40+
- `docs_build/dev/reports/codex_changed_files.txt`
41+
- `docs_build/dev/reports/codex_review.diff`
42+
43+
## Impacted Lane
44+
45+
- Account/User Controls layout lane.
46+
- Theme V2 reusable CSS modifier lane.
47+
- Targeted Account/User Controls Playwright lane.
48+
- Required legacy workspace command: `npm run test:workspace-v2`.
49+
50+
Note: `npm run test:workspace-v2` is a legacy command name retained by repo scripts.
51+
52+
## Skipped Lanes
53+
54+
- Full samples smoke: SKIP. Safe because this PR changes account layout/CSS and targeted Playwright assertions only; no sample JSON, sample loader, or game runtime sample path changed.
55+
- Engine input lane: SKIP. Safe because `src/engine/input` was not modified.
56+
- Account/User Controls runtime DB lane: SKIP. Safe because no runtime JavaScript or persistence behavior changed.
57+
58+
## Testing Performed
59+
60+
- PASS: `node --check tests/playwright/tools/InputMappingV2Tool.spec.mjs`
61+
- PASS: `git diff --check`
62+
- PASS: `rg -n "<style| on[a-z]+=" account/user-controls.html` returned no inline style/event handler matches.
63+
- PASS: `npx playwright test tests/playwright/tools/InputMappingV2Tool.spec.mjs --grep "User Controls owns physical input mapping accordions and profiles" --reporter=line` passed 1 test.
64+
- PASS: `npm run test:workspace-v2` passed; workspace-contract lane reported 5 passed.
65+
66+
## Playwright Result
67+
68+
- PASS: Targeted Account/User Controls Playwright checks passed.
69+
- PASS: Required `npm run test:workspace-v2` passed.
70+
71+
## Coverage
72+
73+
- PASS: Playwright V8 coverage report was not produced for PR066 because no runtime JavaScript changed.
74+
75+
## Manual Validation Steps
76+
77+
1. Open `/account/user-controls.html` at a normal desktop width.
78+
2. Open Supported Control Types and confirm it displays exactly 3 bullet columns.
79+
3. Confirm Supported Control Types remains alphabetical and fills down each column before continuing to the next column.
80+
4. Open Game Controllers and confirm the toolbar stays on one line.
81+
5. Confirm Refresh Devices and Create User Control Profile remain visible and content-sized.
82+
6. Confirm the Controller dropdown expands to use the available horizontal space.
83+
7. Refresh devices, select a detected controller, and confirm the selected controller name does not wrap the toolbar.
84+
85+
## Samples Validation Decision
86+
87+
- SKIP: Full samples smoke was not run because no samples, sample JSON, sample loader, or production game runtime behavior changed.
88+
89+
## ZIP Artifact
90+
91+
- PASS: Repo-structured delta ZIP produced at `tmp/PR_26163_066-user-controls-layout-polish_delta.zip`.
Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
account/user-controls-page.js
1+
account/user-controls.html
2+
assets/theme-v2/css/layout.css
3+
assets/theme-v2/css/typography.css
24
tests/playwright/tools/InputMappingV2Tool.spec.mjs
3-
docs_build/dev/reports/playwright_v8_coverage_report.txt
4-
docs_build/dev/reports/PR_26163_065-user-controls-multiple-profiles-per-controller.md
5+
docs_build/dev/reports/PR_26163_066-user-controls-layout-polish.md
56
docs_build/dev/reports/codex_review.diff
67
docs_build/dev/reports/codex_changed_files.txt

0 commit comments

Comments
 (0)