Skip to content

Product sync: features, CSS-grid scroll, API removals, docs - #2289

Merged
surya-pabbineedi merged 36 commits into
masterfrom
product-sync
Jul 28, 2026
Merged

Product sync: features, CSS-grid scroll, API removals, docs#2289
surya-pabbineedi merged 36 commits into
masterfrom
product-sync

Conversation

@surya-pabbineedi

Copy link
Copy Markdown
Contributor

What kind of change does this PR introduce? (check one with "x")

  • Bugfix
  • Feature
  • Code style update (formatting, local variables)
  • Refactoring (no functional changes, no api changes)
  • Build related changes
  • CI related changes
  • Other... Please describe: layout/scroll rewrite + breaking API removals + docs

What is the current behavior? (You can also link to an open issue here)

angular-22-upgrade is missing Siemens product work after the tree-scroll tip (e1aabe0151): bugfixes/features, CSS-grid scroll architecture, deprecated API removals, and Swimlane-compatible docs updates.

What is the new behavior?

Single Siemens sync PR onto angular-22-upgrade (formerly planned as A→B→C→D). Demo routes below assume yarn starthttp://localhost:4200/#/<route>.

New features (dedicated demos)

Change Details Verify in demo
Custom summary row template (DatatableSummaryRowDirective) Instead of computed column aggregates, put a full custom template in the summary row (e.g. selection action bar). Sticky when a template is present. #/summary-row-actions — select rows with checkboxes; action bar appears (Export / Delete / Cancel).
preserveColumnWidthsOnClone on datatable-row-ref CDK drag clones lose CSS-grid parent tracks; this stamps measured column widths onto the clone so the drag preview keeps layout. #/drag-drop — drag a row; preview should keep column widths aligned.

Bugfixes (existing demos)

Change Details Verify in demo
Ghost loader fills viewport On initial virtual-scroll load with ghostLoadingIndicator, used to show ~1 skeleton row; now fills the visible body. #/virtual-server-side (also #/scrolling-server-side, #/scrolling-no-virtual) — reload and watch skeletons fill the body.
Tree scroll after expand Expanding ancestors then scrolling used queueMicrotask (too early under zoneless); now setTimeout so scroll lands on the revealed row. #/client-side-tree, #/full-screen-tree — expand nested nodes / deep scroll; target row should stay in view.
Tree level when child precedes parent If a child appears before its parent in the input array, level became NaN (broken indent). Levels resolve recursively. #/client-side-tree — check nested indent. Hardest to force with stock data unless children precede parents.
Shift-click keeps prior selection after ctrl-click Shift-range used to replace selection with only the range; now unions the range onto existing selection. #/multi-row-selection — ctrl/cmd-click a few rows, then shift-click another; prior + range stay selected.
Custom sort icons (multi-class) Icon inputs can be space-separated classes (e.g. "icon up"); previously treated as one class token. No dedicated demo. Closest: #/client-side-sorting (default icons). Multi-class covered by unit tests.
Missing aria-sort Sortable header cells expose aria-sort (ascending / descending / none). #/client-side-sorting or #/default-sort — inspect header cell in DevTools Accessibility while sorting.
Sort on mobile with reorderable Touch + reorderable used to steal the gesture so sort didn’t fire; drag directive ignores short taps. #/column-reorder — in device/touch mode: tap header to sort; drag to reorder.

CSS-grid scrolling rewrite (layout / behavior)

Change Details Verify in demo
Single CSS-grid scroll container One scroll owner for H+V (datatableScrollContainer) instead of body/parent split scrolling. #/horz-vert-scrolling, #/full-screen, #/virtual-server-side, #/column-pinning — scroll both axes; header stays synced horizontally.
Shared column grid + subgrid Header and body share the same column tracks so cells line up exactly. #/column-pinning, #/force-column, #/flex-column, checkbox demos — resize/pin; header vs body stay aligned.
Drop redundant widths Removed per-row/header width plumbing that the grid now owns. Same as above — regressions show as misaligned columns or clipped content.
ResizeObserver remasure Table remasures on container size change, not only window:resize (removes throttle.ts). #/responsive, #/full-screen — shrink/grow viewport; columns recalculate without a full window resize.
Checkbox column 40px 30px was clamped by border-box + padding; demos use 40px. #/checkbox-selection, #/custom-checkbox-selection, #/multi-click-and-checkbox-selection, #/summary-row-actions.

Breaking API removals

Change Details Verify in demo
Removed (sort) Use [(sorts)] / (sortsChange). For server-side paging, prefer (page) and read PageEvent.sorts. #/server-side-sorting, #/client-side-sorting — sorting still works; old (sort) would fail to compile.
Removed (select) Use [(selected)] / (selectedChange) with the selected array (not { selected }). #/multi-row-selection, #/checkbox-selection, #/cell-selection, etc.
Removed VisibilityDirective Visibility observer deleted from the table host. No dedicated demo. Smoke-test #/hidden-on-load (and similar hide/show pages) for layout/init.

Docs / non-demo

  • Removed table/column internals docs; moved column modes to introduction (docs/SUMMARY.md updated)
  • Skipped: Siemens README fork note, Zensical / GH Pages infra, async-pipe demo style ports (Swimlane already uses signals + Eager)
  • Test-only: header timer restore (flake fix); null-coalescing cleanup

Suggested smoke path

  1. #/summary-row-actions — new summary template
  2. #/drag-drop — clone column widths
  3. #/multi-row-selection — ctrl then shift selection
  4. #/virtual-server-side — ghost fill + new scroll stack
  5. #/column-pinning — header/body alignment under grid
  6. #/checkbox-selection — 40px checkbox column
  7. #/client-side-tree — tree expand / indent / scroll

Upstream: siemens/ngx-datatable product commits after e1aabe0151 (PRs #653, #677, #679, #680, #683, #684, #704, #710, #720, #732#739, #754, #759, #760, #762, #763, #764, etc.).

Does this PR introduce a breaking change? (check one with "x")

  • Yes
  • No

If this PR contains a breaking change, please describe the impact and migration path for existing applications:

  1. (sort) removed → use (sortsChange) or [(sorts)]. For server-side paging, prefer (page) and read PageEvent.sorts.
  2. (select) removed → use (selectedChange) or [(selected)] (payload is the selected array, not { selected }).
  3. VisibilityDirective removed — no migration; visibility observer deleted.
  4. Scroll/layout DOM — single CSS-grid scroll container; sticky headers need non-transparent background (themes updated). CDK drag using datatable-row-def should set [preserveColumnWidthsOnClone]="true".

Other information:

Made with Cursor

surya-pabbineedi and others added 30 commits July 25, 2026 10:36
Bump toolchain (TypeScript 6, Node 24, ESLint flat config) and adapt tests for the OnPush default so CI stays green.

Co-authored-by: Cursor <cursoragent@cursor.com>
- Updated multiple components to replace traditional state management with Angular's signal API, enhancing reactivity and performance.
- Adjusted data binding for rows in various components to utilize signal-based access.
- Modified paths in tsconfig.json to reflect new project structure for ngx-datatable.
- Ensured compatibility with Angular 22 by updating imports and configurations.

This refactor aims to streamline data handling and improve the overall responsiveness of the application.
Upstream: siemens/ngx-datatable@57e39a1f
Co-authored-by: Cursor <cursoragent@cursor.com>
Upstream: siemens/ngx-datatable@f3f4d4aa
Co-authored-by: Cursor <cursoragent@cursor.com>
Upstream: siemens/ngx-datatable@e1c43a99
Co-authored-by: Cursor <cursoragent@cursor.com>
Upstream: siemens/ngx-datatable@008b011f
Co-authored-by: Cursor <cursoragent@cursor.com>
…nabled

Upstream: siemens/ngx-datatable@c1e1b22d
Co-authored-by: Cursor <cursoragent@cursor.com>
Upstream: siemens/ngx-datatable@625c6d19
Co-authored-by: Cursor <cursoragent@cursor.com>
Upstream: siemens/ngx-datatable@af960f79
Co-authored-by: Cursor <cursoragent@cursor.com>
Vitest unit env does not provide jest-dom toHaveClass matchers.

Co-authored-by: Cursor <cursoragent@cursor.com>
Upstream: siemens/ngx-datatable@6fd0c361
Co-authored-by: Cursor <cursoragent@cursor.com>
Upstream: siemens/ngx-datatable@95592ab6
Co-authored-by: Cursor <cursoragent@cursor.com>
Upstream: siemens/ngx-datatable@1ef56dc5
Co-authored-by: Cursor <cursoragent@cursor.com>
…on clone

Upstream: siemens/ngx-datatable@387759d2
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Upstream: siemens/ngx-datatable@6d974c19
Co-authored-by: Cursor <cursoragent@cursor.com>
Upstream: siemens/ngx-datatable@b46ab251
Co-authored-by: Cursor <cursoragent@cursor.com>
Upstream: siemens/ngx-datatable@6eb92ac7
Co-authored-by: Cursor <cursoragent@cursor.com>
surya-pabbineedi and others added 3 commits July 27, 2026 10:14
Upstream: siemens/ngx-datatable@3d5f21a3 @52c32ee2
Skip Siemens README fork note and Zensical config.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@surya-pabbineedi surya-pabbineedi self-assigned this Jul 27, 2026
@surya-pabbineedi surya-pabbineedi mentioned this pull request Jul 28, 2026
9 tasks
@surya-pabbineedi
surya-pabbineedi changed the base branch from angular-22-upgrade to master July 28, 2026 15:01
@surya-pabbineedi
surya-pabbineedi marked this pull request as ready for review July 28, 2026 15:10

@cursor cursor 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.

Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 1cd3db2. Configure here.

@surya-pabbineedi
surya-pabbineedi merged commit bec54df into master Jul 28, 2026
5 checks passed
steveblue added a commit that referenced this pull request Jul 30, 2026
* Revert "(release): 25.0.0 (#2290)"

This reverts commit 04989a0.

* Revert "Product sync: features, CSS-grid scroll, API removals, docs (#2289)"

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants