Skip to content

Conversation

mtrezza
Copy link
Member

@mtrezza mtrezza commented Oct 4, 2025

New Pull Request Checklist

Issue Description

Filter text field in data browser partly looses focus when hitting enter key to apply filter. The curser stays in the text field, but some keystrokes are applied to the selected data browser cell instead of the text field text.

Approach

Keep focus in text field and apply all key inputs to text field.

Copy link

parse-github-assistant bot commented Oct 4, 2025

🚀 Thanks for opening this pull request! We appreciate your effort in improving the project. Please let us know once your pull request is ready for review.

Copy link

coderabbitai bot commented Oct 4, 2025

📝 Walkthrough

Walkthrough

Adds focus checks in DataBrowser keyboard handling to skip global shortcuts when an input or textarea has focus, conditioned on disableKeyControls.

Changes

Cohort / File(s) Summary of Changes
Keyboard focus guard for shortcuts
src/dashboard/Data/Browser/DataBrowser.react.js
Added early-return checks in key handlers to ignore global key controls when event target is an input or textarea; respects existing disableKeyControls prop.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor User
  participant Browser as DOM
  participant DataBrowser as DataBrowser
  participant KB as KeyboardHandler

  User->>Browser: Key press
  Browser->>DataBrowser: onKeyDown(event)
  alt disableKeyControls is true
    DataBrowser-->>Browser: return (no handling)
  else input/textarea has focus
    DataBrowser->>KB: handleKey(event)
    KB-->>DataBrowser: detect input/textarea target
    DataBrowser-->>Browser: return (skip shortcuts)
  else no input focus
    DataBrowser->>KB: handleKey(event)
    KB-->>DataBrowser: process shortcuts (copy/nav/edit)
    DataBrowser-->>Browser: apply action
  end
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Description Check ⚠️ Warning The pull request description includes the template structure but leaves all key sections empty or with placeholders, omitting the actual issue reference, a summary of the issue being solved, and any description of the approach taken. Please replace the placeholder in “Closes: FILL_THIS_OUT” with the actual issue number, add a concise description of the issue, summarize the approach implemented, and complete or remove the TODO items for tests and documentation before merging.
✅ Passed checks (2 passed)
Check name Status Explanation
Title Check ✅ Passed The title clearly summarizes the primary fix by describing the filter text field losing focus when pressing enter in the data browser and specifies the context and action being corrected.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@parseplatformorg
Copy link
Contributor

🎉 Snyk checks have passed. No issues have been found so far.

security/snyk check is complete. No issues have been found. (View Details)

@mtrezza mtrezza changed the title fix fix: Filter text field in data browser partly looses focus when hitting enter key to apply filter Oct 4, 2025
@mtrezza mtrezza merged commit e3085b9 into parse-community:alpha Oct 4, 2025
10 of 11 checks passed
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
src/dashboard/Data/Browser/DataBrowser.react.js (1)

428-437: Add test coverage for the keyboard shortcut guard.

The PR description indicates tests are missing. Please add tests to verify:

  1. Keyboard shortcuts (copy, delete, navigation) are blocked when focus is on INPUT/TEXTAREA
  2. Keyboard shortcuts work normally when focus is elsewhere
  3. Text entry in filter inputs is not affected by this change

Would you like me to generate a test suite covering these scenarios?

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 53a4d99 and e7bdbed.

📒 Files selected for processing (1)
  • src/dashboard/Data/Browser/DataBrowser.react.js (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Docker linux/amd64

Comment on lines +428 to +437

// Check if the event target is an input or textarea
const target = e.target;
const isInputElement = target && (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA');

// Ignore all keyboard events when focus is on input/textarea elements
// This allows normal text editing behavior in filter inputs
if (isInputElement) {
return;
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion | 🟠 Major

🧩 Analysis chain

Verify coverage of all interactive input elements.

The focus guard correctly prevents keyboard shortcuts from interfering with INPUT and TEXTAREA elements. However, consider whether the following element types should also bypass shortcuts:

  • <select> dropdowns
  • Elements with contenteditable attribute
  • Other form controls that accept keyboard input

Run this script to check if there are select elements or contenteditable attributes in filter inputs:


🏁 Script executed:

#!/bin/bash
# Description: Find filter input components to verify which element types are used

# Search for filter-related input elements in the Browser components
rg -n --type=js --type=jsx -C3 'filter.*input|input.*filter|contenteditable|<select' src/dashboard/Data/Browser/

# Search for BrowserTable filter implementation
ast-grep --pattern 'filter' src/dashboard/Data/Browser/BrowserTable.react.js

Length of output: 27


🏁 Script executed:

#!/bin/bash
# Refined search for interactive elements in Browser components
rg -n -C3 '<select' src/dashboard/Data/Browser
rg -n -C3 'contentEditable' src/dashboard/Data/Browser
rg -n -C3 'filter' src/dashboard/Data/Browser

Length of output: 62923


Add <select> to the focus guard
The pagination limit dropdown (<select> in BrowserFooter.react.js:70) isn’t excluded by the current INPUT/TEXTAREA check and will still trigger global shortcuts. Update the guard in handleKey to also bypass when target.tagName === 'SELECT'. No contentEditable elements were found; add that in future if needed.

🤖 Prompt for AI Agents
In src/dashboard/Data/Browser/DataBrowser.react.js around lines 428 to 437, the
keyboard focus guard only checks for INPUT and TEXTAREA elements so the
pagination limit dropdown (<select>) still triggers global shortcuts; update the
isInputElement check to also treat SELECT elements as input by including
target.tagName === 'SELECT' in the condition so handleKey returns early when
focus is on a select (keep existing null/target safety checks).

parseplatformorg pushed a commit that referenced this pull request Oct 4, 2025
# [7.6.0-alpha.2](7.6.0-alpha.1...7.6.0-alpha.2) (2025-10-04)

### Bug Fixes

* Filter text field in data browser partly looses focus when hitting enter key to apply filter ([#2992](#2992)) ([e3085b9](e3085b9))
@parseplatformorg
Copy link
Contributor

🎉 This change has been released in version 7.6.0-alpha.2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
state:released-alpha Released as alpha version
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants