Is there an existing issue for this?
Description
I am trying to build a high-speed, keyboard-only data entry form. However, native Appsmith widgets make this impossible because the browser's focus and keyboard tab order break in three distinct, reproducible ways.
(Note: All references to "Tab" in this report refer to pressing the physical Tab key on a keyboard, not the Appsmith Tabs UI widget).
Without a native focusWidget() JS function or a manual TabIndex property, developers are forced to build custom HTML iframes just to get basic keyboard navigation to work.
Workarounds Attempted:
- Reverse UI Layout: Reversing the physical layout to avoid tabbing out of a Select widget (didn't help - later discovered this issue is for all widgets not only select).
- Custom Widgets: The only working solution currently is to abandon Appsmith's native inputs entirely and write a
Custom Widget using raw HTML <input> tags and custom JS event listeners to manually trap and pass focus.
Environment:
- Appsmith Version: 1.96
- OS: Ubuntu
- Browser: Chrome
Steps To Reproduce
Bug 1: The "Select Widget Portal" Focus Drop
- Place a
Select widget and an Input widget side-by-side.
- Click into the
Select widget, type to search, and hit Enter to confirm the selection.
- Press the
Tab key to move to the Input widget.
- Actual Behavior: Because the Select dropdown renders in a portal at the bottom of the DOM, when the portal closes on
Enter, the browser completely loses its focus state. Pressing the Tab key causes the focus to rocket back to the very first/topmost widget on the canvas instead of the adjacent Input widget.
Bug 2: The Topmost Widget Tab Key Failure
- Focus the cursor on the highest widget on the page/canvas.
- Press the
Tab key to move to the next logically placed widget below it.
- Actual Behavior: Nothing happens. The
Tab key completely fails to move focus. The only way to escape this state and continue data entry is to manually click into another widget with the mouse, entirely defeating the purpose of keyboard navigation.
Bug 3: The Unpredictable Jump to Top
- Focus the cursor on a standard
Input widget.
- Type a value and press the
Tab key to move to the next widget.
- Actual Behavior: Instead of moving to the adjacent widget, the focus unexpectedly drops and jumps all the way back to the topmost widget on the page. The keyboard tab order completely breaks and resets to the top of the DOM.
Public Sample App
No response
Environment
Production
Severity
High (Blocker to building or releasing)
Issue video log
No response
Version
Self Hosted v.1.96
Is there an existing issue for this?
Description
I am trying to build a high-speed, keyboard-only data entry form. However, native Appsmith widgets make this impossible because the browser's focus and keyboard tab order break in three distinct, reproducible ways.
(Note: All references to "Tab" in this report refer to pressing the physical
Tabkey on a keyboard, not the Appsmith Tabs UI widget).Without a native
focusWidget()JS function or a manualTabIndexproperty, developers are forced to build custom HTML iframes just to get basic keyboard navigation to work.Workarounds Attempted:
Custom Widgetusing raw HTML<input>tags and custom JS event listeners to manually trap and pass focus.Environment:
Steps To Reproduce
Bug 1: The "Select Widget Portal" Focus Drop
Selectwidget and anInputwidget side-by-side.Selectwidget, type to search, and hitEnterto confirm the selection.Tabkey to move to theInputwidget.Enter, the browser completely loses its focus state. Pressing theTabkey causes the focus to rocket back to the very first/topmost widget on the canvas instead of the adjacentInputwidget.Bug 2: The Topmost Widget
TabKey FailureTabkey to move to the next logically placed widget below it.Tabkey completely fails to move focus. The only way to escape this state and continue data entry is to manually click into another widget with the mouse, entirely defeating the purpose of keyboard navigation.Bug 3: The Unpredictable Jump to Top
Inputwidget.Tabkey to move to the next widget.Public Sample App
No response
Environment
Production
Severity
High (Blocker to building or releasing)
Issue video log
No response
Version
Self Hosted v.1.96