Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

"Add a slot" adds an empty row without opening it

未关闭
#596 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 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 内容生成。

描述

enhancement pipeline:proposed pipeline:ux

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 addRow resolve to the new slot's id, and have handleAddSlot open that slot's editor and close any other, as Duplicate does with its copy. #580 already makes addRow resolve to the id, and its openSlot adds 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 focusRequest takes 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.ts chooses 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-run pnpm help:screenshots if 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.tsx and useBuildState.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.tsx pins it, and the help walkthrough passes with the new step.
  • pnpm lint && pnpm typecheck && pnpm knip && pnpm test pass.

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 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

richshaw/OpenSignup 的其他 Issue

查看 richshaw/OpenSignup 的全部 Issue

相似的 Issue

更多 TypeScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。