Skip to content

feat(ag-grid-angular-theme): added KbqAgGridRowGroup directive (#DS-4970) - #190

Merged
artembelik merged 24 commits into
mainfrom
feat/DS-4970
Jul 17, 2026
Merged

feat(ag-grid-angular-theme): added KbqAgGridRowGroup directive (#DS-4970)#190
artembelik merged 24 commits into
mainfrom
feat/DS-4970

Conversation

@artembelik

@artembelik artembelik commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Summary by CodeRabbit

  • New Features
    • Added Angular row-grouping support with nested groups, expand/collapse, group-aware selection, and group sorting.
    • Exposed the row-group theme module and added theme styling for group renderers.
    • Added a theme default width for the auto selection checkbox column (preserves any consumer-provided width).
  • Bug Fixes
    • Improved Playwright stability for URL-persisted column state restoration and refined skeleton-cell assertions.
  • Tests
    • Added comprehensive E2E coverage for row-group rendering/selection/sorting and added Angular unit tests for row-group behavior and theming.
  • Chores
    • Updated preview deploy and snapshot-approval workflow triggers, permissions, and gating; adjusted preview retention duration.

@coderabbitai

coderabbitai Bot commented Jul 7, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds client-side Angular row grouping with custom renderers, persistent selection, expansion and sorting APIs, package exports, theme styling, development routing, comprehensive tests, workflow gating, and grid test synchronization.

Changes

Angular row grouping

Layer / File(s) Summary
Grouping model and renderers
packages/ag-grid-angular-theme/src/row-group.ng.ts
Adds synthetic grouped rows, stable row identity, expandable group renderers, group-selection checkboxes, and select-all state handling.
Directive state and public APIs
packages/ag-grid-angular-theme/src/row-group.ng.ts
Adds collapse, grouping, sorting, selection synchronization, visibility management, and full-dataset selection outputs.
Package exports and theme integration
packages/ag-grid-angular-theme/index.ts, packages/ag-grid-angular-theme/src/module.ng.ts, packages/ag-grid-angular-theme/src/theme.scss, packages/ag-grid-angular-theme/src/theme.ng.ts
Exports and registers row grouping, styles group renderers, and applies a default selection-column width without overriding consumer options.
Development demo and routing
dev/ag-grid-angular/src/main.ts, dev/ag-grid-angular/src/tests/row-group.ts
Adds the row-group demo, interactive controls, custom cell content, and lazy-loaded E2E route.
Row-group behavior validation
packages/ag-grid-angular-theme/tests/row-group.ng.spec.ts, dev/ag-grid-angular/src/tests/row-group.playwright-spec.ts
Covers grouping, selection, expansion, sorting, visibility, rendering, screenshots, and programmatic APIs.

Workflow and test stability

Layer / File(s) Summary
Workflow triggers and feedback
.github/workflows/deploy-preview.yml, .github/workflows/e2e-approve-snapshots.yml
Tightens preview and snapshot workflow gating, adjusts permissions and feedback, and reduces preview retention to three days.
Grid test synchronization and ownership
dev/ag-grid-angular/src/tests/column-state.playwright-spec.ts, dev/ag-grid-angular/src/tests/skeleton-cell-renderer.playwright-spec.ts, dev/ag-grid-angular/src/overview.ng.ts, dev/ag-grid-angular/src/tests/theme.ng.ts
Waits for persisted URL state, scopes skeleton assertions to loaded rows, and removes development-only selection-column width overrides.
Selection-column width validation
packages/ag-grid-angular-theme/tests/theme.ng.spec.ts
Verifies the default 36px width and preservation of an explicit 80px consumer width.

Estimated code review effort: 5 (Critical) | ~90+ minutes

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant DevRowGroup
  participant KbqAgGridRowGroup
  participant AGGrid
  User->>DevRowGroup: change grouping, expansion, sorting, or selection
  DevRowGroup->>KbqAgGridRowGroup: invoke public API
  KbqAgGridRowGroup->>AGGrid: rebuild rowData and update grid state
  AGGrid->>KbqAgGridRowGroup: report loaded-node selection changes
  KbqAgGridRowGroup->>DevRowGroup: emit selected rows
Loading

Possibly related PRs

  • koobiq/data-grid#191: Updates the same GitHub Actions workflows with related permission, author-association, and preview-retention changes.

Suggested reviewers: lskramarov, rmnturov

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the main change: adding the KbqAgGridRowGroup directive to the ag-grid-angular-theme package.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/DS-4970

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown

Visit the preview URL for this PR (updated for commit 795d636):

https://data-grid-next--data-grid-pr-190-kxadmoy7.web.app

(expires Mon, 20 Jul 2026 08:19:20 GMT)

🔥 via Firebase Hosting GitHub Action 🌎

Sign: b9d49913f5b5988e9af8690a8b37f16143707448

@github-actions

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown

🚨 E2E tests failed

Review the report for details.


💡 Comment /approve-snapshots to approve snapshot changes.

@artembelik artembelik changed the title feat(ag-grid-angular-theme): added KbqAgGridRowGroup directive (#DS-4970) feat(ag-grid-angular-theme): added KbqAgGridRowGroup directive (#DS-4970) Jul 9, 2026
@artembelik
artembelik requested a review from rmnturov July 13, 2026 07:07
@artembelik

Copy link
Copy Markdown
Contributor Author

@rmnturov путь до страницы с примером: /e2e/row-group

@artembelik artembelik self-assigned this Jul 13, 2026
@artembelik
artembelik marked this pull request as ready for review July 13, 2026 14:11
Copilot AI review requested due to automatic review settings July 13, 2026 14:11

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR introduces a new client-side row grouping solution for AG Grid Community within @koobiq/ag-grid-angular-theme, including custom group/selection renderers, selection persistence across collapse/expand, and sorting of group headers. It also adds comprehensive Jest and Playwright coverage plus theme styles and a dev/demo route for manual verification.

Changes:

  • Added KbqAgGridRowGroup directive implementing grouping, collapse/expand, selection rollups, and group-column sorting.
  • Added styling for the new group cell renderer in the theme SCSS.
  • Added Jest unit tests and Playwright e2e tests + a dev test page/route for the new functionality.

Reviewed changes

Copilot reviewed 12 out of 14 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
packages/ag-grid-angular-theme/src/row-group.ng.ts Adds the new row grouping directive plus custom cell/header renderers and selection/sort behavior.
packages/ag-grid-angular-theme/src/theme.scss Introduces styles for the group cell renderer.
packages/ag-grid-angular-theme/tests/row-group.ng.spec.ts Adds unit tests covering grouping, collapse/expand, sorting, and selection persistence/outputs.
packages/ag-grid-angular-theme/src/module.ng.ts Registers the new directive in the theme module’s component list.
packages/ag-grid-angular-theme/index.ts Exports the new directive/public API.
dev/ag-grid-angular/src/tests/row-group.ts Adds a dev/demo page for row grouping (manual + e2e target).
dev/ag-grid-angular/src/tests/row-group.playwright-spec.ts Adds Playwright coverage for grouping UX, selection behavior, and sorting.
dev/ag-grid-angular/src/main.ts Adds a dev route to load the new row-group page.
dev/ag-grid-angular/src/tests/skeleton-cell-renderer.playwright-spec.ts Adjusts a skeleton-cell test to avoid false positives by scoping to the first block.
dev/ag-grid-angular/src/tests/column-state.playwright-spec.ts Stabilizes column width persistence test by waiting for URL state before reload.
.github/workflows/e2e-approve-snapshots.yml Clarifies workflow purpose and adds inline permission rationale comments.
.github/workflows/deploy-preview.yml Removes manual dispatch trigger and an explicit firebase tools version pin.

Comment thread packages/ag-grid-angular-theme/src/row-group.ng.ts Outdated
Comment thread packages/ag-grid-angular-theme/src/theme.scss Outdated

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

Actionable comments posted: 3

🧹 Nitpick comments (2)
packages/ag-grid-angular-theme/src/row-group.ng.ts (2)

1202-1225: 🎯 Functional Correctness | 🔵 Trivial | 💤 Low value

computeSubGroupPaths splits on PATH_SEPARATOR, which is fragile if a key contains ::.

Paths are built by joining toKey values with ::, but here the path is split back by :: and each segment is assumed to be exactly one grouping level. A group field value containing :: breaks pathParts alignment, so the "reveal children start collapsed" invariant can silently misbehave. Note toggleCollapse/setExpanded don't split and are unaffected — only this split-based reconstruction is at risk. Low likelihood; flagging for awareness.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/ag-grid-angular-theme/src/row-group.ng.ts` around lines 1202 - 1225,
Update computeSubGroupPaths to avoid splitting expandedPath on PATH_SEPARATOR,
since encoded grouping keys may contain that separator. Reconstruct and compare
the expanded grouping path using the existing key/path representation or another
separator-safe approach, while preserving the current child-path generation and
collapsed-reveal behavior.

597-621: 📐 Maintainability & Code Quality | 🔵 Trivial

Side effects inside the rowIdMap computed().

console.warn and mutation of warnedMissingRowId / warnedDuplicateRowIds are side effects performed inside a computed(), which is expected to be pure. It works today because the flags make it idempotent, but a purer approach is to keep rowIdMap side-effect-free and emit these dev warnings from a dedicated effect(). Deferable.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/ag-grid-angular-theme/src/row-group.ng.ts` around lines 597 - 621,
Move the missing-row-ID and duplicate-row-ID warning logic out of the pure
rowIdMap computed property and into a dedicated effect, while preserving the
existing once-per-warning behavior through warnedMissingRowId and
warnedDuplicateRowIds. Keep rowIdMap focused solely on resolving and returning
IDs, and have the effect react to the same row ID, group column, data, and
duplicate ID state needed for the warnings.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/e2e-approve-snapshots.yml:
- Around line 8-10: Restrict the issue-comment workflow by adding an
author_association gate to its triggering condition or job condition, allowing
only OWNER, MEMBER, or COLLABORATOR values before checkout and snapshot updates
run. Preserve the existing write permissions and workflow behavior for
authorized users.

In `@dev/ag-grid-angular/src/tests/row-group.playwright-spec.ts`:
- Around line 76-85: Update the row-group test around getGroupCheckbox to first
reset the grid to an ungrouped state, removing the default Country and Sport
groupings before clicking the Country checkbox. Then retain the existing
waitForGroupsVisible and group-header assertion so the test verifies grouping is
added by Country rather than merely preserved through Sport.

In `@packages/ag-grid-angular-theme/src/row-group.ng.ts`:
- Around line 125-126: Update toKey to preserve distinct group-value identities:
include the primitive type in keys so values such as 1 and "1" cannot collide,
and handle null, undefined, objects, and arrays without mapping them all to an
empty key. Either encode supported non-primitive values uniquely or reject them
before group paths and collapse identities are generated.

---

Nitpick comments:
In `@packages/ag-grid-angular-theme/src/row-group.ng.ts`:
- Around line 1202-1225: Update computeSubGroupPaths to avoid splitting
expandedPath on PATH_SEPARATOR, since encoded grouping keys may contain that
separator. Reconstruct and compare the expanded grouping path using the existing
key/path representation or another separator-safe approach, while preserving the
current child-path generation and collapsed-reveal behavior.
- Around line 597-621: Move the missing-row-ID and duplicate-row-ID warning
logic out of the pure rowIdMap computed property and into a dedicated effect,
while preserving the existing once-per-warning behavior through
warnedMissingRowId and warnedDuplicateRowIds. Keep rowIdMap focused solely on
resolving and returning IDs, and have the effect react to the same row ID, group
column, data, and duplicate ID state needed for the warnings.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: b8e1b972-1b08-4f7b-91c2-2ac85659c14b

📥 Commits

Reviewing files that changed from the base of the PR and between a741d4a and 8cd91f8.

⛔ Files ignored due to path filters (2)
  • dev/ag-grid-angular/src/tests/__screenshots__/row-group-dark.png is excluded by !**/*.png
  • dev/ag-grid-angular/src/tests/__screenshots__/row-group-light.png is excluded by !**/*.png
📒 Files selected for processing (12)
  • .github/workflows/deploy-preview.yml
  • .github/workflows/e2e-approve-snapshots.yml
  • dev/ag-grid-angular/src/main.ts
  • dev/ag-grid-angular/src/tests/column-state.playwright-spec.ts
  • dev/ag-grid-angular/src/tests/row-group.playwright-spec.ts
  • dev/ag-grid-angular/src/tests/row-group.ts
  • dev/ag-grid-angular/src/tests/skeleton-cell-renderer.playwright-spec.ts
  • packages/ag-grid-angular-theme/index.ts
  • packages/ag-grid-angular-theme/src/module.ng.ts
  • packages/ag-grid-angular-theme/src/row-group.ng.ts
  • packages/ag-grid-angular-theme/src/theme.scss
  • packages/ag-grid-angular-theme/tests/row-group.ng.spec.ts
💤 Files with no reviewable changes (1)
  • .github/workflows/deploy-preview.yml

Comment thread .github/workflows/e2e-approve-snapshots.yml
Comment thread dev/ag-grid-angular/src/tests/row-group.playwright-spec.ts
Comment thread packages/ag-grid-angular-theme/src/row-group.ng.ts Outdated
artembelik and others added 2 commits July 14, 2026 10:22
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@github-actions

Copy link
Copy Markdown

🚨 E2E tests failed

Review the report for details.


💡 Comment /approve-snapshots to approve snapshot changes.

@NikGurev

Copy link
Copy Markdown
Contributor

Review finding: native sorting on data columns breaks the grouped layout 🔴

Confirmed / reproduced. While grouping is active, the data columns are still natively sortable (AG Grid defaults sortable: true). Clicking any data-column header (e.g. Athlete) makes AG Grid run its sort pass over the flat rowData, which contains the synthetic group-header rows. Those headers have no athlete/country/etc. field (data = { KbqAgGridRowGroup: {...} }), so they all sort together and get scattered away from their children — the grouped layout collapses.

The sortChanged handler (row-group.ng.ts:923) only inspects the group column's own sort state, so it neither prevents nor repairs a data-column sort. Only group-column sorting is covered by tests (row-group.playwright-spec.ts:479-519); data-column sorting has none.

Fix direction (keeping sorting functional): the directive should own data-column sorting the same way it already owns the group column — make AG's native sort a no-op on data columns (comparator: () => 0), pick up their sort state in the sortChanged handler, and rebuild rowData via makeRowGroupData so the requested field sorts the leaf rows within each deepest group while the group headers stay attached to their children. That preserves sorting instead of scattering the layout.


Also worth a look: originalColDefs is snapshotted once 🟠

this.originalColDefs = api.getColumnDefs() is captured a single time at gridReady (row-group.ng.ts:851). If the consumer later changes the [columnDefs] input, AgGridAngular pushes the new defs itself and drops the injected group column, and any re-run of the group-column effect rebuilds from the stale snapshot. Fine for static columns (as in the dev app), but a real limitation for dynamic columns — at minimum worth documenting.

@rmnturov

rmnturov commented Jul 14, 2026

Copy link
Copy Markdown

Сгруппированные колонки не должны ли пропадать? мне кажется, да
image

А вот
image

@rmnturov

Copy link
Copy Markdown

Дизайн надо точнее реализовать
image

Колонка с чекбоксами широкая, иконка не та, отсупы проверить, ширину табуляции-сдвига

@rmnturov

Copy link
Copy Markdown

Давай в дев-пример добавим возможность отключать счетчики

@artembelik

Copy link
Copy Markdown
Contributor Author

Review finding: native sorting on data columns breaks the grouped layout 🔴

Confirmed / reproduced. While grouping is active, the data columns are still natively sortable (AG Grid defaults sortable: true). Clicking any data-column header (e.g. Athlete) makes AG Grid run its sort pass over the flat rowData, which contains the synthetic group-header rows. Those headers have no athlete/country/etc. field (data = { KbqAgGridRowGroup: {...} }), so they all sort together and get scattered away from their children — the grouped layout collapses.

The sortChanged handler (row-group.ng.ts:923) only inspects the group column's own sort state, so it neither prevents nor repairs a data-column sort. Only group-column sorting is covered by tests (row-group.playwright-spec.ts:479-519); data-column sorting has none.

Fix direction (keeping sorting functional): the directive should own data-column sorting the same way it already owns the group column — make AG's native sort a no-op on data columns (comparator: () => 0), pick up their sort state in the sortChanged handler, and rebuild rowData via makeRowGroupData so the requested field sorts the leaf rows within each deepest group while the group headers stay attached to their children. That preserves sorting instead of scattering the layout.

Also worth a look: originalColDefs is snapshotted once 🟠

this.originalColDefs = api.getColumnDefs() is captured a single time at gridReady (row-group.ng.ts:851). If the consumer later changes the [columnDefs] input, AgGridAngular pushes the new defs itself and drops the injected group column, and any re-run of the group-column effect rebuilds from the stale snapshot. Fine for static columns (as in the dev app), but a real limitation for dynamic columns — at minimum worth documenting.

поправил

@artembelik

Copy link
Copy Markdown
Contributor Author

Сгруппированные колонки не должны ли пропадать? мне кажется, да

баг, поправил

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

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@dev/ag-grid-angular/src/tests/row-group.playwright-spec.ts`:
- Around line 545-570: The sorting E2E assertions are too incidental to verify
the complete row arrangement. In the test beginning “sorting a data column
reorders leaf rows within a group,” assert the ordered group/leaf structure and
that each group header remains attached to its children after sorting; in
dev/ag-grid-angular/src/tests/row-group.playwright-spec.ts lines 545-570, update
the existing checks accordingly. In the sibling sorting test at lines 590-611,
assert that every Gold value is ascending after the ascending sort and
descending after the descending sort.

In `@packages/ag-grid-angular-theme/tests/row-group.ng.spec.ts`:
- Around line 161-169: Document the public test-stub API by adding purpose
comments to the newColumnsLoaded property and the emitGridReady() and
emitNewColumnsLoaded() methods, describing the event or behavior each exposes or
triggers.

In `@packages/ag-grid-angular-theme/tests/theme.ng.spec.ts`:
- Around line 31-42: Add changeDetection: ChangeDetectionStrategy.OnPush to the
`@Component` decorator for TestGridCustomSelectionWidth, and add a comment
describing the purpose of its public grid test handle; preserve the existing
template and selectionColumnDef behavior.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 93d68d87-bfbc-402d-93e4-c241e7321378

📥 Commits

Reviewing files that changed from the base of the PR and between 0d67e81 and 22ad9e1.

⛔ Files ignored due to path filters (7)
  • dev/ag-grid-angular/src/tests/__screenshots__/column-menu-opened-dark.png is excluded by !**/*.png
  • dev/ag-grid-angular/src/tests/__screenshots__/column-menu-opened-light.png is excluded by !**/*.png
  • dev/ag-grid-angular/src/tests/__screenshots__/infinite-selection-dark.png is excluded by !**/*.png
  • dev/ag-grid-angular/src/tests/__screenshots__/infinite-selection-light.png is excluded by !**/*.png
  • dev/ag-grid-angular/src/tests/__screenshots__/row-group-dark.png is excluded by !**/*.png
  • dev/ag-grid-angular/src/tests/__screenshots__/row-group-light.png is excluded by !**/*.png
  • dev/ag-grid-angular/src/tests/__screenshots__/status-bar-light.png is excluded by !**/*.png
📒 Files selected for processing (9)
  • .github/workflows/deploy-preview.yml
  • .github/workflows/e2e-approve-snapshots.yml
  • dev/ag-grid-angular/src/overview.ng.ts
  • dev/ag-grid-angular/src/tests/row-group.playwright-spec.ts
  • dev/ag-grid-angular/src/tests/theme.ng.ts
  • packages/ag-grid-angular-theme/src/row-group.ng.ts
  • packages/ag-grid-angular-theme/src/theme.ng.ts
  • packages/ag-grid-angular-theme/tests/row-group.ng.spec.ts
  • packages/ag-grid-angular-theme/tests/theme.ng.spec.ts
💤 Files with no reviewable changes (1)
  • dev/ag-grid-angular/src/overview.ng.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • packages/ag-grid-angular-theme/src/row-group.ng.ts

Comment thread dev/ag-grid-angular/src/tests/row-group.playwright-spec.ts
Comment thread packages/ag-grid-angular-theme/tests/row-group.ng.spec.ts
Comment thread packages/ag-grid-angular-theme/tests/theme.ng.spec.ts
@artembelik

artembelik commented Jul 16, 2026

Copy link
Copy Markdown
Contributor Author

Дизайн надо точнее реализовать

поправил

Давай в дев-пример добавим возможность отключать счетчики

сделал по умолчанию только заголовок (как в фигме)

добавил возможность настройки пользовательского заголовка (компонента)

image

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 16 out of 23 changed files in this pull request and generated 1 comment.

Comment thread packages/ag-grid-angular-theme/src/row-group.ng.ts Outdated

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

🧹 Nitpick comments (2)
packages/ag-grid-angular-theme/src/row-group.ng.ts (1)

170-172: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Document the public group property.

Add property-level JSDoc describing the group information supplied by the renderer. As per coding guidelines, “All public methods and properties must have a comment describing their purpose.”

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/ag-grid-angular-theme/src/row-group.ng.ts` around lines 170 - 172,
Document the public group property in KbqAgGridRowGroupCellContent with
property-level JSDoc describing the group information supplied by the renderer.

Source: Coding guidelines

dev/ag-grid-angular/src/tests/row-group.ts (1)

104-107: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Consider using a signal-driven checkbox instead of ngModel, for consistency.

[(ngModel)]="useCustomCellContent" bound to a model() signal is a supported Angular pattern (the forms module special-cases signal targets internally), so this works, but it pulls in FormsModule for a single control and diverges from the [checked]/(change) pattern already used for every other checkbox in this same template (e.g. the group-by checkboxes via onToggle). As per coding guidelines, "Prefer Reactive Forms over template-driven forms," and keeping one consistent idiom for all checkboxes in this file would be simpler to maintain.

♻️ Suggested refactor
-            <label>
-                <input type="checkbox" data-testid="useCustomCellContentCheckbox" [(ngModel)]="useCustomCellContent" />
-                Use custom group cell content
-            </label>
+            <label>
+                <input
+                    type="checkbox"
+                    data-testid="useCustomCellContentCheckbox"
+                    [checked]="useCustomCellContent()"
+                    (change)="useCustomCellContent.set($event.target.checked)"
+                />
+                Use custom group cell content
+            </label>

This also lets you drop the now-unused FormsModule import/imports entry.

Also applies to: 139-142

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@dev/ag-grid-angular/src/tests/row-group.ts` around lines 104 - 107, Replace
the [(ngModel)] binding on the useCustomCellContent checkbox and the
corresponding checkbox at the additional occurrence with the existing
[checked]/(change) signal-driven pattern used by onToggle. Update the change
handlers to write the useCustomCellContent model signal, then remove the
now-unused FormsModule import and component imports entry.

Source: Coding guidelines

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@dev/ag-grid-angular/src/tests/row-group.ts`:
- Around line 104-107: Replace the [(ngModel)] binding on the
useCustomCellContent checkbox and the corresponding checkbox at the additional
occurrence with the existing [checked]/(change) signal-driven pattern used by
onToggle. Update the change handlers to write the useCustomCellContent model
signal, then remove the now-unused FormsModule import and component imports
entry.

In `@packages/ag-grid-angular-theme/src/row-group.ng.ts`:
- Around line 170-172: Document the public group property in
KbqAgGridRowGroupCellContent with property-level JSDoc describing the group
information supplied by the renderer.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 18748e47-55f4-4dad-a3f8-0448dd5a91d8

📥 Commits

Reviewing files that changed from the base of the PR and between 22ad9e1 and 0e6cea1.

⛔ Files ignored due to path filters (2)
  • dev/ag-grid-angular/src/tests/__screenshots__/row-group-dark.png is excluded by !**/*.png
  • dev/ag-grid-angular/src/tests/__screenshots__/row-group-light.png is excluded by !**/*.png
📒 Files selected for processing (5)
  • dev/ag-grid-angular/src/tests/row-group.playwright-spec.ts
  • dev/ag-grid-angular/src/tests/row-group.ts
  • packages/ag-grid-angular-theme/src/row-group.ng.ts
  • packages/ag-grid-angular-theme/src/theme.scss
  • packages/ag-grid-angular-theme/tests/row-group.ng.spec.ts
💤 Files with no reviewable changes (1)
  • packages/ag-grid-angular-theme/src/theme.scss
🚧 Files skipped from review as they are similar to previous changes (1)
  • packages/ag-grid-angular-theme/tests/row-group.ng.spec.ts

@artembelik
artembelik merged commit 04d579e into main Jul 17, 2026
8 checks passed
@artembelik
artembelik deleted the feat/DS-4970 branch July 17, 2026 08:46
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.

4 participants