[DRAFT] Add sticky header to GLQL embedded table panel
What does this MR do?
Adds sticky positioning to the GLQL embedded table panel header, allowing users to see the panel title and access controls while scrolling through long tables.
Why?
When viewing GLQL embedded tables with many rows, users lose context about which table they're viewing as they scroll down. By making the panel header sticky, users maintain visual context and can easily access the collapse/expand controls and actions menu without scrolling back to the top.
Implementation details
Changes made
crud_component.vue:
- Added
stickyHeader - Added
headerStickyClassesproperty that returns sticky positioning classes when enabled
facade.vue:
- Added
sticky-headerprop to the<crud-component>for GLQL embedded views
Sticky positioning stack
When enabled, the panel header uses:
-
gl-sticky- Enables sticky positioning -
gl-top-9- Positions 36px from viewport top (below work item sticky header) -
gl-z-2- Stacks above table content but below work item header (z-3)
Before/After
| Before | After |
|---|---|
| CleanShot 2025-10-17 at 14.13.28.mp4 | CleanShot 2025-10-17 at 14.14.08.mp4 |
How to test
- Start your GDK:
gdk start - Navigate to an issue with a GLQL embedded table (create one if needed):
- Go to any project wiki or issue description
- Add a GLQL block
- Ensure the table has many rows
- Scroll down the page slowly
- Verify: The header stays visible at the top
- Verify: Collapse/expand button remains accessible while scrolling
- Verify: Actions menu (ellipsis) remains accessible while scrolling
Known limitations
Table column headers do not stick due to browser limitations with position: sticky on <thead> elements when using standard table layout (display: table-header-group).