Skip to content

[repo:objectui] Inline-edit grid: Enter neither commits nor moves to the next row, Tab does not move, and single-click can open the editor unfocused (keystrokes lost, cell commits as 0) #15260

Closed as duplicate

Description

@baozhoutao

Summary

In the list view's inline-edit grid, Enter does not commit the cell and does not move to the next row; the editor simply stays open until the user clicks elsewhere. Tab does not move to the next cell either. For the "fill one numeric column down a list" task (a KPI reporter typing actual values for N indicator rows) this means every row costs a mouse click plus, if the user presses Enter expecting Excel behaviour, a confused moment. Single-click sometimes opens the editor without focusing the input, so the first keystrokes are lost and the cell commits as 0 (observed twice out of six cells in a scripted run; a double-click + select-all always works).

Reproduction

Platform 17.2.0 console, any grid with inlineEdit: true and a numeric column.

  1. Click a numeric cell → editor opens.
  2. Type 85, press Enter → the editor remains open with 85 in it; no "N 行已修改" bar until focus leaves the cell.
  3. Press Tab → nothing moves.
  4. Click another cell → the previous one commits (row marked modified), the new one opens.

Variant: single-click a cell and start typing immediately (within ~1 s) → the digits are not captured; the cell later commits as 0.0000.

Expected (spreadsheet conventions, which is what an inline grid promises)

  • Enter commits and moves focus to the same column in the next row; Shift+Enter moves up; Tab / Shift+Tab move right / left; Esc cancels.
  • The editor input must be focused (and its content selected) the moment the editor opens, so typing on single-click never loses keystrokes.
  • Optional: an explicit "fill-down" affordance is not needed — Enter-to-next-row covers the KPI case.

Environment

@objectstack/console 17.2.0 · objectstack dev · Chromium 1440×900 · zh-CN. App: objectstack-ai/kpi (kpi_entry_line list, column actual_value).

Activity

  1. added
    bugSomething isn't working
    repo:objectuiSeam card: cross-repo ordering with objectui is the substance (pure objectui fixes live in objectui)
    on Sep 4, 2026
  2. added theissue type on Sep 8, 2026
  3. os-zhuang commented on Sep 8, 2026

    @os-zhuang
    Contributor

    分诊:补状态 pm:queue

    标签 bug repo:objectui priority:p3 维持 · 类型 Bug · 补 pm:queue

    本卡此前没有六态状态标签(repo:objectui 是路由,不是状态)。⇒ 落在 SKILL.md:325 的待清项里;派发 backlog 按 label:pm:queue 取卡(:58) ⇒ 本卡此刻不在任何清单上。复现完整、落点明确(控制台行内编辑网格)、无可问之事 ⇒ 入队。

    ⚠️ 两个缺陷,严重度不同,⛔ 别一起降级处理

    卡面写在一张卡里,但它们不是一回事:

    ① 键盘导航缺失(Enter 不提交不换行、Tab 不移动) —— 可用性。用户有绕行(点别的单元格),代价是「填一列 N 行」每行多一次鼠标点击。

    ② ⭐ 单击可能打开一个未聚焦的编辑器 ⇒ 击键丢失,单元格提交为 0 —— 这个不是可用性,是静默数据错误。

    ⇒ ② 才是本卡真正贵的那一半:用户输入 85,看到的是 0.0000 被提交,而没有任何东西报错。卡面实测「六个单元格里出现两次」——⚠️ 三分之一的复现率,而且失败模式是写入一个错误的数值,不是拒绝写入。

    ⛔ 不要因为整卡是 p3 就把 ② 也当成体验瑕疵。重判触发条件写死:若确认 ② 会在真实录入中把 0 写进已保存记录(而非仅停留在未提交的编辑态),升 p2;若该对象的字段参与任何计算/汇总,升 p1 —— 一个静默的 0 会污染下游聚合,而 KPI 场景正是这种。

    ⚠️ 卡面已给出规避线索,值得留住:双击 + 全选总是有效。⇒ 这既是用户的临时绕行,也指向根因(聚焦时序),对修复有用。

    期望行为是一份明确的规格,⛔ 不必再设计

    卡面把它写成了电子表格惯例,可直接当验收:

    • Enter 提交并移到下一行同列;Shift+Enter 上移;Tab / Shift+Tab 右/左移;Esc 取消。
    • ⭐ 编辑器打开的那一刻输入框必须已聚焦且内容已选中 —— 这一条同时修掉 ②。
    • 卡面明确说 ⛔ 不需要额外的「向下填充」控件:Enter-到下一行已覆盖该场景。⇒ 不要顺手加。

    ⇒ 一个声称 inlineEdit: true 的网格就是在承诺这套惯例;缺的不是功能,是承诺没有兑现。

    ⛔ 一处卡面本身的缺陷:缺具名读者

    与姊妹卡 #15259(同一次 dogfood、同一秒创建)相同:留在 objectstack 带 repo:* 的卡应当是真协调卡,正文必须具名读者。本卡是纯 objectui 控制台缺陷报告 —— 抽掉 objectui 什么都不剩。

    ⇒ 两条出路,⛔ 分诊席不代选:① 正文补具名 objectui 读者;或 ② 在 objectui 立卡(带出处头),本卡关为 moved。⚠️ 未单方面转仓,理由同 #15259:本仓现有十余张 repo:objectui + pm:queue,是既有惯例。

    ⚠️ 与 #15259 一并处理更省:同一个控制台、同一次 dogfood、同一个应用(objectstack-ai/kpi 的 kpi_entry_line),而且两卡在同一句话里互为对照 —— #15259 说「行内网格只发改动的单元格,成功」,正是本卡出问题的那个网格。⇒ 同一位接手方连着看,⛔ 但不合卡:两者机制不同(提交组成 vs 聚焦时序与键盘处理)。

    ⛔ 分诊席边界:不认领、不派发、不写码、不合并、不裁决。


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingpriority:p3repo:objectuiSeam card: cross-repo ordering with objectui is the substance (pure objectui fixes live in objectui)

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions