feat(custom-properties): inline Add/Edit panel with Show Hint toggle in workspace profile - #33062
Conversation
…Edit UX in workspace profile - Add CustomPropertiesPanel, CustomPropertiesLandingPage, CustomPropertiesDetailPage, CustomPropertiesAddPage, CustomPropertiesEditPage components for managing custom properties directly from the workspace profile - Wire the panel into ProfilePage and profileNavConfig under the Custom Properties nav entry - Add a "Show Hint" toggle (with new Hint icon) in the Add/Edit header that surfaces field-level documentation inline - Add Hint SVG icon to core-components icons library and regenerate the icon barrel - Add i18n keys for new UI strings across all 20 locale files - Add Playwright E2E spec for the Custom Properties panel Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
❌ 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 |
|
Hi there 👋 Thanks for your contribution! The OpenMetadata team will review the PR shortly! Once it has been labeled as Let us know if you need any help! |
🔄 Playwright impact map auto-refreshedThis PR touched specs or UI source that changed the source→spec routing map. I regenerated What is this file? It is the auto-generated half of Playwright's PR planner. It routes "if source X changes, run specs Y" by walking spec imports and cross-referencing What if I want to regenerate locally instead? Run this before pushing your next change to skip the bot commit: python3 .github/scripts/generate_playwright_impact_map.py
git add .github/playwright/impact-map.generated.json
git commit --amend --no-edit # or a separate commit |
…types Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ve dynamic header via callback - Remove getContentClassName from utils; inline as a variable in CustomPropertiesPanel - Extend ProfileContentHeader with optional breadcrumbs, onBreadcrumbAction, iconNode, and actions props so dynamic panels can override any slot without duplicating markup - Replace renderWithManagedHeader with selfContainedLayout (controls content scroll wrapper only; header always rendered by ProfilePage) - Add HeaderOverride type and onHeaderChange callback to ProfileNavRenderContext so panels push dynamic state up to ProfilePage rather than rendering their own header - CustomPropertiesPanel calls onHeaderChange in a useEffect whenever subView changes, keeping all header rendering centralized in ProfilePage - Simple panels (ProfileDetailsPanel, PermissionsTab, AccessTokenPanel) unchanged Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…r HeaderOverride Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds 84 Jest + React Testing Library tests across 6 new test files covering the CustomPropertiesPanel components and utilities added in this branch. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace `any` with proper inline types and `as unknown as T` assertions across all 5 CustomPropertiesPanel test files. Also fix jsx-a11y issues: add aria-label to textarea/button mocks, tabIndex+onKeyDown to Card mock, and remove non-null assertion using a deferred-object pattern. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
🔄 Playwright impact map auto-refreshedThis PR touched specs or UI source that changed the source→spec routing map. I regenerated What is this file? It is the auto-generated half of Playwright's PR planner. It routes "if source X changes, run specs Y" by walking spec imports and cross-referencing What if I want to regenerate locally instead? Run this before pushing your next change to skip the bot commit: python3 .github/scripts/generate_playwright_impact_map.py
git add .github/playwright/impact-map.generated.json
git commit --amend --no-edit # or a separate commit |
🚦 Removed from the merge queue —
|
Replace raw permission.EditAll with permission[Operation.EditAll] to satisfy the openmetadata-permissions/no-raw-permission-access ESLint rule. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
| "entity-feed-plural": "Entity feeds", | ||
| "entity-fqn": "Entity FQN", | ||
| "entity-group-api": "API", | ||
| "entity-group-dashboards-and-reporting": "Dashboards & Reporting", |
There was a problem hiding this comment.
From where this entity-group coming?
There was a problem hiding this comment.
we have defined that on the frontend, as per the figma design.
There was a problem hiding this comment.
It should be on page directory no?
There was a problem hiding this comment.
This isn’t actually a page; it’s a component that renders inside the modal. We’re not adding it to any route.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
🔄 Playwright impact map auto-refreshedThis PR touched specs or UI source that changed the source→spec routing map. I regenerated What is this file? It is the auto-generated half of Playwright's PR planner. It routes "if source X changes, run specs Y" by walking spec imports and cross-referencing What if I want to regenerate locally instead? Run this before pushing your next change to skip the bot commit: python3 .github/scripts/generate_playwright_impact_map.py
git add .github/playwright/impact-map.generated.json
git commit --amend --no-edit # or a separate commit |
Code Review ✅ Approved 1 resolved / 1 findingsAdds inline custom properties management panel to workspace profile with Add/Edit forms and a Show Hint toggle for inline field documentation. The enum value removal bug has been fixed, and Playwright tests cover the new UI flows. No issues found. ✅ 1 resolved✅ Bug: Editing an enum property cannot remove existing values
OptionsDisplay: compact → Counting what did not apply, without listing it. Comment with these commands to change the behavior for this request:
Was this helpful? React with 👍 / 👎 | Powered by Gitar — free for open source |
|



Describe your changes:
Fixes 6444
I added an inline Custom Properties management panel to the workspace profile page. The panel lets users browse entity types, view their custom properties, and add/edit properties without leaving the profile context. A Show Hint toggle in the Add/Edit header surfaces per-field documentation inline, driven by a new
Hinticon added to the core-components icon library.Type of change:
High-level design:
New components (
CustomPropertiesPanel/):CustomPropertiesLandingPage— grid of entity types the user can manageCustomPropertiesDetailPage— table of existing custom properties for a selected type, with Add/Edit actionsCustomPropertiesAddPage— react-hook-form form for creating a new custom property (name, display name, type, enum/format/entity-ref/table config, description)CustomPropertiesEditPage— form for editing display name, description, and mutable config of an existing propertyCustomPropertiesPanel— orchestrator with breadcrumb navigation, sub-view state, and the Show Hint toggleIcon:
hint.svgadded toopenmetadata-ui-core-components/icons/, regenerated viayarn icons:generate, exported asHintfrom@openmetadata/ui-core-components/icons.i18n: new keys added to
en-us.jsonand synced to all 19 other locale files viayarn i18n.Tests:
Use cases covered
Unit tests
Backend integration tests
Ingestion integration tests
Playwright (UI) tests
openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/AIMode/CustomPropertiesPanel.spec.tsManual testing performed
enumproperty with multi-select — saved successfullyUI screen recording / screenshots:
Checklist:
Fixes <issue-number>: <short explanation>Fixes #<issue-number>above.