-
Notifications
You must be signed in to change notification settings - Fork 160
Cell Merging Specification
- Overview
- User Stories
- Functionality
- Test Scenarios
- Accessibility
- Assumptions and Limitations
- References
Team Name: Grinders
Developer Name: Maya K.
Designer Name
- Peer Developer Name | Date:
- Design Manager Name | Date:
- Product Owner Name | Date:
- Platform Architect Name | Date:
Version | Users | Date | Notes |
---|---|---|---|
1 | Maya K. | 04/07/2025 | Initial draft. |
Cell merging is a feature that combines two or more cells into a single, larger cell. Cell can be merged vertically, based on same data in adjacent cells in the same column.
The feature includes the following:
- Ability to configure and merge cells in a column based on same data or other custom condition, into a single cell.
Developer stories:
-
Story 1: As a developer, I want to be able to enable/disable cell merging for all columns or for particular columns (when sorted or unsorted) so that data is visually merged.
-
Story 2: As a developer, I want to be able to apply a custom condition bases on which to merge the cells.
-
Story 3: As a developer, I want to configure how the text in the merged cell is displayed.
End-user stories:
-
Story 1: As an end-user, I want to see repeating data as a single physical cell that spans multiple records.
-
Story 2: As an end-user, I want to be able to interact with the cell in a meaningful way (select, update, navigate through etc.).
Cells that have same data will be merged in a single cell that spans down:
3.1. End-User Experience
Integration scenarios:
-
Virtualization
Merged cells should not be lost on scroll when their original row goes outside the virtualization frame. The scrolling should feel natural, as if there's no virtualization.
-
Expand/Collapse
If a feature (like master-detail, grouping etc.) generates a non-data row, then the cell merging is interrupted and group will be split in two.
-
Navigation
Merged cell is considered as a single cell that is part of all rows it spans through. Navigation should retain information for the current active row when moving through a merged cell, so that navigation can continue in the row when moving horizontally.
-
Paging
Only data on the current page will be merged.
-
Row pinning
TBD
-
Updating
TBD
-
Selection
TBD
3.2. Developer Experience
The merge mode for the grid can be set via a cellMergeMode
property with enum values:
export const GridCellMergeMode = {
always: 'always',
onSort: 'onSort'
} as const;
Always will merge any cells that match the merging condition and are adjacent. OnSort will merge cells only if the column is sorted.
Merging can be enabled/disabled via a boolean merge
property on the column.
<igx-column merge="true">
</igx-column>
A custom condition by which to merge cells can be set via a mergeStrategy
.
3.3. Keyboard Navigation
Same as in multi-row layout grid.
3.4. API
-
Grid:
Name Description Type Default value Valid values cellMergeMode Determines the mode for when to merging cells. GridCellMergeMode onSort always, onSort mergeStrategy Allows setting a custom merge strategy to customize the conditions by which to merge cells. IMergeStrategy undefined new MyMergeStrategy() that extends base MergeStrategy. -
Column:
Name Description Type Default value Valid values merge Whether or not to merge cells for this column. boolean false true/false mergeStrategy Allows setting a custom merge strategy to customize the conditions by which to merge cells. IMergeStrategy undefined new MyMergeStrategy() that extends base MergeStrategy.
Name | Description | Cancelable | Parameters |
---|---|---|---|
Automation
- Scenario 1:
- scenario 2:
Assumptions | Limitation Notes |
---|---|
Specify all referenced external sources