Skip to content

fix: Restore keyboard navigation in category and currency selectors#491

Open
j4n wants to merge 1 commit into
spliit-app:mainfrom
j4n:j4n/expense-dropdown-keyboard-navigation
Open

fix: Restore keyboard navigation in category and currency selectors#491
j4n wants to merge 1 commit into
spliit-app:mainfrom
j4n:j4n/expense-dropdown-keyboard-navigation

Conversation

@j4n

@j4n j4n commented Jan 15, 2026

Copy link
Copy Markdown

My navigation for entering expenses used to be possible using just Tab and Up/Down Arrow Keys; searching for the Category and then choosing the right one with the arrow keys. This broke recently, this PR restores keyboard navigation (Up/Down arrow keys) in category and currency selector dropdowns.

The category and currency selectors use the https://github.com/dip/cmdk library for searchable command menus, according to the examples items should be wrapped in Command.List. The selectors were using a plain

with custom overflow styling instead of CommandList, which seems to have broke arrow key navigation.

Wrap command items in CommandList instead of a plain div to restore
arrow key navigation in the category and currency dropdown selectors.

The cmdk library requires CommandList (CommandPrimitive.List) to handle
keyboard events for navigating between items with Up/Down arrow keys.
BastiOfBerlin pushed a commit to BastiOfBerlin/spliit that referenced this pull request Jun 11, 2026
Port several improvements from upstream spliit-app/spliit:

- Exchange rates: migrate from api.frankfurter.app to api.frankfurter.dev/v1,
  fixing broken foreign-currency conversion (upstream spliit-app#515 / bugs spliit-app#513, spliit-app#514).
- Selectors: wrap category and currency lists in cmdk's CommandList so keyboard
  (arrow-key) navigation works again (upstream spliit-app#491).
- Group sharing: render a scannable QR code of the invite link in the share
  popover via qrcode.react (upstream spliit-app#500).
- Currencies: add COP, VND, MKD, and MYR to the supported list and regenerate
  the per-locale currency data (upstream spliit-app#486, spliit-app#507, spliit-app#516, spliit-app#521).
- React Compiler: enable Next.js 16's stable reactCompiler for automatic
  memoization, adding the babel-plugin-react-compiler dev dependency
  (upstream spliit-app#503).
- Docker build: parse package.json name/version with POSIX tools instead of
  `node -p`, so the image can be built on hosts without Node.js (upstream spliit-app#219).
- Docs: document the Docker Compose workflow and stack in the README
  (upstream spliit-app#505).
BastiOfBerlin pushed a commit to BastiOfBerlin/spliit that referenced this pull request Jun 11, 2026
Port several improvements from upstream spliit-app/spliit:

- Exchange rates: migrate from api.frankfurter.app to api.frankfurter.dev/v1,
  fixing broken foreign-currency conversion (upstream spliit-app#515 / bugs spliit-app#513, spliit-app#514).
- Selectors: wrap category and currency lists in cmdk's CommandList so keyboard
  (arrow-key) navigation works again (upstream spliit-app#491).
- Group sharing: render a scannable QR code of the invite link in the share
  popover via qrcode.react (upstream spliit-app#500).
- Currencies: add COP, VND, MKD, and MYR to the supported list and regenerate
  the per-locale currency data (upstream spliit-app#486, spliit-app#507, spliit-app#516, spliit-app#521).
- React Compiler: enable Next.js 16's stable reactCompiler for automatic
  memoization, adding the babel-plugin-react-compiler dev dependency
  (upstream spliit-app#503).
- Docker build: parse package.json name/version with POSIX tools instead of
  `node -p`, so the image can be built on hosts without Node.js (upstream spliit-app#219).
- Docs: document the Docker Compose workflow and stack in the README
  (upstream spliit-app#505).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant