Skip to content

Commit cc57b19

Browse files
committed
Merge remote-tracking branch 'origin/20.1.x' into pmoleri/fix-template-outlet-leak
2 parents f1dbfc1 + 913787d commit cc57b19

File tree

1,049 files changed

+43805
-21548
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,049 files changed

+43805
-21548
lines changed

.github/ISSUE_TEMPLATE/bug_report.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
name: Bug report
33
about: Create a report to help us improve
44
title: ''
5+
type: Bug
56
labels: ':bug: bug,:new: status: new'
67
assignees: ''
78
projects: 'IgniteUI/16'

.github/workflows/codeql-analysis.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ name: "CodeQL"
1313

1414
on:
1515
push:
16-
branches: [ master, 19.1.x, 18.2.x, 17.2.x, 16.1.x, 15.1.x ]
16+
branches: [ master, '[0-9]+.[0-9]+.x' ]
1717
pull_request:
1818
# The branches below must be a subset of the branches above
19-
branches: [ master, 19.1.x, 18.2.x, 17.2.x, 16.1.x, 15.1.x ]
19+
branches: [ master, '[0-9]+.[0-9]+.x' ]
2020
schedule:
2121
- cron: '33 4 * * 4'
2222

.github/workflows/nodejs.yml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jobs:
1616

1717
strategy:
1818
matrix:
19-
node-version: [20.x, 22.x]
19+
node-version: [20.x, 22.17.1]
2020

2121
steps:
2222
- name: Checkout
@@ -42,8 +42,7 @@ jobs:
4242
run: npm run build:migrations
4343
- name: Build TypeDoc & SassDoc
4444
run: |
45-
npm run build:typedoc:en:production
46-
npm run build:sassdoc:en:production
45+
npm run build:docs
4746
- name: Test
4847
run: |
4948
npm run test:lib

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ src/**/*.js
4848
src/**/*.js.map
4949
src/**/*.css.map
5050

51-
# Typedoc Theme
51+
# Typedoc and SassDoc Themes
52+
extras/sassdoc/**/*
5253
extras/docs/themes/typedoc/bin
5354
extras/docs/themes/sassdoc/node_modules
5455
extras/docs/themes/sassdoc/sassdoc/*

CHANGELOG.md

Lines changed: 185 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,173 @@
22

33
All notable changes for each version of this project will be documented in this file.
44

5-
## 19.2.0
65

6+
## 20.1.0
7+
8+
### New Features
9+
10+
- `IgxGrid`, `IgxTreeGrid`, `IgxHierarchicalGrid`
11+
- 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.
12+
13+
It can be enabled on the individual columns:
14+
15+
```html
16+
<igx-column field="field" [merge]="true"></igx-column>
17+
```
18+
The merging can be configured on the grid level to apply either:
19+
- `onSort` - only when the column is sorted.
20+
- `always` - always, regardless of data operations.
21+
22+
```html
23+
<igx-grid [cellMergeMode]="'always'">
24+
</igx-grid>
25+
```
26+
27+
The default `cellMergeMode` is `onSort`.
28+
29+
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.
30+
31+
It's possible also to set a `mergeComparer` on the individual columns, in case some custom handling is needed for a particular data field.
32+
33+
- 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:
34+
35+
```html
36+
<igx-column [field]="'Col1'" [pinned]='true' [pinningPosition]='pinningPosition'>
37+
</igx-column>
38+
```
39+
40+
```ts
41+
public pinningPosition = ColumnPinningPosition.End;
42+
```
43+
44+
Or with the API, via optional parameter:
45+
46+
```ts
47+
grid.pinColumn('Col1', 0, ColumnPinningPosition.End);
48+
grid.pinColumn('Col2', 0, ColumnPinningPosition.Start);
49+
```
50+
51+
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`.
52+
53+
- `IgxCarousel`
54+
- Added `select` method overload accepting index.
55+
```ts
56+
this.carousel.select(2, Direction.NEXT);
57+
```
58+
59+
- `IgxDateRangePicker`
60+
- Now has a complete set of properties to customize the calendar:
61+
- `headerOrientation`
62+
- `orientation`
63+
- `hideHeader`
64+
- `activeDate`
65+
- `disabledDates`
66+
- `specialDates`
67+
68+
- As well as the following templates, available to customize the contents of the calendar header in `dialog` mode:
69+
- `igxCalendarHeader`
70+
- `igxCalendarHeaderTitle`
71+
- `igxCalendarSubheader`
72+
73+
- Added new properties:
74+
- `usePredefinedRanges` - Whether to render built-in predefined ranges
75+
- `customRanges` - Allows the user to provide custom ranges rendered as chips
76+
- `resourceStrings` - Allows the user to provide set of resource strings
77+
78+
- **Behavioral Changes**
79+
- Added cancel button to the dialog, allowing the user to cancel the selection.
80+
- The calendar is displayed with header in `dialog` mode by default.
81+
- The picker remains open when typing (in two-inputs and `dropdown` mode).
82+
- The calendar selection is updated with the typed value.
83+
- The calendar view is updated as per the typed value.
84+
- The picker displays a clear icon by default in single input mode.
85+
86+
- `IgxPredefinedRangesAreaComponent`
87+
- Added new component for rendering the predefined or custom ranges inside the calendar of the `IgxDateRangePicker`
88+
89+
- `IgxDatePicker`
90+
- Similar to the `IgxDateRangePicker`, also completes the ability to customize the calendar by introducing the following
91+
properties in addition to the existing ones:
92+
- `hideHeader`
93+
- `orientation`
94+
- `activeDate`
95+
- **Behavioral Changes**
96+
- The calendar selection is updated with the typed value.
97+
- The calendar view is updated as per the typed date value.
98+
99+
- `IgxOverlay`
100+
- Position Settings now accept a new optional `offset` input property of type `number`. Used to set the offset of the element from the target in pixels.
101+
102+
- `IgxTooltip`
103+
- The tooltip now remains open while interacting with it.
104+
105+
- `IgxTooltipTarget`
106+
- Introduced several new properties to enhance customization of tooltip content and behavior. Those include `positionSettings`, `hasArrow`, `sticky`, `closeButtonTemplate`. For detailed usage and examples, please refer to the Tooltip [README](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/directives/tooltip/README.md).
107+
108+
### General
109+
- `IgxDropDown` now exposes a `role` input property, allowing users to customize the role attribute based on the use case. The default is `listbox`.
110+
111+
- `IgxTooltipTarget`
112+
- **Behavioral Changes**
113+
- The `showDelay` input property now defaults to `200`.
114+
- The `hideDelay` input property now defaults to `300`.
115+
- The `showTooltip` and `hideTooltip` methods do not take `showDelay`/`hideDelay` into account.
116+
117+
- `IgxGrid`, `IgxTreeGrid`, `IgxHierarchicalGrid`, `IgxPivotGrid`
118+
- **Sorting improvements**
119+
- 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.
120+
- Refactored sorting algorithms from recursive to iterative.
121+
- **Groupby improvements**
122+
- Refactored grouping algorithm from recursive to iterative.
123+
- Optimized grouping operations.
124+
125+
## 20.0.6
126+
### General
127+
- `IgxSimpleCombo`
128+
- Added `disableFiltering` to the `IgxSimpleCombo`, which enables/disables the filtering in the list. The default is `false`.
129+
- `IgxCombo`, `IgxSimpleCombo`
130+
- Removed deprecated `filteringOptions.filterable` option.
131+
132+
## 20.0.2
133+
134+
### New Features
135+
- **Separating Button and Icon Button Themes** - The `button-theme` and `icon-button-theme` functions are still available, but for more targeted customization, you can now use the specific theme function for each button type.
136+
- **Component Themes Enchancements** - Component themes have been improved to automatically calculate all necessary states (e.g., hover, focus, active) based on just a few key values. For example, customizing a contained button requires only a background color:
137+
```scss
138+
$custom-contained-button: contained-button-theme(
139+
$background: #09f;
140+
);
141+
```
142+
143+
## 20.0.0
144+
145+
### General
146+
- **Angular 20 Compatibility** - Ignite UI for Angular now plays nice with Angular 20! Upgrade your apps and enjoy the latest features.
147+
- `IgxActionStrip`
148+
- **Behavioral Changes** - When using the Action Strip standalone, outside of Grid, scenarios the component is no longer initially visible and the `hidden` property now defaults to `true`.
149+
- `IgxChip`
150+
- **Behavioral Change** The `variant` is now strictly typed with the union of supported options and no longer accepts invalid values for the default state, provide no value (nullish) instead is needed.
151+
152+
### New Features
153+
- `IgxGrid`, `IgxTreeGrid`, `IgxHierarchicalGrid`, `IgxPivotGrid`
154+
- Added a new `igxGridEmpty` template directive that allows assigning the `emptyGridTemplate` declaratively, without the need to get and assign reference, like other grid templates like:
155+
```html
156+
<igx-grid>
157+
<ng-template igxGridEmpty>
158+
<!-- content to show when the grid is empty -->
159+
</ng-template>
160+
</igx-grid>
161+
```
162+
- Added a new `igxGridLoading` template directive that allows assigning the `loadingGridTemplate` declaratively, without the need to get and assign reference, like other grid templates like:
163+
```html
164+
<igx-grid>
165+
<ng-template igxGridLoading>
166+
<!-- content to show when the grid is loading -->
167+
</ng-template>
168+
</igx-grid>
169+
```
170+
171+
## 19.2.0
7172
### General
8173
- `IgxCarousel`
9174
- Removed deprecated property `keyboardSupport`.
@@ -13,6 +178,14 @@ All notable changes for each version of this project will be documented in this
13178
- A column's `minWidth` and `maxWidth` constrain the user-specified `width` so that it cannot go outside their bounds.
14179
- In SSR mode grid with height 100% or with no height will render on the server with % size and with no data. The grid will show either the empty grid template or the loading indicator (if isLoading is true).
15180
- In SSR mode grid with width 100% or with no width will render on the server with % size and with all columns.
181+
- The `pagingMode` property can now be set as simple strings `'local'` and `'remote'` and does not require importing the `GridPagingMode` enum.
182+
- `IgxHierarchicalGrid`
183+
- Introduced a new advanced filtering capability that enables top-level records to be dynamically refined based on the attributes or data of their associated child records.
184+
- Added a new `schema` input property that can be used to pass collection of `EntityType` objects. This property is required for remote data scenarios.
185+
- `IgxQueryBuilderComponent`, `IgxAdvancedFilteringDialogComponent`
186+
- Added support for entities with hierarchical structure.
187+
- `EntityType`
188+
- A new optional property called `childEntities` has been introduced that can be used to create nested entities.
16189

17190
## 19.1.1
18191
### New Features
@@ -30,7 +203,7 @@ All notable changes for each version of this project will be documented in this
30203
- Introduced a new `expanded` input property, enabling dynamic control over the banner's state. The banner can now be programmatically set to expanded (visible) or collapsed (hidden) both initially and at runtime. Animations will trigger during runtime updates — the **open animation** plays when `expanded` is set to `true`, and the **close animation** plays when set to `false`. However, no animations will trigger when the property is set initially.
31204
- The banner's event lifecycle (`opening`, `opened`, `closing`, `closed`) only triggers through **user interactions** (e.g., clicking to open/close). Programmatic updates using the `expanded` property will not fire any events.
32205
- If the `expanded` property changes during an ongoing animation, the current animation will **stop** and the opposite animation will begin from the **point where the previous animation left off**. For instance, if the open animation (10 seconds) is interrupted at 6 seconds and `expanded` is set to `false`, the close animation (5 seconds) will start from its 3rd second.
33-
- `IgxQueryBuilder` has new design that comes with updated appearance and new functionality
206+
- `IgxQueryBuilder` has a new design that comes with an updated appearance and new functionality
34207
- `IgxQueryBuilderComponent`
35208
- Introduced the ability to create nested queries by specifying IN/NOT IN operators.
36209
- Introduced the ability to reposition condition chips by dragging or using `Arrow Up/Down`.
@@ -40,24 +213,24 @@ All notable changes for each version of this project will be documented in this
40213
- Added the `canCommit`, `commit` and `discard` public methods that allows the user to save/discard the current state of the expression tree.
41214
- Added option to template the search value input:
42215
```
43-
<ng-template igxQueryBuilderSearchValue
216+
<ng-template igxQueryBuilderSearchValue
44217
let-searchValue
45-
let-selectedField = "selectedField"
218+
let-selectedField = "selectedField"
46219
let-selectedCondition = "selectedCondition"
47220
let-defaultSearchValueTemplate = "defaultSearchValueTemplate">
48221
@if (selectedField?.field === 'Id' && selectedCondition === 'equals'){
49222
<input type="text" required [(ngModel)]="searchValue.value"/>
50-
} @else {
223+
} @else {
51224
<ng-container #defaultTemplate *ngTemplateOutlet="defaultSearchValueTemplate"></ ng-container>
52225
}
53-
</ng-template>
226+
</ng-template>
54227
```
55-
- **Behavioral Changes**
228+
- **Behavioral Changes**
56229
- Expression enters edit mode on single click, `Enter` or `Space`.
57230
- Selecting conditions inside the `IgxQueryBuilderComponent` is no longer supported. Grouping/ungrouping expressions is now achieved via the newly exposed Drag & Drop functionality.
58231
- Deleting multiple expressions through the context menu is no longer supported.
59232
- `IgxQueryBuilderHeaderComponent`
60-
- **Behavioral Change**
233+
- **Behavioral Change**
61234
- Legend is no longer shown.
62235
- If the `title` input property is not set, by default it would be empty string.
63236
- **Deprecation**
@@ -139,9 +312,9 @@ All notable changes for each version of this project will be documented in this
139312

140313
### Themes
141314
- **Breaking Change** `Palettes`
142-
- All palette colors have been migrated to the [CSS relative colors syntax](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_colors/Relative_colors). This means that color consumed as CSS variables no longer need to be wrapped in an `hsl` function.
315+
- All palette colors have been migrated to the [CSS relative colors syntax](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_colors/Relative_colors). This means that color consumed as CSS variables no longer need to be wrapped in an `hsl` function.
143316

144-
Example:
317+
Example:
145318
```css
146319
/* 18.1.x and before: */
147320
background: hsl(var(--ig-primary-600));
@@ -152,7 +325,7 @@ All notable changes for each version of this project will be documented in this
152325

153326
This change also opens up the door for declaring the base (500) variants of each color in CSS from any color, including other CSS variables, whereas before the Sass `palette` function was needed to generate color shades from a base color.
154327

155-
Example:
328+
Example:
156329
```scss
157330
/* 18.1.x and before: */
158331
$my-palette: palette($primary: #09f, ...);
@@ -192,7 +365,7 @@ For Firefox users, we provide limited scrollbar styling options through the foll
192365
- `animationType` input property is now of type `CarouselAnimationType`. `HorizontalAnimationType` can also be used, however, to accommodate the new vertical mode, which supports vertical slide animations, it is recommended to use `CarouselAnimationType`.
193366

194367
- **Behavioral Changes** - the `keyboardSupport` input property now defaults to `false`.
195-
- **Deprecation** - the `keyboardSupport` input property has been deprecated and will be removed in a future version. Keyboard navigation with `ArrowLeft`, `ArrowRight`, `Home`, and `End` keys will be supported when focusing the indicators' container via ` Tab`/`Shift+Tab`.
368+
- **Deprecation** - the `keyboardSupport` input property has been deprecated and will be removed in a future version. Keyboard navigation with `ArrowLeft`, `ArrowRight`, `Home`, and `End` keys will be supported when focusing the indicators' container via ` Tab`/`Shift+Tab`.
196369

197370
- `IgxCombo`:
198371
- **Breaking Change** The deprecated `filterable` property is replaced with `disableFiltering`.

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ and refer to the purchasing options in the pricing section on the product page.
1111
This repository includes code originally copied from https://github.com/zloirock/core-js
1212
in the projects/igniteui-angular/src/lib/core/setImmediate.ts file. The original version of the code is MIT licensed. See the file header for details.
1313

14-
© Copyright 2020 INFRAGISTICS. All Rights Reserved.
14+
© Copyright 2025 INFRAGISTICS. All Rights Reserved.
1515
The Infragistics Ultimate license & copyright applies to this distribution.
1616
For information on that license, please go to our website https://www.infragistics.com/legal/license.

README.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ Some of the Angular chart types included are: [Polar chart](https://www.infragis
108108
|stepper|:white_check_mark:|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/stepper/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/stepper)|13.0.0|
109109
|switch|:white_check_mark:|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/switch/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/switch)|2.0.0|||||
110110
|tabs|:white_check_mark:|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/tabs/tabs/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/tabs)|5.1.0||||
111+
|tile manager|:white_check_mark:||[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/tile-manager)|19.2.0||||
111112
|time picker|:white_check_mark:|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/time-picker/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/time-picker)|5.3.0||||
112113
|toast|:white_check_mark:|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/toast/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/toast)|5.1.0||||
113114
|tree|:white_check_mark:|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/tree/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/tree)|12.0.0||||
@@ -162,6 +163,8 @@ Some of the Angular chart types included are: [Polar chart](https://www.infragis
162163
|18.1.0|22-Jul-24|[Milestone #33](https://github.com/IgniteUI/igniteui-angular/blob/master/ROADMAP.md#milestone-33-due-by-jul-2024)|
163164
|18.2.0|25-Oct-24|[Milestone #34](https://github.com/IgniteUI/igniteui-angular/blob/master/ROADMAP.md#milestone-34-version-182-released-oct-25th-2024)|
164165
|19.0.0|25-Nov-24|[Milestone #35](https://github.com/IgniteUI/igniteui-angular/blob/master/ROADMAP.md#milestone-35-version-190-released-nov-25th-2024)|
166+
|19.1.0|27-Feb-25|[Milestone #36](https://github.com/IgniteUI/igniteui-angular/blob/master/ROADMAP.md#milestone-36--version-191-released-feb-27th-2025)|
167+
|19.2.0|16-Apr-25|[Milestone #37]()|
165168

166169

167170
### Components available in [igniteui-angular-charts](https://www.npmjs.com/package/igniteui-angular-charts)
@@ -334,7 +337,7 @@ In order for us to verify your eligibility for free usage, please [register for
334337

335338
To acquire a license for commercial usage, please [register for trial](https://Infragistics.com/Angular) and refer to the purchasing options in the pricing section on the product page.
336339

337-
© Copyright 2020 INFRAGISTICS. All Rights Reserved.
340+
© Copyright 2025 INFRAGISTICS. All Rights Reserved.
338341
The Infragistics Ultimate license & copyright applies to this distribution.
339342
For information on that license, please go to our website [https://www.infragistics.com/legal/license](https://www.infragistics.com/legal/license).
340343

0 commit comments

Comments
 (0)