Skip to content

feat: skip frozen column shadows in merged summary cells - #5342

Open
SupGiant wants to merge 2 commits into
VisActor:developfrom
SupGiant:feat/frozen-shadow-skip-merged-cells
Open

SupGiant wants to merge 2 commits into
VisActor:developfrom
SupGiant:feat/frozen-shadow-skip-merged-cells

Conversation

@SupGiant

Copy link
Copy Markdown

🤔 This is a ...

  • New feature
  • TypeScript definition update
  • Test Case
  • Site / documentation update
  • Demo update

🔗 Related issue link

No existing issue linked.

💡 Background and solution

A merged summary row spanning frozen and scrolling columns is visually interrupted by the frozen-column shadow. Add the opt-in theme.frozenColumnLine.shadow.skipMergedCells option so the summary remains visually continuous.

theme: VTable.themes.DEFAULT.extends({
  frozenColumnLine: {
    shadow: { skipMergedCells: true }
  }
})

When enabled, subtract cross-boundary merged-cell intervals from the left and right frozen shadow paths. This supports multiple gaps, merges spanning multiple rows, and top/bottom frozen rows, and follows scrolling, geometry changes and theme updates. Ordinary rows retain the existing shadow width, colors and visibility modes.

The option defaults to false, which keeps the original rectangle renderer. Includes bilingual option documentation, a development example, a Rush minor change file, 11 unit tests and a visual case with real toggle and scroll interactions.

The screenshot shows two middle merges and a bottom summary spanning the freeze boundaries, with the default shadow style:

Merged rows and summary without frozen column shadows

Validation

  • Core and dependency build, core TypeScript check, targeted ESLint/Prettier and project commit-message checks passed.
  • All 11 added unit tests passed on Windows and WSL.
  • WSL Ubuntu 24.04, Node.js 22.21.1 and Chromium 140.0.7339.186: all 205 visual cases passed full self-comparison, including semantic assertions and two independently rendered screenshots.
  • All 204 existing cases matched the real official develop baseline exactly, with zero differing decoded RGBA pixels. Both full runs used identical case modules and browser/render settings.
  • The required full node packages/vtable/scripts/visual-test.mjs command was executed against official develop 5c9451acfc70829241e223fc772b966756d3f70c. Its native status is error, solely because the new frozen-shadow-merged-cells case asserts the new API, which the old official baseline does not implement. The runner therefore does not enter the current phase. The 204 existing official-baseline screenshots were compared separately against the full current-run screenshots as described above. Self-comparison is not reported as official-baseline success; no assertion was skipped or threshold relaxed.
  • Inspected the new case and existing freeze-shadow screenshots. Real browser checks also verified that ordinary-row shadow pixels remain unchanged while merged regions lose the shadow.
  • Added the screenshot in a separate documentation-only commit after regression; the tested implementation commit is 20035e537462b9a3507c7e0a4a902c8b4cb66b05.

📝 Changelog

Language Changelog
🇺🇸 English Add optional frozen-column shadow clipping across merged summary and other merged cells, supporting multiple gaps while preserving existing shadow styling. Disabled by default; no intended breaking changes.
🇨🇳 Chinese 新增可选配置,使冻结列阴影避开汇总栏等跨冻结边界的合并单元格,支持多段截断并保留原有阴影样式。默认关闭,无预期破坏性变更。

☑️ Self-Check before Merge

  • Doc is updated/provided or not needed
  • Demo is updated/provided or not needed
  • TypeScript definition is updated/provided or not needed
  • Changelog is provided or not needed

🚀 Summary

copilot:summary

🔍 Walkthrough

copilot:walkthrough

Add opt-in skipMergedCells shadow configuration for cross-boundary merges.
Preserve the default rectangle renderer, shadow styling and visibility.
Include unit coverage, an interactive visual case, an example and bilingual docs.

@visactor-review-bot visactor-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

No confirmed new issues found.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant