Skip to content

Commit 903eb5b

Browse files
authored
feat(extras): add igniteui-angular-extras library to monorepo (#16932)
1 parent 9688aa9 commit 903eb5b

47 files changed

Lines changed: 6215 additions & 2 deletions

Some content is hidden

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

.github/workflows/nodejs.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,12 @@ jobs:
3636
NODE_OPTIONS: --max_old_space_size=4096
3737
- name: Lint i18n
3838
run: npm run lint:i18n
39+
- name: Lint Extras
40+
run: npm run lint:extras
3941
- name: Build Lib
4042
run: npm run build:lib
43+
- name: Build Extras
44+
run: npm run build:extras
4145
- name: Build Schematics
4246
run: npm run build:schematics
4347
- name: Build Migrations
@@ -51,6 +55,7 @@ jobs:
5155
npm run test:styles
5256
npm run test:schematics
5357
npm run test:i18n
58+
npm run test:extras
5459
env:
5560
NODE_OPTIONS: --max_old_space_size=4096 --no-experimental-strip-types
5661
TZ: America/New_York

.github/workflows/npm-publish.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ jobs:
3636
- name: Build igniteui-angular-i18n
3737
run: npm run build:i18n
3838

39+
- name: Build igniteui-angular-extras
40+
run: npm run build:extras
41+
3942
- name: Define npm tag
4043
run: |
4144
if [[ ${VERSION} == *"alpha"* || ${VERSION} == *"beta"* || ${VERSION} == *"rc"* ]]; then echo "NPM_TAG=next"; else echo "NPM_TAG=latest"; fi >> $GITHUB_ENV
@@ -55,6 +58,12 @@ jobs:
5558
cp ../../projects/igniteui-angular-i18n/LICENSE LICENSE
5659
working-directory: dist/igniteui-angular-i18n
5760

61+
- name: Copy extras files
62+
run: |
63+
cp ../../projects/igniteui-angular-extras/README.md README.md
64+
cp ../../projects/igniteui-angular-extras/LICENSE LICENSE
65+
working-directory: dist/igniteui-angular-extras
66+
5867
- name: Create igniteui-angular version
5968
run: npm version ${VERSION} --no-git-tag-version --save --verbose
6069
working-directory: dist/igniteui-angular
@@ -63,10 +72,18 @@ jobs:
6372
run: npm version ${VERSION} --no-git-tag-version --save
6473
working-directory: dist/igniteui-angular-i18n
6574

75+
- name: Create igniteui-angular-extras version
76+
run: npm version ${VERSION} --no-git-tag-version --save
77+
working-directory: dist/igniteui-angular-extras
78+
6679
- name: Publish igniteui-angular
6780
run: npm publish --tag ${NPM_TAG}
6881
working-directory: dist/igniteui-angular
6982

7083
- name: Publish igniteui-angular-i18n
7184
run: npm publish --tag ${NPM_TAG}
7285
working-directory: dist/igniteui-angular-i18n
86+
87+
- name: Publish igniteui-angular-extras
88+
run: npm publish --tag ${NPM_TAG}
89+
working-directory: dist/igniteui-angular-extras

.github/workflows/trigger-licensed-release.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,15 @@ jobs:
3838
"release_tag": "${{ github.event_name == 'workflow_dispatch' && inputs.release_tag || github.event.release.tag_name }}",
3939
"public_repo": "${{ github.repository }}"
4040
}
41+
42+
- name: Send repository dispatch to private repo for extras
43+
uses: peter-evans/repository-dispatch@v3
44+
with:
45+
token: ${{ steps.app-token.outputs.token }}
46+
repository: IgniteUI/igniteui-actions
47+
event-type: igniteui-angular-extras-public-release-created
48+
client-payload: |
49+
{
50+
"release_tag": "${{ github.event_name == 'workflow_dispatch' && inputs.release_tag || github.event.release.tag_name }}",
51+
"public_repo": "${{ github.repository }}"
52+
}

angular.json

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,57 @@
256256
}
257257
}
258258
},
259+
"igniteui-angular-extras": {
260+
"root": "projects/igniteui-angular-extras",
261+
"sourceRoot": "projects/igniteui-angular-extras/src",
262+
"projectType": "library",
263+
"prefix": "igx",
264+
"architect": {
265+
"build": {
266+
"builder": "@angular/build:ng-packagr",
267+
"options": {
268+
"tsConfig": "projects/igniteui-angular-extras/tsconfig.lib.json",
269+
"project": "projects/igniteui-angular-extras/ng-package.json"
270+
},
271+
"configurations": {
272+
"production": {
273+
"tsConfig": "projects/igniteui-angular-extras/tsconfig.lib.prod.json"
274+
}
275+
}
276+
},
277+
"test": {
278+
"builder": "@angular/build:karma",
279+
"options": {
280+
"polyfills": [
281+
"zone.js",
282+
"zone.js/testing",
283+
"hammerjs"
284+
],
285+
"styles": [
286+
"src/styles/styles.scss"
287+
],
288+
"stylePreprocessorOptions": {
289+
"includePaths": [
290+
"node_modules",
291+
"node_modules/@infragistics"
292+
]
293+
},
294+
"tsConfig": "projects/igniteui-angular-extras/tsconfig.spec.json",
295+
"karmaConfig": "projects/igniteui-angular-extras/karma.conf.js"
296+
}
297+
},
298+
"lint": {
299+
"builder": "@angular-eslint/builder:lint",
300+
"options": {
301+
"lintFilePatterns": [
302+
"projects/igniteui-angular-extras/**/*.ts",
303+
"projects/igniteui-angular-extras/**/*.html"
304+
],
305+
"eslintConfig": "projects/igniteui-angular/eslint.config.mjs"
306+
}
307+
}
308+
}
309+
},
259310
"igniteui-angular-elements": {
260311
"projectType": "application",
261312
"schematics": {

gulpfile.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,15 @@ module.exports.copyMigrations = (cb) => {
7070
cb();
7171
};
7272

73+
module.exports.copyExtrasMigrations = (cb) => {
74+
gulp.src([
75+
'./projects/igniteui-angular-extras/migrations/**/*.json',
76+
'!**/tsconfig.json'
77+
]).pipe(gulp.dest('./dist/igniteui-angular-extras/migrations'));
78+
79+
cb();
80+
};
81+
7382
module.exports.copySchematics = (cb) => {
7483
gulp.src([
7584
'./projects/igniteui-angular/schematics/**/*.json',

package-lock.json

Lines changed: 33 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"start": "ng serve --open --hmr",
77
"start:elements": "ng serve --project igniteui-angular-elements",
88
"start:performance": "ng serve --project igniteui-angular-performance",
9-
"build": "npm run build:lib && npm run build:elements && npm run build:schematics && npm run build:migrations && npm run build:i18n",
9+
"build": "npm run build:lib && npm run build:elements && npm run build:extras && npm run build:schematics && npm run build:migrations && npm run build:i18n",
1010
"test": "ng test igniteui-angular",
1111
"lint": "ng lint",
1212
"e2e": "ng e2e",
@@ -25,6 +25,10 @@
2525
"test:elements:watch": "ng test igniteui-angular-elements",
2626
"build:lib": "ng build igniteui-angular --configuration production && npm run build:styles",
2727
"build:styles": "node scripts/build-styles.mjs",
28+
"build:extras": "ng build igniteui-angular-extras --configuration production && npm run build:extras-migrations",
29+
"build:extras-migrations": "gulp copyExtrasMigrations && tsc --listEmittedFiles --project ./projects/igniteui-angular-extras/migrations/tsconfig.json",
30+
"test:extras": "ng test igniteui-angular-extras --watch=false --no-progress --code-coverage",
31+
"test:extras:watch": "ng test igniteui-angular-extras",
2832
"build:migrations": "gulp copyMigrations && tsc --listEmittedFiles --project ./projects/igniteui-angular/migrations/tsconfig.json",
2933
"build:schematics": "gulp copySchematics && tsc --listEmittedFiles --project ./projects/igniteui-angular/schematics/tsconfig.json",
3034
"build:docs": "npm run build:typedoc:en:production && npm run build:sassdoc:en:production",
@@ -47,6 +51,7 @@
4751
"build:i18n": "tsc --project projects/igniteui-angular-i18n/tsconfig.build.json && cp projects/igniteui-angular-i18n/package.json dist/igniteui-angular-i18n/package.json",
4852
"build:bundletest": "ng build bundle-test --configuration production",
4953
"lint:i18n": "eslint projects/igniteui-angular-i18n/src/**/*.ts",
54+
"lint:extras": "ng lint igniteui-angular-extras",
5055
"test:i18n:dist": "eslint -c projects/igniteui-angular-i18n/eslintrc.dist.i18n.mjs dist/igniteui-angular-i18n",
5156
"build:elements": "ng build igniteui-angular-elements && npm run pack:elements && gulp copyPackageForElements",
5257
"pack:elements": "node projects/igniteui-angular-elements/esbuild.mjs && node scripts/build-elements-styles.mjs",
@@ -125,6 +130,8 @@
125130
"hammer-simulator": "0.0.1",
126131
"hammerjs": "^2.0.8",
127132
"ig-typedoc-theme": "^7.0.1",
133+
"igniteui-angular-charts": "^21.0.0",
134+
"igniteui-angular-core": "^21.0.0",
128135
"igniteui-dockmanager": "^1.17.0",
129136
"igniteui-grid-lite": "^0.6.0",
130137
"igniteui-i18n-resources": "^1.0.2",
@@ -163,6 +170,16 @@
163170
"astro": {
164171
"zod": "~3.25.0"
165172
}
173+
},
174+
"igniteui-angular-charts": {
175+
"@angular/core": "^21.0.0",
176+
"@angular/common": "^21.0.0",
177+
"@angular/compiler": "^21.0.0"
178+
},
179+
"igniteui-angular-core": {
180+
"@angular/core": "^21.0.0",
181+
"@angular/common": "^21.0.0",
182+
"@angular/compiler": "^21.0.0"
166183
}
167184
}
168185
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
=================================================================
2+
3+
Infragistics Commercial License for Ignite UI for Angular Extras
4+
5+
=================================================================
6+
7+
This package contains commercial-only features and enhancements for Ignite UI for Angular.
8+
9+
All components, directives, services, and code within this package are licensed under the Infragistics Commercial License (EULA).
10+
11+
This is a commercial product, requiring a valid paid-for license for commercial use.
12+
This product is free to use for non-commercial educational use for students in K through 12 grades
13+
or University programs, and for educators to use in a classroom setting as examples/tools in their curriculum.
14+
15+
To verify eligibility for free usage, please register for trial at:
16+
https://www.infragistics.com/angular and open a support ticket with a request for free license.
17+
18+
To acquire a license for commercial usage, please register for trial at:
19+
https://www.infragistics.com/angular and refer to the purchasing options in the pricing section on the product page.
20+
21+
© Copyright 2026 INFRAGISTICS. All Rights Reserved.
22+
The Infragistics Ultimate license & copyright applies to this distribution.
23+
For information on that license, please go to:
24+
https://www.infragistics.com/legal/license
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
## Ignite UI for Angular Extras
2+
This package is part of our private npm feed hosted on https://packages.infragistics.com/npm/js-licensed/. If you are building a commercial product or your license has expired, you will need to [acquire a commercial license](https://www.infragistics.com/how-to-buy/product-pricing). There you will find the latest versions of the Ignite UI for Angular packages.
3+
4+
Use our [public repository](https://github.com/IgniteUI/igniteui-angular) for questions, issues and feature requests.
5+
6+
### Start using Ignite UI Angular Extras
7+
8+
#### Create a project from scratch
9+
1. Execute the following commands
10+
```
11+
npm i -g @igniteui/angular-schematics
12+
ng new <project name> --collection="@igniteui/angular-schematics" --template=<template id>
13+
cd <project name>
14+
ng g @igniteui/angular-schematics:component grid <component name>
15+
npm install igniteui-angular-extras
16+
```
17+
18+
> Note: If your app needs to be updated from trial to licensed package, check out our [official guide](https://www.infragistics.com/products/ignite-ui-angular/angular/components/general/ignite-ui-licensing.html#upgrading-packages-using-our-angular-schematics-or-ignite-ui-cli) on the subject. Use `ng g @igniteui/angular-schematics:upgrade-packages`.
19+
20+
21+
2. After the package is installed go ahead and:
22+
23+
## Updated Usage
24+
25+
### Before Version 19.x
26+
27+
In versions prior to 19.x, Ignite UI for Angular Extras required adding the `IgxExtrasModule` to your `app.module.ts` to enable components and directives. After installing the package, you would include the module in your `app.module.ts` as follows:
28+
29+
- Add the `IgxExtrasModule` to your app.module.ts
30+
- Apply `igxChartIntegration`, `igxConditionalFormatting`, `igxContextMenu` directives to your grid:
31+
32+
33+
34+
```typescript
35+
import { IgxExtrasModule } from 'igniteui-angular-extras';
36+
37+
@NgModule({
38+
declarations: [ ... ],
39+
imports: [ IgxExtrasModule, ... ],
40+
bootstrap: [ ... ]
41+
})
42+
export class AppModule { }
43+
```
44+
45+
```html
46+
<igx-grid #grid1 igxChartIntegration igxConditionalFormatting igxContextMenu
47+
[autoGenerate]="true" [paging]="true" [data]="localData" >
48+
</igx-grid>
49+
```
50+
51+
### After Version 19.x
52+
53+
Since version 19.x, Ignite UI for Angular Extras has adopted standalone components and directives, removing the need to add `IgxExtrasModule` to your `app.module.ts`. You can now directly import the required components and directives as standalone elements.
54+
55+
```typescript
56+
import { IgxChartIntegrationDirective } from 'igniteui-angular-extras';
57+
import { IgxConditionalFormattingDirective } from 'igniteui-angular-extras';
58+
import { IgxContextMenuDirective } from 'igniteui-angular-extras';
59+
```
60+
61+
```html
62+
<igx-grid #grid1 igxChartIntegration igxConditionalFormatting igxContextMenu
63+
[autoGenerate]="true" [paging]="true" [data]="localData" >
64+
</igx-grid>
65+
```
66+
67+
3. Execute `npm run start`
68+
69+
### Build
70+
71+
Execute `npm run build:lib` to build the project. The build artifacts will be stored in the `dist/` directory. By default it builds the project with `--prod` flag for a production build.
72+
In order to run the project with a small sample, execute `npm run start`
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
// Karma configuration file, see link for more information
2+
// https://karma-runner.github.io/1.0/config/configuration-file.html
3+
4+
process.env.CHROME_BIN = require('puppeteer').executablePath();
5+
6+
module.exports = function (config) {
7+
config.set({
8+
basePath: '',
9+
frameworks: ['jasmine', '@angular-devkit/build-angular'],
10+
plugins: [
11+
'karma-jasmine',
12+
'karma-coverage',
13+
'karma-chrome-launcher',
14+
'karma-spec-reporter'
15+
],
16+
client: {
17+
clearContext: false,
18+
jasmine: {
19+
random: false
20+
}
21+
},
22+
coverageReporter: {
23+
dir: require('path').join(__dirname, '../../coverage/igniteui-angular-extras'),
24+
subdir: '.',
25+
reporters: [
26+
{ type: 'lcov' },
27+
]
28+
},
29+
reporters: ['spec'],
30+
specReporter: {
31+
suppressSkipped: true
32+
},
33+
port: 9876,
34+
colors: true,
35+
logLevel: config.LOG_INFO,
36+
autoWatch: true,
37+
browsers: ['ChromeHeadlessNoSandbox'],
38+
customLaunchers: {
39+
ChromeHeadlessNoSandbox: {
40+
base: 'ChromeHeadless',
41+
flags: ['--no-sandbox', '--disable-gpu', '--window-size=820,800'],
42+
debug: false
43+
}
44+
},
45+
singleRun: false
46+
});
47+
};

0 commit comments

Comments
 (0)