DataGrid: Fix the banded Columns' vertical borders (T1318812)#32388
DataGrid: Fix the banded Columns' vertical borders (T1318812)#32388Alyar666 wants to merge 5 commits intoDevExpress:26_1from
Conversation
There was a problem hiding this comment.
Pull request overview
This PR refines how banded DataGrid columns handle sticky borders and header cell borders so that vertical borders render correctly in various configurations (including grouping, band nesting, RTL, and showColumnLines), and adds focused unit and E2E coverage for these scenarios.
Changes:
- Adjusts sticky-column utilities and
ColumnsControllerband-children resolution to correctly skip grouped/command columns when determining border removal and visible band data columns, with new Jest unit tests for both helpers. - Updates SCSS for generic, material, fluent themes, as well as base DataGrid/TreeList, to align header/band border rendering (especially for multi-row headers, sticky columns, RTL, and banded columns).
- Reorganizes and extends TestCafe E2E tests for band columns into visual, functional, and matrix suites, adding screenshot-based regression coverage across
showColumnLinesand RTL combinations and moving a functional scenario into its own fixture.
Reviewed changes
Copilot reviewed 13 out of 13 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
packages/devextreme/js/__internal/grids/grid_core/sticky_columns/utils.ts |
Adjusts needToRemoveColumnBorder to avoid traversing parent bands for command/group columns using column.type, preventing incorrect border removal for grouped columns. |
packages/devextreme/js/__internal/grids/grid_core/sticky_columns/utils.test.ts |
Adds unit tests verifying that grouped columns and grouped columns with showWhenGrouped are handled correctly by needToRemoveColumnBorder. |
packages/devextreme/js/__internal/grids/grid_core/columns_controller/m_columns_controller.ts |
Changes getVisibleDataColumnsByBandColumn to use the shared getChildrenByBandColumn helper recursively, ensuring visible band data columns exclude grouped columns without showWhenGrouped. |
packages/devextreme/js/__internal/grids/grid_core/columns_controller/m_columns_controller.test.ts |
Replaces integration-style tests with unit tests using a mocked component to validate getVisibleDataColumnsByBandColumn behavior (visibility, recursion across nested bands, and showWhenGrouped). |
packages/devextreme/js/__internal/grids/grid_core/columns_controller/m_columns_controller.integration.test.ts |
Introduces a dedicated integration test file for DataGrid grouping with unsupported command column types, preserving the previous behavior checks in a more appropriate place. |
packages/devextreme-scss/scss/widgets/material/gridBase/_index.scss |
Tweaks material theme grid header multi-row styles to consistently apply left/right borders for header cells (excluding sticky/no-border cells) and adds RTL-specific rules for multi-row headers. |
packages/devextreme-scss/scss/widgets/generic/gridBase/_index.scss |
Adjusts generic theme multi-row header styles to add left borders for non-sticky header cells and adds RTL rules that flip borders appropriately for banded headers. |
packages/devextreme-scss/scss/widgets/fluent/gridBase/_index.scss |
Mirrors the generic/material header border changes for the fluent theme, including RTL-specific multi-row header rules. |
packages/devextreme-scss/scss/widgets/base/treeList/_index.scss |
Updates TreeList header first-cell border removal to no longer be conditioned on .dx-column-lines, keeping borders consistent with new sticky/band logic. |
packages/devextreme-scss/scss/widgets/base/dataGrid/_index.scss |
Similarly adjusts DataGrid header first-cell border removal independent of .dx-column-lines, aligning with updated sticky-column behavior. |
e2e/testcafe-devextreme/tests/dataGrid/common/bandColumns/visual.ts |
Renames fixture and simplifies imports, leaving the visual runtime-change band-columns screenshot tests intact. |
e2e/testcafe-devextreme/tests/dataGrid/common/bandColumns/matrix.ts |
Adds new screenshot-based tests that exercise banded columns’ vertical borders under combinations of showColumnLines and RTL, providing matrix coverage of the visual regression. |
e2e/testcafe-devextreme/tests/dataGrid/common/bandColumns/functional.ts |
Extracts the functional test for columnOption on a banded column (T1210340) into its own fixture, preserving behavior checks separately from visual tests. |
| configs.forEach(( | ||
| { showColumnLines, rtlEnabled }: { showColumnLines: boolean; rtlEnabled: boolean; }, | ||
| ): void => { | ||
| test('test', async (t) => { |
There was a problem hiding this comment.
The test name "test" is very generic and will appear multiple times (once per configuration in the configs.forEach), which makes it harder to identify failing scenarios in TestCafe output. Consider giving this test a more descriptive name that includes the scenario (for example, the column lines / RTL flags) so failures are easier to trace.
| test('test', async (t) => { | |
| test( | |
| `Band columns vertical borders (showColumnLines=${showColumnLines}, rtlEnabled=${rtlEnabled})`, | |
| async (t) => { |
No description provided.