Baike.dev
All toolsAI codingTrendingOpen sourceNewsSubmit
Log in
Back to tool/Back to issues
#5125·plate

[Beta]: Arrow keys should skip Date elements

Author: felixfeng33Created Sep 9, 2026Updated Sep 9, 2026
Labelsbug

Bug type

Behavior bug (incorrect output/state without crash)

Browser surface

Yes

Owner surface

Plate framework or plugin

Summary

Date elements should be crossed in one arrow-key press, without an intermediate cursor stop on the Date element.

Public reproduction URL

NOT_ENOUGH_INFO

Steps to reproduce

  1. Open a Plate next/Beta editor using the default DateKit. The repository provides /blocks/date-demo as a candidate route.
  2. Insert a Date between two text runs.
  3. Place a collapsed caret immediately before the Date: before |[Date] after.
  4. Press ArrowRight once.
  5. Repeat from immediately after the Date with ArrowLeft.

These steps define the requested case from the user description and source inspection; browser replay is still required.

Expected behavior

One ArrowRight press moves directly from before |[Date] after to before [Date]| after. ArrowLeft should cross the Date in the opposite direction in one press.

Authority: explicit maintainer request that Date elements be skipped during arrow-key navigation. No known-good release comparison was supplied.

Actual behavior

Source inspection indicates an intermediate stop on Date rather than a single-step crossing. BaseDatePlugin declares void: 'inline' without overriding selectable, which defaults to true. Existing Plite character-movement tests expect a selectable inline void to take two steps to cross.

This is a source-backed diagnosis, not an independently observed browser result.

Acceptance criteria

  • ArrowRight crosses a Date from its immediate left to its immediate right in one press.
  • ArrowLeft crosses it in one press in the reverse direction.
  • Movement does not change the Date value or surrounding text.
  • Clicking the Date still opens its date picker.
  • Verify the default DateKit in a real browser and add coverage for both directions.

Regression range

NOT_ENOUGH_INFO

Reproducibility

NOT_ENOUGH_INFO

Plate / Plite / React versions

Testing lane: Plate next/Beta. Exact affected build and package versions: NOT_ENOUGH_INFO. Remote next head at filing: a6afd55c30e97c74fe895d1ad005ca75413110f3. This is a reference snapshot, not a browser-tested failing commit.

Operating system

NOT_ENOUGH_INFO

Install method

NOT_ENOUGH_INFO

Framework / app setup

NOT_ENOUGH_INFO

Affected packages or entry points

platejs/date, platejs/date/react, registry DateKit, Plite caret movement.

Minimal code or config excerpt

Relevant default schema:

typescript
schema: {
  element: {
    // Date value property omitted here.
    void: 'inline',
  },
}

Logs, screenshots, and evidence

Text-only report; no media uploaded. A recording adds no necessary detail to the requested single-key transition. Browser validation remains part of implementation acceptance.

Inspected local source:

  • packages/platejs/src/features/date/lib/BaseDatePlugin.ts: Date schema.
  • packages/plitejs/src/core/schema-compiler.ts: default selection behavior.
  • packages/plitejs/test/query-contract.ts: supports character movement around inline voids as atomic boundaries and supports editorAfter by skipping non-selectable inline void descendants.
  • packages/plitejs/src/react/editable/caret-engine.ts: horizontal movement dispatch.

Maintainer Codex context

Start with the default DateKit and reproduce the exact boundary movement. The lower layer already supports skipping non-selectable inline voids. Check Date picker interaction before choosing a schema change; the requested outcome is arrow-key skipping, not disabling Date interaction. This issue does not require adding a public option named skip.

Impact and severity

Date navigation requires an unwanted intermediate stop. Runtime frequency and broader impact: NOT_ENOUGH_INFO.

Source: udecode/plate

View original on GitHubView discussion on GitHub