fix(UI): updated home page widget icons - #31624
Conversation
❌ PR checklist incompleteThis PR cannot be merged until the following are addressed on its linked issue:
The fields live on the linked issue in the Shipping project (open the issue → right sidebar → Projects). After you set them, re-run this check (or push a commit) — issue/project changes do not re-trigger it automatically. Maintainers can bypass this check by adding the |
|
| Count | Rule |
|---|---|
| 32 | react-hooks/exhaustive-deps |
| 10 | openmetadata-imports/no-lower-layer-page-imports |
| 2 | jsx-a11y/click-events-have-key-events |
| 2 | sonarjs/no-nested-conditional |
| 1 | openmetadata-imports/no-api-calls-in-iteration |
| 1 | sonarjs/no-nested-functions |
| 1 | jsx-a11y/no-static-element-interactions |
| 1 | sonarjs/cyclomatic-complexity |
All findings
| Location | Rule | Message | |
|---|---|---|---|
| 🟡 | src/components/KnowledgeCenter/KnowledgeCenterWidget/KnowledgeCenterWidget.tsx:37:1 |
openmetadata-imports/no-lower-layer-page-imports |
Pages are route-level composition modules. Move the shared implementation/type to a lower layer instead of importing a page from here. |
| 🟡 | src/components/KnowledgeCenter/KnowledgeCenterWidget/KnowledgeCenterWidget.tsx:101:6 |
react-hooks/exhaustive-deps |
React Hook useMemo has an unnecessary dependency: 't'. Either exclude it or remove the dependency array. Outer scope values like 't' aren't valid dependencies b |
| 🟡 | src/components/KnowledgeCenter/KnowledgeCenterWidget/KnowledgeCenterWidget.tsx:164:6 |
react-hooks/exhaustive-deps |
React Hook useMemo has a missing dependency: 'getGridTemplateColumns'. Either include it or remove the dependency array. |
| 🟡 | src/components/KnowledgeCenter/KnowledgeCenterWidget/KnowledgeCenterWidget.tsx:179:6 |
react-hooks/exhaustive-deps |
React Hook useMemo has a missing dependency: 'showWidgetFooterMoreButton'. Either include it or remove the dependency array. |
| 🟡 | src/components/KnowledgeCenter/KnowledgeCenterWidget/KnowledgeCenterWidget.tsx:195:6 |
react-hooks/exhaustive-deps |
React Hook useMemo has a missing dependency: 'navigate'. Either include it or remove the dependency array. |
| 🟡 | src/components/KnowledgeCenter/KnowledgeCenterWidget/KnowledgeCenterWidget.tsx:206:6 |
react-hooks/exhaustive-deps |
React Hook useEffect has a missing dependency: 'fetchUserKnowledgeArticles'. Either include it or remove the dependency array. |
| 🟡 | src/components/MyData/CustomizableComponents/CustomiseHomeModal/CustomiseHomeModal.tsx:169:6 |
react-hooks/exhaustive-deps |
React Hook useMemo has a missing dependency: 't'. Either include it or remove the dependency array. |
| 🟡 | src/components/MyData/CustomizableComponents/CustomiseHomeModal/CustomiseHomeModal.tsx:218:13 |
jsx-a11y/click-events-have-key-events |
Visible, non-interactive elements with click handlers must have at least one keyboard listener. |
| 🟡 | src/components/MyData/CustomizableComponents/CustomiseHomeModal/CustomiseHomeModal.tsx:246:6 |
react-hooks/exhaustive-deps |
React Hook useMemo has a missing dependency: 'widgets.length'. Either include it or remove the dependency array. |
| 🟡 | src/components/MyData/FeedWidget/FeedWidget.component.tsx:29:1 |
openmetadata-imports/no-lower-layer-page-imports |
Pages are route-level composition modules. Move the shared implementation/type to a lower layer instead of importing a page from here. |
| 🟡 | src/components/MyData/FeedWidget/FeedWidget.component.tsx:70:6 |
react-hooks/exhaustive-deps |
React Hook useCallback has a missing dependency: 'handleRemoveWidget'. Either include it or remove the dependency array. If 'handleRemoveWidget' changes too oft |
| 🟡 | src/components/MyData/FeedWidget/FeedWidget.component.tsx:134:6 |
react-hooks/exhaustive-deps |
React Hook useMemo has a missing dependency: 't'. Either include it or remove the dependency array. |
| 🟡 | src/components/MyData/FeedWidget/FeedWidget.component.tsx:159:6 |
react-hooks/exhaustive-deps |
React Hook useMemo has a missing dependency: 't'. Either include it or remove the dependency array. |
| 🟡 | src/components/MyData/FeedWidget/FeedWidget.component.tsx:194:5 |
react-hooks/exhaustive-deps |
React Hook useMemo has missing dependencies: 'navigate' and 'userActivityFeedLink'. Either include them or remove the dependency array. |
| 🟡 | src/components/MyData/MyDataWidget/MyDataWidget.component.tsx:38:1 |
openmetadata-imports/no-lower-layer-page-imports |
Pages are route-level composition modules. Move the shared implementation/type to a lower layer instead of importing a page from here. |
| 🟡 | src/components/MyData/MyDataWidget/MyDataWidget.component.tsx:161:6 |
react-hooks/exhaustive-deps |
React Hook useCallback has unnecessary dependencies: 'applySortToData', 'getSortField', and 'getSortOrder'. Either exclude them or remove the dependency array. |
| 🟡 | src/components/MyData/MyDataWidget/MyDataWidget.component.tsx:185:5 |
react-hooks/exhaustive-deps |
React Hook useMemo has a missing dependency: 't'. Either include it or remove the dependency array. |
| 🟡 | src/components/MyData/MyDataWidget/MyDataWidget.component.tsx:251:6 |
react-hooks/exhaustive-deps |
React Hook useMemo has a missing dependency: 't'. Either include it or remove the dependency array. |
| 🟡 | src/components/MyData/MyDataWidget/MyDataWidget.component.tsx:285:5 |
react-hooks/exhaustive-deps |
React Hook useMemo has missing dependencies: 'currentUser?.name' and 'navigate'. Either include them or remove the dependency array. |
| 🟡 | src/components/MyData/RightSidebar/FollowingWidget.tsx:38:1 |
openmetadata-imports/no-lower-layer-page-imports |
Pages are route-level composition modules. Move the shared implementation/type to a lower layer instead of importing a page from here. |
| 🟡 | src/components/MyData/RightSidebar/FollowingWidget.tsx:176:5 |
react-hooks/exhaustive-deps |
React Hook useMemo has a missing dependency: 't'. Either include it or remove the dependency array. |
| 🟡 | src/components/MyData/RightSidebar/FollowingWidget.tsx:248:6 |
react-hooks/exhaustive-deps |
React Hook useMemo has a missing dependency: 't'. Either include it or remove the dependency array. |
| 🟡 | src/components/MyData/RightSidebar/FollowingWidget.tsx:277:5 |
react-hooks/exhaustive-deps |
React Hook useMemo has missing dependencies: 'currentUser?.name' and 'navigate'. Either include them or remove the dependency array. |
| 🟡 | src/components/MyData/Widgets/CuratedAssetsWidget/CuratedAssetsWidget.tsx:45:1 |
openmetadata-imports/no-lower-layer-page-imports |
Pages are route-level composition modules. Move the shared implementation/type to a lower layer instead of importing a page from here. |
| 🟡 | src/components/MyData/Widgets/CuratedAssetsWidget/CuratedAssetsWidget.tsx:216:6 |
react-hooks/exhaustive-deps |
React Hook useCallback has an unnecessary dependency: 'curatedAssetsConfig'. Either exclude it or remove the dependency array. |
| 🟡 | src/components/MyData/Widgets/CuratedAssetsWidget/CuratedAssetsWidget.tsx:454:5 |
react-hooks/exhaustive-deps |
React Hook useMemo has an unnecessary dependency: 'curatedAssetsWidth'. Either exclude it or remove the dependency array. |
| 🟡 | src/components/MyData/Widgets/DataAssetsWidget/DataAssetsWidget.component.tsx:29:1 |
openmetadata-imports/no-lower-layer-page-imports |
Pages are route-level composition modules. Move the shared implementation/type to a lower layer instead of importing a page from here. |
| 🟡 | src/components/MyData/Widgets/DataAssetsWidget/DataAssetsWidget.component.tsx:79:6 |
react-hooks/exhaustive-deps |
React Hook useCallback has a missing dependency: 'selectedSortBy'. Either include it or remove the dependency array. |
| 🟡 | src/components/MyData/Widgets/DataAssetsWidget/DataAssetsWidget.component.tsx:177:5 |
react-hooks/exhaustive-deps |
React Hook useMemo has an unnecessary dependency: 'widgetData.w'. Either exclude it or remove the dependency array. |
| 🟡 | src/components/MyData/Widgets/DataAssetsWidget/DataAssetsWidget.component.tsx:205:5 |
react-hooks/exhaustive-deps |
React Hook useMemo has a missing dependency: 'services'. Either include it or remove the dependency array. |
| 🟡 | src/components/MyData/Widgets/DataProductsWidget/DataProductsWidget.component.tsx:35:1 |
openmetadata-imports/no-lower-layer-page-imports |
Pages are route-level composition modules. Move the shared implementation/type to a lower layer instead of importing a page from here. |
| 🟡 | src/components/MyData/Widgets/DataProductsWidget/DataProductsWidget.component.tsx:101:6 |
react-hooks/exhaustive-deps |
React Hook useCallback has a missing dependency: 't'. Either include it or remove the dependency array. Outer scope values like 'getSortField' aren't valid depe |
| 🟡 | src/components/MyData/Widgets/DataProductsWidget/DataProductsWidget.component.tsx:288:15 |
sonarjs/no-nested-conditional |
Extract this nested ternary operation into an independent statement. |
| 🟡 | src/components/MyData/Widgets/DomainsWidget/DomainsWidget.tsx:34:1 |
openmetadata-imports/no-lower-layer-page-imports |
Pages are route-level composition modules. Move the shared implementation/type to a lower layer instead of importing a page from here. |
| 🟡 | src/components/MyData/Widgets/DomainsWidget/DomainsWidget.tsx:119:6 |
react-hooks/exhaustive-deps |
React Hook useCallback has a missing dependency: 't'. Either include it or remove the dependency array. Outer scope values like 'getSortField' aren't valid depe |
| 🟡 | src/components/MyData/Widgets/DomainsWidget/DomainsWidget.tsx:294:15 |
sonarjs/no-nested-conditional |
Extract this nested ternary operation into an independent statement. |
| 🟡 | src/components/MyData/Widgets/KPIWidget/KPIWidget.component.tsx:121:9 |
react-hooks/exhaustive-deps |
The 'handleTitleClick' function makes the dependencies of useMemo Hook (at line 444) change on every render. Move it inside the useMemo callback. Alternatively, |
| 🟡 | src/components/MyData/Widgets/KPIWidget/KPIWidget.component.tsx:153:9 |
openmetadata-imports/no-api-calls-in-iteration |
Avoid issuing one API request per item. Fetch at the data owner, use a bulk endpoint, or use useQueries with an intentional concurrency policy. |
| 🟡 | src/components/MyData/Widgets/KPIWidget/KPIWidget.component.tsx:275:45 |
sonarjs/no-nested-functions |
Refactor this code to not nest functions more than 4 levels deep. |
| 🟡 | src/components/MyData/Widgets/KPIWidget/KPIWidget.component.tsx:402:6 |
react-hooks/exhaustive-deps |
React Hook useMemo has a missing dependency: 'customTooltipStyles'. Either include it or remove the dependency array. |
| 🟡 | src/components/MyData/Widgets/KPIWidget/KPIWidget.component.tsx:428:6 |
react-hooks/exhaustive-deps |
React Hook useEffect has missing dependencies: 'fetchKpiLatestResults' and 'fetchKpiResults'. Either include them or remove the dependency array. |
| 🟡 | src/components/MyData/Widgets/MyTaskWidget/MyTaskWidget.tsx:28:1 |
openmetadata-imports/no-lower-layer-page-imports |
Pages are route-level composition modules. Move the shared implementation/type to a lower layer instead of importing a page from here. |
| 🟡 | src/components/MyData/Widgets/MyTaskWidget/MyTaskWidget.tsx:124:5 |
react-hooks/exhaustive-deps |
React Hook useMemo has a missing dependency: 'navigate'. Either include it or remove the dependency array. |
| 🟡 | src/components/MyData/Widgets/TotalDataAssetsWidget/TotalDataAssetsWidget.component.tsx:304:15 |
jsx-a11y/click-events-have-key-events |
Visible, non-interactive elements with click handlers must have at least one keyboard listener. |
| 🟡 | src/components/MyData/Widgets/TotalDataAssetsWidget/TotalDataAssetsWidget.component.tsx:304:15 |
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/MyData/Widgets/TotalDataAssetsWidget/TotalDataAssetsWidget.component.tsx:330:6 |
react-hooks/exhaustive-deps |
React Hook useEffect has a missing dependency: 'fetchData'. Either include it or remove the dependency array. |
| 🟡 | src/components/MyData/Widgets/TotalDataAssetsWidget/TotalDataAssetsWidget.component.tsx:336:6 |
react-hooks/exhaustive-deps |
React Hook useEffect has a missing dependency: 'selectedDate'. Either include it or remove the dependency array. |
| 🟡 | src/components/MyData/Widgets/TotalDataAssetsWidget/TotalDataAssetsWidget.component.tsx:364:5 |
react-hooks/exhaustive-deps |
React Hook useMemo has a missing dependency: 'navigate'. Either include it or remove the dependency array. |
| 🟡 | src/utils/CustomizeMyDataPageClassBase.ts:31:1 |
openmetadata-imports/no-lower-layer-page-imports |
Pages are route-level composition modules. Move the shared implementation/type to a lower layer instead of importing a page from here. |
| 🟡 | src/utils/CustomizeMyDataPageClassBase.ts:114:10 |
sonarjs/cyclomatic-complexity |
{"message":"Function has a complexity of 13 which is greater than 10 authorized.","cost":3,"secondaryLocations":[{"line":114,"column":9,"endLine":114,"endColumn |
Fix locally (fast - only checks files changed in this branch):
make ui-checkstyle-changed
|
✅ Playwright Results — workflow succeededValidated commit ✅ 770 passed · ❌ 0 failed · 🟡 2 flaky · ⏭️ 0 skipped · 🧰 0 lifecycle flaky PerformanceBlocking 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) 52m 29s ⏱️ Max setup 3m 2s · max shard execution 19m 20s · max shard-job elapsed before upload 22m 58s · reporting 6s 🌐 199.99 requests/attempt · 2.75 app boots/UI scenario · 7.76% common-shard skew Optimization targets still in progress:
🟡 2 flaky test(s) (passed on retry)
How to debug locally# Download playwright-test-results-<shard> artifact and unzip
npx playwright show-trace path/to/trace.zip # view trace |
Code Review ✅ ApprovedUpdates home page widget icons and adds widget filtering support via CustomizeMyDataPageClassBase. No issues found. OptionsDisplay: compact → Showing less information. Comment with these commands to change the behavior for this request:
Was this helpful? React with 👍 / 👎 | Powered by Gitar — free for open source |
* fix(UI): updated home page widget icons * lint fix



Describe your changes:
Screen.Recording.2026-08-17.at.3.20.37.PM.mov
Fixes #
I worked on ... because ...
Type of change:
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:
Fixes <issue-number>: <short explanation>Fixes #<issue-number>above.Summary by Gitar
CustomizeMyDataPageClassBaseThis will update automatically on new commits.
Greptile Summary
The PR refreshes home-page widget header icons and introduces an extension point for excluding widgets from the customization modal.
getExcludedWidgetFqns(), whose base implementation excludes nothing.Confidence Score: 5/5
The PR appears safe to merge.
No blocking failure remains.
Important Files Changed
Reviews (2): Last reviewed commit: "lint fix" | Re-trigger Greptile