Skip to content

Commit 80df1a4

Browse files
authored
Merge branch 'master' into rkaraivanov/copilot-instructions
2 parents fc9013d + b67f9b6 commit 80df1a4

743 files changed

Lines changed: 16814 additions & 15020 deletions

File tree

Some content is hidden

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

.github/CONTRIBUTING.md

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -94,20 +94,31 @@ There are several ways to localize components' string resources:
9494
1.1. Localize a given instance of component - each component which supports localization has input property `resourceStrings`. Setting a newly instantiated object to this property will localize only that given component's instance.
9595
1.2. Localize all resources for a component type - each component which supports localization has input property `resourceStrings`. To localize all instances of a given component in the application the following steps should be performed - get the value of the input property `resourceStrings` of the component to be localized; do not create a new instance but replace the existing strings within the object. By default all components of a given type in an application share one instance of the resource strings. Replacing a value in that instance affects all components of that type in the application.
9696
1.3. Localize all resources for all components - use global method `getCurrentResourceStrings` to get an object containing current resource strings for all components. To provide localized resources just pass an object of type `IResourceStrings` to the global method `changei18n`.
97+
1.4 As of 21.1.x the localization has new implementation and you can use the new API `registerI18n` to register resource string for a component or all components for the whole app, as well as which locale it corresponds to. To localize a single component you will need to get is corresponding resource string keys using one of the available resources and provide only those keys.
9798

9899
2. Using npm package:
99100
We've created new repository which will hold the resource strings for languages different than English:
100101
https://github.com/IgniteUI/igniteui-angular-i18n
101102

102-
**NOTE** The localization repo has been moved to live inside the `igniteui-angular` repository under `./projects/igniteui-angular-i18n`
103+
**NOTE** The localization repo has been moved to live inside the `igniteui-angular` repository under `./projects/igniteui-angular-i18n`
104+
**NOTE** As of 21.1.x the localization resource strings have been moved to the [`igniteui-i18n`](https://github.com/IgniteUI/igniteui-i18n) repository under `projects/igniteui-i18n-resources`.
103105

104106
A npm package should be published each time we release new version of Ignite UI for Angular. Its version should correspond to the version of the igniteui-angular npm package.
105107
One could localize an application by importing the corresponding localized resource strings from the localization package (`igniteui-angular-i18n`) and use the methods described in the previous bullet to localize the whole application or part of it.
106-
Example:
108+
109+
**Example:**
110+
107111
Inside app.module you can perform:
108-
_import { IgxResouceStringsJA } from ‘igniteui-angular-i18n’;_
109-
And then:
110-
_Changei18n(IgxResouceStringsJA);_
112+
```ts
113+
import { IgxResouceStringsJA } fromigniteui-angular-i18n’;
114+
changei18n(IgxResouceStringsJA);
115+
```
116+
117+
**Example new API:**
118+
```ts
119+
import { ResouceStringsJA } fromigniteui-i18n-resources’;
120+
registerI18n(IgxResouceStringsJA, 'ja');
121+
```
111122

112123
### Resource strings keys naming convention
113124
Each key in the `IResourceStrings` (and `IGridResourceStrings`, `ITimePickerResourceStrings`, etc.) is prefixed with components' selector and followed by the resource string key. Having components' selectors as prefixes allows us to have same resource strings keys for more than one component.

CHANGELOG.md

Lines changed: 69 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,81 @@
22

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

5-
## 21.0.0
5+
## 21.1.0
66

7-
### Themes
7+
# Localization(i18n)
88

9-
- `IgxButton`
10-
- **Breaking Change**
11-
- The following shadow-related parameters were removed from the `outlined-button-theme` and `flat-button-theme`:
12-
- `resting-shadow`
13-
- `hover-shadow`
14-
- `focus-shadow`
15-
- `active-shadow`
9+
- `IgxActionStrip`, `IgxBanner`, `IgxCalendar`, `IgxCarousel`, `IgxChip`, `IgxCombo`, `IgxDatePicker`, `IgxDateRangePicker`, `IgxGrid`, `IgxTreeGrid`, `IgxHierarchicalGrid`, `IgxPivotGrid`, `IgxInputs`, `IgxList`, `IgxPaginator`, `IgxQueryBuilder`, `IgxTimePicker`, `IgxTree`
10+
- New `Intl` implementation for all currently supported components that format and render data like dates and numbers.
11+
- New localization implementation for the currently supported languages for all components that have resource strings in the currently supported languages.
12+
- New public localization API and package named `igniteui-i18n-resources` containing the new resources that are used in conjunction.
13+
- Added API to toggle off Angular's default formatting completely in favor of the new `Intl` implementation. Otherwise `Intl` will be used when a locale is not defined for Angular to use.
14+
- Old resources and API should still remain working and not experience any change in behavior, despite internally using the new localization as well.
1615

1716
## 21.0.0
1817

18+
### New Features
19+
20+
- **New component** `IgxChat`:
21+
- A component that provides complete solution for building conversational interfaces in your applications. Read up more information in the [ReadMe](https://github.com/IgniteUI/igniteui-angular/tree/master/projects/igniteui-angular/chat/README.md)
22+
23+
- `IgxGrid`, `IgxTreeGrid`, `IgxHierarchicalGrid`
24+
- Added PDF export functionality to grid components. Grids can now be exported to PDF format alongside the existing Excel and CSV export options.
25+
26+
The new `IgxPdfExporterService` follows the same pattern as Excel and CSV exporters:
27+
28+
```ts
29+
import { IgxPdfExporterService, IgxPdfExporterOptions } from 'igniteui-angular';
30+
31+
constructor(private pdfExporter: IgxPdfExporterService) {}
32+
33+
exportToPdf() {
34+
const options = new IgxPdfExporterOptions('MyGridExport');
35+
options.pageOrientation = 'landscape'; // 'portrait' or 'landscape' (default: 'landscape')
36+
options.pageSize = 'a4'; // 'a3', 'a4', 'a5', 'letter', 'legal', etc.
37+
options.fontSize = 10;
38+
options.showTableBorders = true;
39+
40+
this.pdfExporter.export(this.grid, options);
41+
}
42+
```
43+
44+
The grid toolbar exporter component now includes a PDF export button:
45+
46+
```html
47+
<igx-grid-toolbar>
48+
<igx-grid-toolbar-exporter
49+
[exportPDF]="true"
50+
[exportExcel]="true"
51+
[exportCSV]="true">
52+
</igx-grid-toolbar-exporter>
53+
</igx-grid-toolbar>
54+
```
55+
56+
Key features:
57+
- **Multi-page support** with automatic page breaks
58+
- **Hierarchical visualization** for TreeGrid (with indentation) and HierarchicalGrid (with child tables)
59+
- **Multi-level column headers** (column groups) support
60+
- **Summary rows** with proper value formatting
61+
- **Text truncation** with ellipsis for long content
62+
- **Landscape orientation** by default (suitable for wide grids)
63+
- **Internationalization** support for all 19 supported languages
64+
- Respects all grid export options (ignoreFiltering, ignoreSorting, ignoreColumnsVisibility, etc.)
65+
1966
### Breaking Changes
2067

68+
- `IgxButton`
69+
- The following shadow-related parameters were removed from the `outlined-button-theme` and `flat-button-theme`:
70+
- `resting-shadow`
71+
- `hover-shadow`
72+
- `focus-shadow`
73+
- `active-shadow`
74+
75+
#### Dependency Injection Refactor
76+
- All internal DI now uses the `inject()` API across `igniteui-angular` (no more constructor DI in library code).
77+
- If you extend our components/services or call their constructors directly, remove DI params and switch to `inject()` (e.g., `protected foo = inject(FooService);`).
78+
- App usage via templates remains the same; no action needed unless you subclass/override our types.
79+
2180
#### Multiple Entry Points Support
2281

2382
The library now supports multiple entry points for better tree-shaking and code splitting. While the main entry point (`igniteui-angular`) remains fully backwards compatible by re-exporting all granular entry points, we recommend migrating to the new entry points for optimal bundle sizes.
@@ -38,7 +97,7 @@ The `ng update` migration will prompt you to optionally migrate your imports to
3897

3998
To migrate manually later:
4099
```bash
41-
ng update igniteui-angular --migrate-only --from=20.1.0 --to=21.0.0 --migrate-imports
100+
ng update igniteui-angular --migrate-only --from=20.1.0 --to=21.0.0
42101
```
43102

44103
**Component Relocations:**
@@ -61,7 +120,6 @@ See the [Angular Package Format documentation](https://angular.io/guide/angular-
61120
## 20.1.0
62121

63122
### New Features
64-
65123
- `IgxGrid`, `IgxTreeGrid`, `IgxHierarchicalGrid`
66124
- 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.
67125

LICENSE

Lines changed: 124 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,134 @@
1+
=================================================================
2+
3+
Dual License for Ignite UI for Angular
4+
5+
=================================================================
6+
7+
This software package is offered under a dual-license model, which allows for both commercial and permissive open-source use, depending on the components, modules, directives, and services being used.
8+
9+
It is crucial to understand which license applies to which part of the package.
10+
11+
-----------------------------------------------------------------
12+
13+
MIT License
14+
15+
-----------------------------------------------------------------
16+
17+
The MIT License applies exclusively to the components (encompassing all related modules and directives), directives, and services listed below and their associated source code. **All other parts of this package remain under the Infragistics Commercial License.**
18+
19+
**Covered Components, Directives and Services with MIT License:**
20+
21+
- `igx-accordion`
22+
- `igxAutocomplete`
23+
- `igx-avatar`
24+
- `igx-badge`
25+
- `igx-banner`
26+
- `igx-bottom-nav`
27+
- `igx-button`
28+
- `igx-card`
29+
- `igx-carousel`
30+
- `igx-chat`
31+
- `igx-checkbox`
32+
- `igx-chip`
33+
- `igx-circular-bar`
34+
- `igx-combo`
35+
- `igx-date-picker`
36+
- `igx-date-range-picker`
37+
- `igx-dialog`
38+
- `igx-divider`
39+
- `igx-drop-down`
40+
- `igx-expansion-panel`
41+
- `igx-icon`
42+
- `igx-input-group`
43+
- `igx-linear-bar`
44+
- `igx-list`
45+
- `igx-navbar`
46+
- `igx-nav-drawer`
47+
- `igx-paginator`
48+
- `igx-radio`
49+
- `igx-radio-group`
50+
- `igx-rating`
51+
- `igx-select`
52+
- `igx-simple-combo`
53+
- `igx-slider`
54+
- `igx-snackbar`
55+
- `igx-splitter-pane`
56+
- `igx-switch`
57+
- `igx-tabs`
58+
- `igx-toast`
59+
- `igx-tooltip`
60+
- `igx-tree`
61+
- `igx-time-picker`
62+
- `igx-stepper`
63+
- `igx-month-picker`
64+
- `igx-action-strip`
65+
- `igx-buttongroup`
66+
- `igx-calendar`
67+
- `igx-chip-area`
68+
- `igxDateTimeEditor`
69+
- `igxDrag`
70+
- `igxDrop`
71+
- `igxFor`
72+
- `igxIconButton`
73+
- `igxInput`
74+
- `igxLabel`
75+
- `igxLayout`
76+
- `igxMask`
77+
- `igxRipple`
78+
- `IgxOverlayService`
79+
- `IgxTextHighlightDirective`
80+
- `IgxTextHighlightService`
81+
- `igxToggle`
82+
83+
The MIT License applies exclusively to the components (encompassing all related modules and directives), directives, and services listed above and their associated source code.
84+
All other parts of this package remain under the Infragistics Commercial License.
85+
86+
The MIT License (MIT)
87+
88+
Copyright (c) 2025 Infragistics
89+
90+
Permission is hereby granted, free of charge, to any person obtaining a copy
91+
of this software and associated documentation files (the "Software"), to deal
92+
in the Software without restriction, including without limitation the rights
93+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
94+
copies of the Software, and to permit persons to whom the Software is
95+
furnished to do so, subject to the following conditions:
96+
97+
The above copyright notice and this permission notice shall be included in all
98+
copies or substantial portions of the Software.
99+
100+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
101+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
102+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
103+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
104+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
105+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
106+
SOFTWARE.
107+
108+
-----------------------------------------------------------------
109+
110+
Infragistics Commercial License
111+
112+
-----------------------------------------------------------------
113+
114+
All components (encompassing all related modules and directives), modules, directives, services, and code within this package, **except those listed under the MIT License section above**, are licensed under the Infragistics Commercial License (EULA).
115+
1116
This is a commercial product, requiring a valid paid-for license for commercial use.
2117
This product is free to use for non-commercial educational use for students in K through 12 grades
3-
or University programs, and for educators to use in a classroom setting as examples / tools in their curriculum.
118+
or University programs, and for educators to use in a classroom setting as examples/tools in their curriculum.
4119

5-
In order for us to verify your eligibility for free usage, please register for trial at
6-
https://Infragistics.com/Angular and open a support ticket with a request for free license.
120+
To verify eligibility for free usage, please register for trial at:
121+
https://www.infragistics.com/angular and open a support ticket with a request for free license.
7122

8-
To acquire a license for commercial usage, please register for trial at https://Infragistics.com/Angular
9-
and refer to the purchasing options in the pricing section on the product page.
123+
To acquire a license for commercial usage, please register for trial at:
124+
https://www.infragistics.com/angular and refer to the purchasing options in the pricing section on the product page.
10125

11126
This repository includes code originally copied from https://github.com/zloirock/core-js
12127
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.
13128

14129
© Copyright 2025 INFRAGISTICS. All Rights Reserved.
15130
The Infragistics Ultimate license & copyright applies to this distribution.
16-
For information on that license, please go to our website https://www.infragistics.com/legal/license.
131+
For information on that license, please go to:
132+
https://www.infragistics.com/legal/license
133+
134+
For details, see https://opensource.org/licenses/MIT

0 commit comments

Comments
 (0)