"Add a slot" adds an empty row without opening it
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 新手友好度
- 52/100
- Issue 类型
- 缺陷
- 描述清晰度
- 描述清楚
- 活跃度
- 活跃
- 技术栈
- react, typescript
- 领域
- frontend
调研方向
Start with BuildWysiwyg.tsx and src/components/build-shared/useBuildState.ts, then read how Duplicate opens a slot and uses focusRequest. Update the Add a slot flow and pin its behavior in BuildWysiwyg.test.tsx; adjust tests/e2e/help/create-and-publish-a-signup.spec.ts and the help article. Done when the new slot opens with focus in its first empty field in flat and grouped lists, the walkthrough passes, and the listed checks pass.
由索引模型根据 Issue 内容生成。
描述
Needs your OK: this changes what Add a slot does on the Build tab: the new slot opens in the editor, with focus in its first empty field. Swap pipeline:proposed for pipeline:ready to have it built.
What happens
On the Build tab, Add a slot (WysiwygGroup in src/components/build-wysiwyg/WysiwygGroup.tsx) calls handleAddSlot in BuildWysiwyg.tsx, which calls addRow in src/components/build-shared/useBuildState.ts. The new slot appears as a closed, empty row, and nothing opens. The organizer has to find it and choose it before typing anything. With the keyboard, focus stays on Add a slot, below the new row.
Duplicate works the other way since #557: the copy opens in the editor with focus in its first field. Two buttons that both make a slot leave the organizer in different places. A new slot left closed and empty is also how "Untitled slot" ends up on a published page.
To see it: create a signup by hand, fill in its first slot, choose Done, then choose Add a slot.
Fix, in outline
- Open the new slot. Have
addRowresolve to the new slot's id, and havehandleAddSlotopen that slot's editor and close any other, as Duplicate does with its copy. #580 already makesaddRowresolve to the id, and itsopenSlotadds a slot and opens it for Publish's check; use that path. - Put focus in the first empty field. A slot added under a group already has the group's value (its day, say), so focus skips that box and lands on the first one without a value. #580's
focusRequesttakes a field for this. - Help page. In
src/help/articles/create-and-publish-a-signup.tsx, "For the next slot, choose Add a slot and fill it in the same way." still holds. Add that the new slot opens, ready to fill in.
Watch for
- The help walkthrough
tests/e2e/help/create-and-publish-a-signup.spec.tschooses Add a slot and then expects two "Edit slot" rows. With the new slot open, one of them is an editor. Update it, and re-runpnpm help:screenshotsif a screenshot changes. - A refused add opens nothing and keeps its error on the rail, as now.
- Add date, on a signup grouped by a date field, adds a slot under a new "Set a date" heading. Leave it as it is (see Choices).
- Overlap with #580 and #581, which change
BuildWysiwyg.tsxanduseBuildState.ts, and with #595 (Escape and focus in the slot editor). - CHANGELOG entry.
Choices this makes
- Add a slot opens the new slot. Default: yes. It matches Duplicate, and the organizer can type into it straight away.
- Where focus goes: the first field without a value. Default: the first empty field, so a slot added under a day starts at What, not at the date it already has.
- Add date stays as it is. Default: unchanged. Its slot sits under a "Set a date" heading, and setting that heading is the next step.
Order
After #580, which changes addRow to resolve to the new slot's id and adds openSlot and focusRequest to BuildWysiwyg.tsx. Built on main first, this would make the same changes twice.
Done when
- Choosing Add a slot opens the new slot's editor, closes any other, and puts focus in its first empty field, in a flat list and under a group.
- A unit test in
BuildWysiwyg.test.tsxpins it, and the help walkthrough passes with the new step. pnpm lint && pnpm typecheck && pnpm knip && pnpm testpass.
Found by the UX walkthrough (scenario O4) on 2026-10-24, and checked against the code on main at 4ed27a9.
Generated by Claude Code
- 主要语言
- TypeScript
- 星标
- 19
- 派生
- 4
- 平均合并
- 20 小时 9 分钟
- 30 天内合并 PR
- 156
环境准备
- 提供 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
richshaw/OpenSignup 的其他 Issue
-
enhancement pipeline:proposed pipeline:ux
难度 2/5 1-3 小时 新手友好度 72/100
richshaw/OpenSignup#654 ·
维护者通常 1 天内回复
-
enhancement pipeline:proposed pipeline:ux
难度 2/5 1-3 小时 新手友好度 82/100
richshaw/OpenSignup#653 ·
维护者通常 1 天内回复
-
enhancement pipeline:proposed pipeline:ux
难度 2/5 1-3 小时 新手友好度 78/100
richshaw/OpenSignup#652 ·
维护者通常 1 天内回复
-
enhancement good first issue pipeline:ready
难度 2/5 1-3 小时 新手友好度 82/100
richshaw/OpenSignup#645 ·
维护者通常 1 天内回复
-
bug good first issue pipeline:ready pipeline:ux
难度 2/5 1-3 小时 新手友好度 88/100
richshaw/OpenSignup#644 ·
维护者通常 1 天内回复
查看 richshaw/OpenSignup 的全部 Issue
相似的 Issue
-
a10y a10y-audit ai-driven-qa claude
难度 2/5 1-3 小时 新手友好度 86/100
linagora/twake-directory-manager#219 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 68/100
维护者通常 1 天内回复
-
type: bug
难度 2/5 1-3 小时 新手友好度 79/100
维护者通常 1 天内回复
-
0️⃣ phase/new
难度 2/5 1-3 小时 新手友好度 82/100
维护者通常 1 天内回复
-
Pulse v7: buildPreferencesFromTelos() bypasses telosSectionOrFile(), renders empty on unified-TELOS installs可能已有人在做 @zephyr91 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 75/100
danielmiessler/LifeOS#2393 ·
维护者通常 4 天内回复