Skip to content

Commit 6382ce1

Browse files
damyanpetevgmurray81ig-robstofferskdinevrkaraivanov
authored
feat(*): add Angular Elements setup for wrapping grid components (#14421)
Co-authored-by: gmurray81 <[email protected]> Co-authored-by: Robert Stoffers <[email protected]> Co-authored-by: Konstantin Dinev <[email protected]> Co-authored-by: Radoslav Karaivanov <[email protected]> Co-authored-by: Maya <[email protected]> Co-authored-by: skrustev <[email protected]> Co-authored-by: Martin Dragnev <[email protected]> Co-authored-by: Deyan Kamburov <[email protected]> Co-authored-by: IMinchev <[email protected]> Co-authored-by: Tihomir Tonev <[email protected]>
1 parent 3ebd8bd commit 6382ce1

File tree

134 files changed

+33867
-768
lines changed

Some content is hidden

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

134 files changed

+33867
-768
lines changed

.github/workflows/nodejs.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,16 @@ jobs:
5656
run: |
5757
npm run build:i18n
5858
npm run test:i18n:dist
59+
- name: Build Elements
60+
run: npm run elements:configure && npm run build:elements
61+
- name: Check for Elements config changes
62+
run: |
63+
if [ -n "$(git status --porcelain -- projects/igniteui-angular-elements/**/elements.config.ts)" ]; then
64+
echo "Error: There are changes to the Elements config. Run 'npm run elements:configure' and commit." >&2
65+
exit 1
66+
fi
67+
- name: Test Elements
68+
run: npm run test:elements
5969
- name: Bundle Tree-Shake & SSR Test
6070
run: npm run build:bundletest
6171
- name: Publish to coveralls.io

angular.json

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,129 @@
240240
}
241241
}
242242
},
243+
"igniteui-angular-elements": {
244+
"projectType": "application",
245+
"schematics": {
246+
"@schematics/angular:component": {
247+
"style": "scss"
248+
},
249+
"@schematics/angular:application": {
250+
"strict": true
251+
}
252+
},
253+
"root": "projects/igniteui-angular-elements",
254+
"sourceRoot": "projects/igniteui-angular-elements/src",
255+
"prefix": "app",
256+
"architect": {
257+
"build": {
258+
"builder": "@angular-devkit/build-angular:application",
259+
"options": {
260+
"outputPath": {
261+
"base": "dist/igniteui-angular-elements"
262+
},
263+
"index": "projects/igniteui-angular-elements/src/index.html",
264+
"polyfills": [
265+
"projects/igniteui-angular-elements/src/polyfills.ts"
266+
],
267+
"tsConfig": "projects/igniteui-angular-elements/tsconfig.app.json",
268+
"inlineStyleLanguage": "scss",
269+
"assets": [
270+
"projects/igniteui-angular-elements/src/favicon.ico",
271+
"projects/igniteui-angular-elements/src/assets",
272+
"projects/igniteui-angular-elements/src/index.js"
273+
],
274+
"styles": [
275+
"projects/igniteui-angular-elements/src/styles.scss"
276+
],
277+
"scripts": [
278+
{ "input": "./node_modules/lit-html/lit-html.js", "inject": false },
279+
{ "input": "./node_modules/lit-html/development/directive.js", "inject": false }
280+
],
281+
"stylePreprocessorOptions": {
282+
"includePaths": ["node_modules"]
283+
},
284+
"browser": "projects/igniteui-angular-elements/src/main.ts"
285+
},
286+
"configurations": {
287+
"production": {
288+
"budgets": [
289+
{
290+
"type": "allScript",
291+
"maximumWarning": "2.1mb",
292+
"maximumError": "2.5mb"
293+
},
294+
{
295+
"type": "bundle",
296+
"name": "styles",
297+
"maximumWarning": "450kb",
298+
"maximumError": "480kb"
299+
},
300+
{
301+
"type": "anyComponentStyle",
302+
"maximumWarning": "2kb",
303+
"maximumError": "4kb"
304+
}
305+
],
306+
"fileReplacements": [
307+
{
308+
"replace": "projects/igniteui-angular-elements/src/environments/environment.ts",
309+
"with": "projects/igniteui-angular-elements/src/environments/environment.prod.ts"
310+
}
311+
],
312+
"outputHashing": "none",
313+
"optimization": true,
314+
"externalDependencies": ["lit-html"]
315+
},
316+
"development": {
317+
"optimization": false,
318+
"extractLicenses": false,
319+
"sourceMap": true,
320+
"namedChunks": true
321+
}
322+
},
323+
"defaultConfiguration": "production"
324+
},
325+
"serve": {
326+
"builder": "@angular-devkit/build-angular:dev-server",
327+
"configurations": {
328+
"production": {
329+
"buildTarget": "igniteui-angular-elements:build:production"
330+
},
331+
"development": {
332+
"buildTarget": "igniteui-angular-elements:build:development"
333+
}
334+
},
335+
"defaultConfiguration": "development"
336+
},
337+
"extract-i18n": {
338+
"builder": "@angular-devkit/build-angular:extract-i18n",
339+
"options": {
340+
"buildTarget": "igniteui-angular-elements:build"
341+
}
342+
},
343+
"test": {
344+
"builder": "@angular-devkit/build-angular:karma",
345+
"options": {
346+
"main": "projects/igniteui-angular-elements/src/test.ts",
347+
"polyfills": "projects/igniteui-angular-elements/src/polyfills.ts",
348+
"tsConfig": "projects/igniteui-angular-elements/tsconfig.spec.json",
349+
"karmaConfig": "projects/igniteui-angular-elements/karma.conf.js",
350+
"inlineStyleLanguage": "scss",
351+
"assets": [
352+
"projects/igniteui-angular-elements/src/favicon.ico",
353+
"projects/igniteui-angular-elements/src/assets"
354+
],
355+
"styles": [
356+
"projects/igniteui-angular-elements/src/styles.scss"
357+
],
358+
"stylePreprocessorOptions": {
359+
"includePaths": ["node_modules"]
360+
},
361+
"scripts": []
362+
}
363+
}
364+
}
365+
},
243366
"bundle-test": {
244367
"projectType": "application",
245368
"schematics": {

gulpfile.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,3 +174,9 @@ module.exports.sassdocImportJson = sassdocImportJson;
174174
module.exports.sassdocBuildJson = sassdocBuildJson;
175175
module.exports.sassdocBuildJA = series(sassdocCleanOutputDir, sassdocBuildJA);
176176
module.exports.sassdocBuildEN = series(sassdocCleanOutputDir, sassdocBuildEN);
177+
178+
module.exports.copyPackageForElements = (cb) => {
179+
return gulp.src([
180+
path.join(__dirname, 'projects/igniteui-angular-elements/package.json')
181+
]).pipe(gulp.dest(path.join(__dirname, 'dist/igniteui-angular-elements/browser')));
182+
};

package-lock.json

Lines changed: 35 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: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
"scripts": {
55
"ng": "ng",
66
"start": "ng serve --open --hmr",
7+
"start:elements": "ng serve --project igniteui-angular-elements",
78
"build": "ng build --configuration production",
89
"test": "ng test igniteui-angular",
910
"lint": "ng lint",
@@ -25,6 +26,8 @@
2526
"test:schematics": "ts-node --project projects/igniteui-angular/migrations/tsconfig.json ./node_modules/jasmine/bin/jasmine.js ./projects/igniteui-angular/migrations/**/*.spec.ts ./projects/igniteui-angular/schematics/**/*.spec.ts",
2627
"test:styles": "ts-node --skip-project ./node_modules/jasmine/bin/jasmine.js ./projects/igniteui-angular/src/lib/core/styles/spec/tests.ts",
2728
"test:i18n": "ts-node --skip-project ./projects/igniteui-angular/src/lib/core/i18n/tests/tests.ts",
29+
"test:elements": "ng test igniteui-angular-elements --watch=false --no-progress --code-coverage --source-map=false",
30+
"test:elements:watch": "ng test igniteui-angular-elements",
2831
"build:lib": "ng build igniteui-angular --configuration production && npm run build:styles",
2932
"build:styles": "node scripts/build-styles.mjs",
3033
"build:migrations": "gulp copyMigrations && tsc --listEmittedFiles --project ./projects/igniteui-angular/migrations/tsconfig.json",
@@ -50,6 +53,10 @@
5053
"build:bundletest": "ng build bundle-test --configuration production",
5154
"lint:i18n": "eslint projects/igniteui-angular-i18n/src/**/*.ts",
5255
"test:i18n:dist": "eslint -c projects/igniteui-angular-i18n/.eslintrc.dist.i18n.json dist/igniteui-angular-i18n/**/*.d.ts --no-eslintrc",
56+
"build:elements": "ng build igniteui-angular-elements && npm run pack:elements && gulp copyPackageForElements",
57+
"pack:elements": "node projects/igniteui-angular-elements/esbuild.mjs && node scripts/build-elements-styles.mjs",
58+
"elements:configure": "ts-node -T -H --skip-project --compilerOptions {\\\"moduleResolution\\\":\\\"NodeNext\\\"} ./projects/igniteui-angular-elements/src/analyzer/analyzer.ts",
59+
"test:elements:configure": "ts-node --skip-project ./node_modules/jasmine/bin/jasmine.js --config=projects/igniteui-angular-elements/jasmine.json",
5360
"postinstall": "gulp copyGitHooks",
5461
"cypress:open": "cypress open --config-file=cypress.config.ts",
5562
"cypress:run": "cypress run --config-file=cypress.config.ts",
@@ -61,13 +68,15 @@
6168
"@angular/common": "^18.0.1",
6269
"@angular/compiler": "^18.0.1",
6370
"@angular/core": "^18.0.1",
71+
"@angular/elements": "^18.0.1",
6472
"@angular/forms": "^18.0.1",
6573
"@angular/platform-browser": "^18.0.1",
6674
"@angular/platform-browser-dynamic": "^18.0.1",
6775
"@angular/platform-server": "^18.0.1",
6876
"@angular/router": "^18.0.1",
6977
"@angular/ssr": "^18.0.2",
7078
"@igniteui/material-icons-extended": "^3.0.0",
79+
"@lit-labs/ssr-dom-shim": "^1.2.0",
7180
"@types/source-map": "0.5.2",
7281
"express": "^4.19.2",
7382
"fflate": "^0.8.1",
@@ -128,6 +137,7 @@
128137
"karma-junit-reporter": "^2.0.1",
129138
"karma-parallel": "^0.3.1",
130139
"karma-spec-reporter": "^0.0.36",
140+
"lit-html": "^3.1.2",
131141
"ng-packagr": "^18.0.0",
132142
"postcss": "^8.4.31",
133143
"postcss-scss": "^4.0.6",

0 commit comments

Comments
 (0)