Skip to content

fix(ui): make whole Domain and Data Product rows clickable - #31876

Queued
anuj-kumary wants to merge 3 commits into
mainfrom
issue-#31874
Queued

fix(ui): make whole Domain and Data Product rows clickable#31876
anuj-kumary wants to merge 3 commits into
mainfrom
issue-#31874

Conversation

@anuj-kumary

@anuj-kumary anuj-kumary commented Aug 21, 2026

Copy link
Copy Markdown
Member

Describe your changes:

Fixes #31874

On the Domain and Data Product list pages, clicking a row was supposed to open that item's details page, but clicking on the name (or the area around it) did nothing, so the row felt only partly clickable.

Screen.Recording.2026-08-21.at.2.40.23.PM.mov
Screen.Recording.2026-08-21.at.2.41.55.PM.mov

Type of change:

  • Bug fix
  • Improvement
  • New feature
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation

High-level design:

N/A — small change.

Tests:

Use cases covered

Unit tests

Backend integration tests

Ingestion integration tests

Playwright (UI) tests

Manual testing performed

UI screen recording / screenshots:

Not applicable.

Checklist:

  • I have read the CONTRIBUTING document.
  • My PR title is Fixes <issue-number>: <short explanation>
  • My PR is linked to a GitHub issue via Fixes #<issue-number> above.
  • I have commented on my code, particularly in hard-to-understand areas.
  • For JSON Schema changes: I updated the migration scripts or explained why it is not needed.
  • For UI changes: I attached a screen recording and/or screenshots above.
  • I have added tests (unit / integration / Playwright as applicable) and listed them above.

Greptile Summary

This follow-up completes the row-click navigation fix for Domain and Data Product listings.

  • Routes name-cell clicks through the existing entity navigation handlers.
  • Stops name-cell clicks from bubbling to the row and triggering duplicate navigation.
  • Adds focused tests for callback routing and propagation behavior.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains.

Important Files Changed

Filename Overview
openmetadata-ui/src/main/resources/ui/src/components/DataProduct/DataProductListPage.tsx Adds a propagation-safe Data Product name-cell click handler and keeps its callback dependency current.
openmetadata-ui/src/main/resources/ui/src/components/DomainListing/DomainListPage.tsx Supplies the Domain entity navigation callback to the shared table-column renderer.
openmetadata-ui/src/main/resources/ui/src/components/common/atoms/domain/ui/domainFieldRenderers.tsx Makes Domain name cells clickable while preventing the same gesture from reaching row navigation.
openmetadata-ui/src/main/resources/ui/src/components/common/atoms/domain/ui/useDomainTableColumns.tsx Wires each Domain entity into the optional name-cell navigation callback.
openmetadata-ui/src/main/resources/ui/src/components/common/atoms/domain/ui/domainFieldRenderers.test.tsx Verifies single callback invocation, propagation suppression, and behavior without a cell callback.
openmetadata-ui/src/main/resources/ui/src/components/common/atoms/domain/ui/useDomainTableColumns.test.tsx Verifies that Domain name-cell clicks receive the correct entity and preserve fallback row handling.

Reviews (3): Last reviewed commit: "Added unit test for the fix" | Re-trigger Greptile

@anuj-kumary anuj-kumary self-assigned this Aug 21, 2026
@anuj-kumary anuj-kumary added UI UI specific issues safe to test Add this label to run secure Github workflows on PRs labels Aug 21, 2026
@github-actions

github-actions Bot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

⚠️ UI Checkstyle passed — lint findings in changed files

🔍 ESLint findings in this PR's files — 0 error(s), 18 warning(s)

Errors block the build. Warnings do not yet — they are rules whose backlog is still
being worked down, listed so this PR does not add to it. See docs/ui-code-quality-gate.md.

0 error(s), 18 warning(s) across 4 changed file(s).

Count Rule
5 jsx-a11y/click-events-have-key-events
5 jsx-a11y/no-static-element-interactions
3 sonarjs/cyclomatic-complexity
3 react-hooks/exhaustive-deps
2 sonarjs/no-duplicate-string
All findings
Location Rule Message
🟡 src/components/DataProduct/DataProductListPage.tsx:76:30 sonarjs/cyclomatic-complexity {"message":"Function has a complexity of 12 which is greater than 10 authorized.","cost":2,"secondaryLocations":[{"line":76,"column":29,"endLine":76,"endColumn"
🟡 src/components/DataProduct/DataProductListPage.tsx:148:15 sonarjs/no-duplicate-string Define a constant instead of duplicating this literal 4 times.
🟡 src/components/DataProduct/DataProductListPage.tsx:169:56 sonarjs/cyclomatic-complexity {"message":"Function has a complexity of 13 which is greater than 10 authorized.","cost":3,"secondaryLocations":[{"line":169,"column":55,"endLine":169,"endColum
🟡 src/components/DataProduct/DataProductListPage.tsx:266:5 react-hooks/exhaustive-deps React Hook useCallback has a missing dependency: 'dataProductListing.actionHandlers'. Either include it or remove the dependency array.
🟡 src/components/DataProduct/DataProductListPage.tsx:376:6 react-hooks/exhaustive-deps React Hook useMemo has missing dependencies: 'dataProductColumns' and 'dataProductListing'. Either include them or remove the dependency array.
🟡 src/components/DomainListing/DomainListPage.tsx:51:68 sonarjs/cyclomatic-complexity {"message":"Function has a complexity of 13 which is greater than 10 authorized.","cost":3,"secondaryLocations":[{"line":51,"column":67,"endLine":51,"endColumn"
🟡 src/components/DomainListing/DomainListPage.tsx:125:15 sonarjs/no-duplicate-string Define a constant instead of duplicating this literal 3 times.
🟡 src/components/DomainListing/DomainListPage.tsx:257:6 react-hooks/exhaustive-deps React Hook useMemo has missing dependencies: 'domainColumns' and 'domainListing'. Either include them or remove the dependency array.
🟡 src/components/common/atoms/domain/ui/domainFieldRenderers.test.tsx:27:5 jsx-a11y/click-events-have-key-events Visible, non-interactive elements with click handlers must have at least one keyboard listener.
🟡 src/components/common/atoms/domain/ui/domainFieldRenderers.test.tsx:27:5 jsx-a11y/no-static-element-interactions Avoid non-native interactive elements. If using native HTML is not possible, add an appropriate role and support for tabbing, mouse, keyboard, and touch inputs
🟡 src/components/common/atoms/domain/ui/domainFieldRenderers.test.tsx:62:7 jsx-a11y/click-events-have-key-events Visible, non-interactive elements with click handlers must have at least one keyboard listener.
🟡 src/components/common/atoms/domain/ui/domainFieldRenderers.test.tsx:62:7 jsx-a11y/no-static-element-interactions Avoid non-native interactive elements. If using native HTML is not possible, add an appropriate role and support for tabbing, mouse, keyboard, and touch inputs
🟡 src/components/common/atoms/domain/ui/domainFieldRenderers.test.tsx:73:12 jsx-a11y/click-events-have-key-events Visible, non-interactive elements with click handlers must have at least one keyboard listener.
🟡 src/components/common/atoms/domain/ui/domainFieldRenderers.test.tsx:73:12 jsx-a11y/no-static-element-interactions Avoid non-native interactive elements. If using native HTML is not possible, add an appropriate role and support for tabbing, mouse, keyboard, and touch inputs
🟡 src/components/common/atoms/domain/ui/useDomainTableColumns.test.tsx:31:5 jsx-a11y/click-events-have-key-events Visible, non-interactive elements with click handlers must have at least one keyboard listener.
🟡 src/components/common/atoms/domain/ui/useDomainTableColumns.test.tsx:31:5 jsx-a11y/no-static-element-interactions Avoid non-native interactive elements. If using native HTML is not possible, add an appropriate role and support for tabbing, mouse, keyboard, and touch inputs
🟡 src/components/common/atoms/domain/ui/useDomainTableColumns.test.tsx:72:7 jsx-a11y/click-events-have-key-events Visible, non-interactive elements with click handlers must have at least one keyboard listener.
🟡 src/components/common/atoms/domain/ui/useDomainTableColumns.test.tsx:72:7 jsx-a11y/no-static-element-interactions Avoid non-native interactive elements. If using native HTML is not possible, add an appropriate role and support for tabbing, mouse, keyboard, and touch inputs

Fix locally (fast - only checks files changed in this branch):

make ui-checkstyle-changed

@github-actions

github-actions Bot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Jest test Coverage

UI tests summary

Lines Statements Branches Functions
Coverage: 67%
67.05% (80417/119929) 51.47% (49243/95670) 52.45% (14701/28028)

@github-actions

github-actions Bot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

✅ Playwright Results — workflow succeeded

Validated commit 00ffda8192da721441f265ea35da7b002c5822d5 in Playwright run 32479404509, attempt 1.

✅ 754 passed · ❌ 0 failed · 🟡 2 flaky · ⏭️ 0 skipped · 🧰 0 lifecycle flaky

Performance

Blocking targets: ✅ met · Optimization targets: 🟡 in progress

Shard-job maxima below are not the full workflow wall time; the linked run includes build, fixture, planning, and reporting.

🕒 Full workflow signal wall (to summary) 49m 17s

⏱️ Max setup 4m 14s · max shard execution 16m 47s · max shard-job elapsed before upload 20m 20s · reporting 6s

🌐 216.79 requests/attempt · 2.72 app boots/UI scenario · 19.96% common-shard skew

Optimization targets still in progress:

  • Common shard skew was 19.96% (convergence target: at most 15%).
  • Browser traffic was 216.79 requests per attempt (convergence target: fewer than 200).
  • Application boot ratio was 2.72 per UI scenario (2125 boots / 782 scenarios; convergence target: at most 1).
Shard Passed Failed Flaky Skipped Lifecycle failed Lifecycle flaky
🟡 Shard chromium-01 112 0 1 0 0 0
🟡 Shard chromium-02 125 0 1 0 0 0
✅ Shard chromium-03 121 0 0 0 0 0
✅ Shard chromium-04 126 0 0 0 0 0
✅ Shard chromium-05 115 0 0 0 0 0
✅ Shard data-asset-rules-01 61 0 0 0 0 0
✅ Shard domain-isolation-01 16 0 0 0 0 0
✅ Shard global-state-01 34 0 0 0 0 0
✅ Shard ingestion-01 1 0 0 0 0 0
✅ Shard reindex-01 3 0 0 0 0 0
✅ Shard search-01 11 0 0 0 0 0
✅ Shard search-rbac-01 29 0 0 0 0 0
🟡 2 flaky test(s) (passed on retry)
  • Pages/DomainAdvanced.spec.tsUser with domain access can view subdomains (shard chromium-01, 1 retry)
  • Pages/Domains.spec.tsVerify domain and subdomain asset count accuracy (shard chromium-02, 1 retry)

📦 Download artifacts

How to debug locally
# Download playwright-test-results-<shard> artifact and unzip
npx playwright show-trace path/to/trace.zip    # view trace

@anuj-kumary
anuj-kumary enabled auto-merge August 21, 2026 11:21
shah-harshit
shah-harshit previously approved these changes Aug 21, 2026
@gitar-bot

gitar-bot Bot commented Aug 21, 2026

Copy link
Copy Markdown
Code Review ✅ Approved 1 resolved / 1 findings

Makes the entire Domain and Data Product rows clickable by passing navigation callbacks into the name-cell renderers, addressing the double-firing navigation finding.

✅ 1 resolved
Bug: Name-cell onClick may double-fire with row onAction navigation

📄 openmetadata-ui/src/main/resources/ui/src/components/common/atoms/domain/ui/domainFieldRenderers.tsx:71-85 📄 openmetadata-ui/src/main/resources/ui/src/components/DataProduct/DataProductListPage.tsx:171-179
The row already navigates through react-aria's Table.Row onAction={() => onEntityClick(entity)} in EntityListingTable, and the diff adds a native onClick calling the same onEntityClick on the name-cell Box. If a click on the name area is also captured by the row's press handler, onEntityClick runs twice; since it calls React Router navigate() with no dedup, this pushes a duplicate history entry (an extra Back press needed to leave the page). This is the intended fix for clicks that previously did nothing, so double-firing may not occur, but it is unverified. Consider calling e.stopPropagation() in the cell handler (e.g. onClick={(e) => { e.stopPropagation(); onEntityClick?.(entity); }}) to guarantee a single navigation.

Options

Display: compact → Showing less information.

Comment with these commands to change the behavior for this request:

Compact
gitar display:verbose         

Was this helpful? React with 👍 / 👎 | Powered by Gitar — free for open source

@sonarqubecloud

Copy link
Copy Markdown

@anuj-kumary
anuj-kumary added this pull request to the merge queue Aug 21, 2026
Any commits made after this event will not be merged.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

safe to test Add this label to run secure Github workflows on PRs UI UI specific issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Domain and Data Product rows aren't fully clickable clicking the name doesn't open the details page

3 participants