Skip to content

Commit eedd369

Browse files
authored
Merge branch 'vnext' into localization-2025-10-24
2 parents 780c370 + b3af297 commit eedd369

File tree

14 files changed

+316
-39
lines changed

14 files changed

+316
-39
lines changed

doc/en/components/charts/features/chart-data-annotations.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ namespace: Infragistics.Controls.Charts
1010

1111
In the {Platform} chart, the data annotation layers allow you to annotate data plotted in Data Chart with sloped lines, vertical/horizontal lines (aka axis slices), vertical/horizontal strips (targeting specific axis), rectangles, and even parallelograms (aka bands). With data-binding supported, you can create as many annotations as you want to customize your charts. Also, you can combine different annotation layers and you can overlay text inside of plot area to annotated important events, patterns, and regions in your data.
1212

13-
[!Note]
14-
These features are designed to support cartesian axes and does not currently support radius or angle axes.
13+
> [!Note]
14+
> These features are designed to support cartesian axes and does not currently support radius or angle axes.
1515
1616
For example, you can annotates stock prices with stock events and patterns.
1717

doc/en/components/excel-library-working-with-charts.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ The Infragistics {Platform} Excel Engine's `WorksheetChart` functionality allows
1313

1414
`sample="/excel/excel-library/working-with-charts", height="500", alt="{Platform} Working with Charts Example"`
1515

16-
16+
> [!Note]
17+
> The XLSX format is required. Other formats are not supported at this time.
1718
1819
<div class="divider--half"></div>
1920

doc/en/components/general-changelog-dv-react.md

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,73 @@ All notable changes for each version of {ProductName} are documented on this pag
1111

1212
## **{PackageVerLatest}**
1313

14+
### New Components
15+
16+
- Added `IgrChat` component
17+
18+
### {PackageGrids} (Grids)
19+
- `IgrGrid`, `IgrTreeGrid`, `IgrHierarchicalGrid`
20+
- Introduced a new cell merging feature that allows you to configure and merge cells in a column based on same data or other custom condition, into a single cell.
21+
22+
It can be enabled on the individual columns:
23+
24+
```tsx
25+
<IgrColumn field="field" merge={true}></IgrColumn>
26+
```
27+
The merging can be configured on the grid level to apply either:
28+
- `onSort` - only when the column is sorted.
29+
- `always` - always, regardless of data operations.
30+
31+
```tsx
32+
<IgrGrid cellMergeMode="always">
33+
</IgrGrid>
34+
```
35+
36+
The default `cellMergeMode` is `onSort`.
37+
38+
The functionality can be modified by setting a custom `mergeStrategy` on the grid, in case some other merge conditions or logic is needed for a custom scenario.
39+
40+
It's possible also to set a `mergeComparer` on the individual columns, in case some custom handling is needed for a particular data field.
41+
42+
- Added ability to pin individual columns to a specific side (start or end of the grid), so that you can now have pinning from both sides. This can be done either declaratively by setting the `pinningPosition` property on the column:
43+
44+
```tsx
45+
<IgrColumn field="Col1" pinned={true} pinningPosition="pinningPosition">
46+
</IgrColumn>
47+
```
48+
49+
```ts
50+
pinningPosition = ColumnPinningPosition.End;
51+
```
52+
53+
Or with the API, via optional parameter:
54+
55+
```ts
56+
grid.pinColumn('Col1', 0, ColumnPinningPosition.End);
57+
grid.pinColumn('Col2', 0, ColumnPinningPosition.Start);
58+
```
59+
60+
If property `pinningPosition` is not set on a column, the column will default to the position specified on the grid's `pinning` options for `columns`.
61+
62+
- **Sorting improvements**
63+
- Improved sorting algorithm efficiency using Schwartzian transformation. This is a technique, also known as decorate-sort-undecorate, which avoids recomputing the sort keys by temporarily associating them with the original data records.
64+
- Refactored sorting algorithms from recursive to iterative.
65+
- **Groupby improvements**
66+
- Refactored grouping algorithm from recursive to iterative.
67+
- Optimized grouping operations.
68+
69+
### Bug Fixes
70+
| Bug Number | Control | Description |
71+
|------------|---------|-------------|
72+
|[1853](https://github.com/IgniteUI/igniteui-webcomponents/pull/1853)| List |removed duplicated CSS variables across list components and themes|
73+
|[1871](https://github.com/IgniteUI/igniteui-webcomponents/pull/1871)| Card |Consume colors from themes|
74+
|[1873](https://github.com/IgniteUI/igniteui-webcomponents/pull/1873)| Card |Avatar size in card header|
75+
|[1882](https://github.com/IgniteUI/igniteui-webcomponents/pull/1882)| Chat |Message actions not rendered after last message|
76+
|[1885](https://github.com/IgniteUI/igniteui-webcomponents/pull/1885)| Date Picker |Change event not emitted for non-editable input configuration|
77+
|[1894](https://github.com/IgniteUI/igniteui-webcomponents/pull/1894)| Date Picker | Issues when clearing the value and notch border in Material theme|
78+
79+
## **{PackageVerChanges-25-1-OCT}**
80+
1481
### {PackageMaps} (Geographic Map)
1582

1683
#### <label>PREVIEW</label> Azure Map Imagery Support

doc/en/components/general-changelog-dv-wc.md

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,74 @@ All notable changes for each version of {ProductName} are documented on this pag
1212

1313
## **{PackageVerLatest}**
1414

15+
16+
### New Components
17+
18+
- Added `IgrChat` component
19+
20+
### {PackageGrids} (Grids)
21+
- `IgcGrid`, `IgcTreeGrid`, `IgcHierarchicalGrid`
22+
- Introduced a new cell merging feature that allows you to configure and merge cells in a column based on same data or other custom condition, into a single cell.
23+
24+
It can be enabled on the individual columns:
25+
26+
```html
27+
<igc-column field="field" merge="true"></igc-column>
28+
```
29+
The merging can be configured on the grid level to apply either:
30+
- `onSort` - only when the column is sorted.
31+
- `always` - always, regardless of data operations.
32+
33+
```html
34+
<igc-grid cellMergeMode="always">
35+
</igc-grid>
36+
```
37+
38+
The default `cellMergeMode` is `onSort`.
39+
40+
The functionality can be modified by setting a custom `mergeStrategy` on the grid, in case some other merge conditions or logic is needed for a custom scenario.
41+
42+
It's possible also to set a `mergeComparer` on the individual columns, in case some custom handling is needed for a particular data field.
43+
44+
- Added ability to pin individual columns to a specific side (start or end of the grid), so that you can now have pinning from both sides. This can be done either declaratively by setting the `pinningPosition` property on the column:
45+
46+
```html
47+
<igc-column field="Col1" pinned="true" pinningPosition="pinningPosition">
48+
</igc-column>
49+
```
50+
51+
```ts
52+
pinningPosition = ColumnPinningPosition.End;
53+
```
54+
55+
Or with the API, via optional parameter:
56+
57+
```ts
58+
grid.pinColumn('Col1', 0, ColumnPinningPosition.End);
59+
grid.pinColumn('Col2', 0, ColumnPinningPosition.Start);
60+
```
61+
62+
If property `pinningPosition` is not set on a column, the column will default to the position specified on the grid's `pinning` options for `columns`.
63+
64+
- **Sorting improvements**
65+
- Improved sorting algorithm efficiency using Schwartzian transformation. This is a technique, also known as decorate-sort-undecorate, which avoids recomputing the sort keys by temporarily associating them with the original data records.
66+
- Refactored sorting algorithms from recursive to iterative.
67+
- **Groupby improvements**
68+
- Refactored grouping algorithm from recursive to iterative.
69+
- Optimized grouping operations.
70+
71+
### Bug Fixes
72+
| Bug Number | Control | Description |
73+
|------------|---------|-------------|
74+
|[1853](https://github.com/IgniteUI/igniteui-webcomponents/pull/1853)| List |removed duplicated CSS variables across list components and themes|
75+
|[1871](https://github.com/IgniteUI/igniteui-webcomponents/pull/1871)| Card |Consume colors from themes|
76+
|[1873](https://github.com/IgniteUI/igniteui-webcomponents/pull/1873)| Card |Avatar size in card header|
77+
|[1882](https://github.com/IgniteUI/igniteui-webcomponents/pull/1882)| Chat |Message actions not rendered after last message|
78+
|[1885](https://github.com/IgniteUI/igniteui-webcomponents/pull/1885)| Date Picker |Change event not emitted for non-editable input configuration|
79+
|[1894](https://github.com/IgniteUI/igniteui-webcomponents/pull/1894)| Date Picker | Issues when clearing the value and notch border in Material theme|
80+
81+
## **{PackageVerChanges-25-1-SEP}**
82+
1583
### {PackageMaps}
1684

1785
#### <label>PREVIEW</label> Azure Map Imagery Support

doc/en/components/grids/_shared/cell-merging.md

Lines changed: 84 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,23 @@ The grid exposes a `cellMergeMode` property that accepts values from the `GridCe
3434
```tsx
3535
const cellMergeMode: GridCellMergeMode = 'always';
3636
```
37+
38+
```html
39+
<{ComponentSelector} cell-merge-mode="always">
40+
...
41+
</{ComponentSelector}>
42+
```
3743
### Column Merge Toggle
3844
At the column level, merging can be enabled or disabled with the `merge` property.
3945

4046
```tsx
4147
<IgrColumn field="OrderID" merge={true}></IgrColumn>
4248
<IgrColumn field="ShipperName" merge={false}></IgrColumn>
4349
```
50+
```html
51+
<igc-column field="OrderID" merge="true"></igc-column>
52+
<igc-column field="ShipperName" merge="false"></igc-column>
53+
```
4454

4555
In the above example:
4656
- The **OrderID** column will merge adjacent duplicate values.
@@ -49,7 +59,7 @@ In the above example:
4959
### Combined Example
5060

5161
```tsx
52-
<{ComponentSelector} data={data} cellMergeMode]={cellMergeMode} autoGenerate={false}>
62+
<{ComponentSelector} data={data} cellMergeMode={cellMergeMode} autoGenerate={false}>
5363
<IgrColumn field="OrderID" header="Order ID" merge={true}></IgrColumn>
5464
<IgrColumn field="ShipperName" header="Shipper Name" merge={true}></IgrColumn>
5565
<IgrColumn field="Salesperson" header="Salesperson"></IgrColumn>
@@ -58,14 +68,22 @@ In the above example:
5868
```tsx
5969
const cellMergeMode: GridCellMergeMode = 'onSort';
6070
```
71+
```html
72+
<{ComponentSelector} cell-merge-mode="onSort" auto-generate="false">
73+
<igc-column field="OrderID" header="Order ID" merge="true"></igc-column>
74+
<igc-column field="ShipperName" header="Shipper Name" merge="false"></igc-column>
75+
<igc-column field="Salesperson" header="Salesperson"></igc-column>
76+
</{ComponentSelector}>
77+
```
6178
Here, the grid is set to merge only when columns are sorted, and both Category and Product columns are configured for merging.
6279

6380
## Custom Merge Conditions
6481
In addition to the built-in `always` and `onSort` modes, the grid allows you to define a custom condition for merging cells through the `mergeStrategy` property. This strategy controls both how cells are compared and how merged ranges are calculated.
6582

6683
### Merge Strategy Class
67-
A custom merge strategy must implement the `IgrGridMergeStrategy` class:
84+
A custom merge strategy must implement the `GridMergeStrategy` class:
6885

86+
<!-- React -->
6987
```ts
7088
export declare class IgrGridMergeStrategy {
7189
merge: (
@@ -80,14 +98,33 @@ export declare class IgrGridMergeStrategy {
8098
comparer: (prevRecord: any, record: any, field: string) => boolean;
8199
}
82100
```
101+
<!-- end: React -->
102+
<!-- WebComponents -->
103+
```ts
104+
export declare class IgcGridMergeStrategy {
105+
merge: (
106+
data: any[],
107+
field: string,
108+
comparer: (prevRecord: any, currentRecord: any, field: string) => boolean,
109+
result: any[],
110+
activeRowIndex?: number,
111+
grid?: GridType
112+
) => any[];
113+
114+
comparer: (prevRecord: any, record: any, field: string) => boolean;
115+
}
116+
```
117+
<!-- end: WebComponents -->
118+
83119
- `merge` - defines how merged cells are produced.
84120
- `comparer` - defines the condition to decide if two adjacent records should be merged.
85121

86122
<!-- ComponentStart: Grid, HierarchicalGrid -->
87123
### Extending the Default Strategy
88124

89-
If you only want to customize part of the behavior (for example, the comparer logic), you can extend the built-in `IgrDefaultMergeStrategy` and override the relevant methods.
125+
If you only want to customize part of the behavior (for example, the comparer logic), you can extend the built-in `DefaultMergeStrategy` and override the relevant methods.
90126

127+
<!-- React -->
91128
```ts
92129
export class MyCustomStrategy extends IgrDefaultMergeStrategy {
93130
/* Merge only cells within their respective projects */
@@ -100,6 +137,21 @@ export class MyCustomStrategy extends IgrDefaultMergeStrategy {
100137
}
101138
}
102139
```
140+
<!-- end: React -->
141+
<!-- WebComponents -->
142+
```ts
143+
export class MyCustomStrategy extends IgcDefaultMergeStrategy {
144+
/* Merge only cells within their respective projects */
145+
public override comparer(prevRecord: any, record: any, field: string): boolean {
146+
const a = prevRecord[field];
147+
const b = record[field];
148+
const projA = prevRecord['ProjectName'];
149+
const projB = record['ProjectName'];
150+
return a === b && projA === projB;
151+
}
152+
}
153+
```
154+
<!-- end: WebComponents -->
103155
<!-- ComponentEnd: Grid, HierarchicalGrid -->
104156
<!-- ComponentStart: TreeGrid -->
105157
The `IgxTreeGrid` provides two built-in strategies that implement the `IGridMergeStrategy` interface: `DefaultTreeGridMergeStrategy` and `ByLevelTreeGridMergeStrategy`. `DefaultTreeGridMergeStrategy` merges all cells with the same value, regardless of their hierarchical level. In contrast, `ByLevelTreeGridMergeStrategy` only merges cells if they have the same value and are located at the same level, making level a required condition for merging.
@@ -108,6 +160,7 @@ The `IgxTreeGrid` provides two built-in strategies that implement the `IGridMerg
108160

109161
If you only want to customize part of the behavior (for example, the comparer logic), you can extend one of the built-in strategies, either `DefaultTreeGridMergeStrategy` or `ByLevelTreeGridMergeStrategy`, and override the relevant methods.
110162

163+
<!-- React -->
111164
```ts
112165
export class MyCustomStrategy extends IgrDefaultTreeGridMergeStrategy {
113166
/* Merge only cells within their respective projects */
@@ -120,10 +173,26 @@ export class MyCustomStrategy extends IgrDefaultTreeGridMergeStrategy {
120173
}
121174
}
122175
```
176+
<!-- end: React -->
177+
<!-- WebComponents -->
178+
```ts
179+
export class MyCustomStrategy extends IgcDefaultTreeGridMergeStrategy {
180+
/* Merge only cells within their respective projects */
181+
public override comparer(prevRecord: any, record: any, field: string): boolean {
182+
const a = prevRecord[field];
183+
const b = record[field];
184+
const projA = prevRecord['ProjectName'];
185+
const projB = record['ProjectName'];
186+
return a === b && projA === projB;
187+
}
188+
}
189+
```
190+
<!-- end: WebComponents -->
123191
<!-- ComponentEnd: TreeGrid -->
124192

125193
### Applying a Custom Strategy
126194
Once defined, assign the strategy to the grid through the `mergeStrategy` property:
195+
<!-- React -->
127196
```tsx
128197
<{ComponentSelector} data={data} mergeStrategy={customStrategy}>
129198
<IgrColumn field="ActionID" merge={true}></IgrColumn>
@@ -133,6 +202,18 @@ Once defined, assign the strategy to the grid through the `mergeStrategy` proper
133202
```ts
134203
const customStrategy = new MyCustomStrategy() as IgrGridMergeStrategy;
135204
```
205+
<!-- end: React -->
206+
<!-- WebComponents -->
207+
```ts
208+
constructor() {
209+
const grid = (this.grid = document.getElementById('grid') as IgcGridComponent);
210+
211+
grid.data = this.data;
212+
grid.mergeStrategy = new MyCustomStrategy() as IgcGridMergeStrategy;
213+
grid.cellMergeMode = 'always';
214+
}
215+
```
216+
<!-- end: WebComponents -->
136217
<!-- ComponentStart: Grid -->
137218
### Demo
138219
`sample="/{ComponentSample}/cell-merge-custom-sample", height="700", alt="{Platform} {ComponentTitle} Cell Merging Example"`

doc/en/components/grids/_shared/column-pinning.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -299,13 +299,13 @@ const pinningConfig: IgrPinningConfig = { columns: ColumnPinningPosition.End };
299299

300300
`sample="/{ComponentSample}/column-pinning-right-side", height="510", alt="{Platform} {ComponentTitle} column pinning right side"`
301301

302-
<!-- React -->
303-
Additionally, you can specify each column pinning location separately, allowing you to pin columns to both sides of the grid for greater convenience and easier optimization of data sets. Please refer to the demo bellow for further reference. In order to pin a column, please either select a column by clicking on a header and use the pin buttons added ot the toolbar, or simply drag a column to another pinned one.
302+
<!-- React, WebComponents -->
303+
Additionally, you can specify each column pinning location separately, allowing you to pin columns to both sides of the grid for greater convenience and easier optimization of data sets. Please refer to the demo bellow for further reference. In order to pin a column, please either select a column by clicking on a header and use the pin buttons added to the toolbar, or simply drag a column to another pinned one.
304304

305305
### Demo
306306

307307
`sample="/{ComponentSample}/column-pinning-both-sides", height="510", alt="{Platform} {ComponentTitle} column pinning both sides"`
308-
<!-- end: React -->
308+
<!-- end: React, WebComponents -->
309309

310310

311311
## Custom Column Pinning UI

doc/en/components/interactivity/chat.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -453,6 +453,8 @@ chat.addEventListener('igcMessageCreated', (e) => {
453453
console.log('Message:', e.detail);
454454
});
455455
```
456+
457+
`sample="/interactions/chat/features", height="900", alt="Web Components Chat Features"`
456458
<!-- end: WebComponents -->
457459
<!-- React -->
458460
```tsx
@@ -462,7 +464,6 @@ chatRef.current.addEventListener('onMessageCreated', (e) => {
462464
});
463465
```
464466
<!-- end: React -->
465-
`sample="/interactions/chat/features", height="900", alt="Web Components Chat Features"`
466467

467468
## Styling
468469

docConfig.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,8 @@
180180
{ "name": "{PackageVerChanges-25-1-JUL2}", "value": "19.1.0 (July 2025)"},
181181
{ "name": "{PackageVerChanges-25-1-AUG}", "value": "19.2.0 (August 2025)"},
182182
{ "name": "{PackageVerChanges-25-1-SEP}", "value": "19.2.1 (September 2025)"},
183-
{ "name": "{PackageVerLatest}", "value": "19.2.2 (October 2025)"},
183+
{ "name": "{PackageVerChanges-25-1-OCT}", "value": "19.2.2 (October 2025)"},
184+
{ "name": "{PackageVerLatest}", "value": "19.3.0 (October 2025)"},
184185
{ "name": "{RepoSamples}", "value": "https://github.com/IgniteUI/igniteui-react-examples/tree/master/samples"},
185186
{ "name": "{RepoBrowser}", "value": "https://github.com/IgniteUI/igniteui-react-examples/tree/master/browser"},
186187
{ "name": "{GithubLink}", "value": "https://github.com/IgniteUI/igniteui-react"},
@@ -340,6 +341,7 @@
340341
{ "name": "{PackageVerChanges-25-1-JUL}", "value": "6.0.1 (July 2025)"},
341342
{ "name": "{PackageVerChanges-25-1-JUL-2}", "value": "6.1.0 (July 2025)"},
342343
{ "name": "{PackageVerChanges-25-1-AUG}", "value": "6.2.0 (August 2025)"},
344+
{ "name": "{PackageVerChanges-25-1-SEP}", "value": "6.2.1 (September 2025)"},
343345
{ "name": "{PackageCommonVerChanges-1.0.0}", "value": "1.0.0 (November 2021)"},
344346
{ "name": "{PackageCommonVerChanges-2.0.0}", "value": "2.0.0 (February 2022)"},
345347
{ "name": "{PackageCommonVerChanges-2.1.0}", "value": "2.1.0 (March 2022)"},
@@ -407,7 +409,7 @@
407409
{ "name": "{PackageDockManagerVerChanges-1.14.2}", "value": "1.14.2"},
408410
{ "name": "{PackageDockManagerVerChanges-1.14.3}", "value": "1.14.3"},
409411
{ "name": "{PackageDockManagerVerChanges-1.14.4}", "value": "1.14.4"},
410-
{ "name": "{PackageVerLatest}", "value": "6.2.1 (September 2025)"},
412+
{ "name": "{PackageVerLatest}", "value": "6.3.0 (October 2025)"},
411413
{ "name": "{PackageWebComponents}", "value": "igniteui-webcomponents"},
412414
{ "name": "{RepoSamples}", "value": "https://github.com/IgniteUI/igniteui-wc-examples/tree/master/samples"},
413415
{ "name": "{RepoBrowser}", "value": "https://github.com/IgniteUI/igniteui-wc-examples/tree/master/browser"},

0 commit comments

Comments
 (0)