diff --git a/angular.json b/angular.json
index 1e1260de0ee..e71f9111dd3 100644
--- a/angular.json
+++ b/angular.json
@@ -196,7 +196,7 @@
"projects/igniteui-angular/test.css"
],
"assets": [
- "projects/igniteui-angular/src/assets"
+ "projects/igniteui-angular/test-utils/assets"
],
"stylePreprocessorOptions": {
"includePaths": [
diff --git a/package-lock.json b/package-lock.json
index dd1503c72b2..91a2133ab19 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -423,9 +423,9 @@
}
},
"node_modules/@angular-eslint/builder": {
- "version": "20.6.0",
- "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-20.6.0.tgz",
- "integrity": "sha512-bEvQxjnxXiajcPoSnFPRmc9MYLtultZX7Z/psqj6jiGVujgs5UObs91JcmT4QY56ZkdZjETw9RhztLmRTuLB3Q==",
+ "version": "20.7.0",
+ "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-20.7.0.tgz",
+ "integrity": "sha512-qgf4Cfs1z0VsVpzF/OnxDRvBp60OIzeCsp4mzlckWYVniKo19EPIN6kFDol5eTAIOMPgiBQlMIwgQMHgocXEig==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -466,21 +466,21 @@
}
},
"node_modules/@angular-eslint/bundled-angular-compiler": {
- "version": "20.6.0",
- "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-20.6.0.tgz",
- "integrity": "sha512-axeU33lBOcfQ/kcpBc/70vR69PFX9kqgUtroENK0lq6dBeRgi6LJVbBOAHRtR2Xfxd9Lv4YbqWuJ0oQ5BwSTGQ==",
+ "version": "20.7.0",
+ "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-20.7.0.tgz",
+ "integrity": "sha512-9KPz24YoiL0SvTtTX6sd1zmysU5cKOCcmpEiXkCoO3L2oYZGlVxmMT4hfSaHMt8qmfvV2KzQMoR6DZM84BwRzQ==",
"dev": true,
"license": "MIT"
},
"node_modules/@angular-eslint/eslint-plugin": {
- "version": "20.6.0",
- "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-20.6.0.tgz",
- "integrity": "sha512-hvFtluNRjMqlkwxYGMO1RFgJ5N5/InFZZSHIOput+XXVXYwPrNjbyMY29/ndynpvNktcVq1UPpjv5JAucp0GlA==",
+ "version": "20.7.0",
+ "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-20.7.0.tgz",
+ "integrity": "sha512-aHH2YTiaonojsKN+y2z4IMugCwdsH/dYIjYBig6kfoSPyf9rGK4zx+gnNGq/pGRjF3bOYrmFgIviYpQVb80inQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@angular-eslint/bundled-angular-compiler": "20.6.0",
- "@angular-eslint/utils": "20.6.0",
+ "@angular-eslint/bundled-angular-compiler": "20.7.0",
+ "@angular-eslint/utils": "20.7.0",
"ts-api-utils": "^2.1.0"
},
"peerDependencies": {
@@ -490,19 +490,19 @@
}
},
"node_modules/@angular-eslint/eslint-plugin-template": {
- "version": "20.6.0",
- "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-20.6.0.tgz",
- "integrity": "sha512-HoV0QeZFP63vUyD+uBYdqGi95xNJ64Wsb9vG0/auY5sqHsed8tbmFZgNmr8/ho1AHMyQ2HhH7eLIsV2glftyEg==",
+ "version": "20.7.0",
+ "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-20.7.0.tgz",
+ "integrity": "sha512-WFmvW2vBR6ExsSKEaActQTteyw6ikWyuJau9XmWEPFd+2eusEt/+wO21ybjDn3uc5FTp1IcdhfYy+U5OdDjH5w==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@angular-eslint/bundled-angular-compiler": "20.6.0",
- "@angular-eslint/utils": "20.6.0",
+ "@angular-eslint/bundled-angular-compiler": "20.7.0",
+ "@angular-eslint/utils": "20.7.0",
"aria-query": "5.3.2",
"axobject-query": "4.1.0"
},
"peerDependencies": {
- "@angular-eslint/template-parser": "20.6.0",
+ "@angular-eslint/template-parser": "20.7.0",
"@typescript-eslint/types": "^7.11.0 || ^8.0.0",
"@typescript-eslint/utils": "^7.11.0 || ^8.0.0",
"eslint": "^8.57.0 || ^9.0.0",
@@ -510,16 +510,16 @@
}
},
"node_modules/@angular-eslint/schematics": {
- "version": "20.6.0",
- "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-20.6.0.tgz",
- "integrity": "sha512-bZ3FFyfEUqnLkNj4OzU+0LQH4NiHtWbleuoaaTeIXAG9AHZP9H5PPD9loR3CUaLoHvwY22zWBkBOEuBBDkBAtw==",
+ "version": "20.7.0",
+ "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-20.7.0.tgz",
+ "integrity": "sha512-S0onfRipDUIL6gFGTFjiWwUDhi42XYrBoi3kJ3wBbKBeIgYv9SP1ppTKDD4ZoDaDU9cQE8nToX7iPn9ifMw6eQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@angular-devkit/core": ">= 20.0.0 < 21.0.0",
"@angular-devkit/schematics": ">= 20.0.0 < 21.0.0",
- "@angular-eslint/eslint-plugin": "20.6.0",
- "@angular-eslint/eslint-plugin-template": "20.6.0",
+ "@angular-eslint/eslint-plugin": "20.7.0",
+ "@angular-eslint/eslint-plugin-template": "20.7.0",
"ignore": "7.0.5",
"semver": "7.7.3",
"strip-json-comments": "3.1.1"
@@ -688,14 +688,15 @@
}
},
"node_modules/@angular-eslint/template-parser": {
- "version": "20.6.0",
- "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-20.6.0.tgz",
- "integrity": "sha512-dDsABCf8qoFEUmSQa2F0NBZtkxT+I4GQxKcYSpsFZdgv6zrE46lpJSuRgK8OKOq1jqMmbIEXp2h0FeHyJS/qmg==",
+ "version": "20.7.0",
+ "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-20.7.0.tgz",
+ "integrity": "sha512-CVskZnF38IIxVVlKWi1VCz7YH/gHMJu2IY9bD1AVoBBGIe0xA4FRXJkW2Y+EDs9vQqZTkZZljhK5gL65Ro1PeQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
- "@angular-eslint/bundled-angular-compiler": "20.6.0",
- "eslint-scope": "^8.0.2"
+ "@angular-eslint/bundled-angular-compiler": "20.7.0",
+ "eslint-scope": "^9.0.0"
},
"peerDependencies": {
"eslint": "^8.57.0 || ^9.0.0",
@@ -703,13 +704,13 @@
}
},
"node_modules/@angular-eslint/utils": {
- "version": "20.6.0",
- "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-20.6.0.tgz",
- "integrity": "sha512-usjCCjbdtqy4p8I3BMPn6LrXECFLCohBa75h59PK0kV/TEb8OlnIWIWTVtZAMw/MgohtExl69GkSNmL3ElWbUQ==",
+ "version": "20.7.0",
+ "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-20.7.0.tgz",
+ "integrity": "sha512-B6EJHbsk2W/lnS3kS/gm56VGvX735419z/DzgbRDcOvqMGMLwD1ILzv5OTEcL1rzpnB0AHW+IxOu6y/aCzSNUA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@angular-eslint/bundled-angular-compiler": "20.6.0"
+ "@angular-eslint/bundled-angular-compiler": "20.7.0"
},
"peerDependencies": {
"@typescript-eslint/utils": "^7.11.0 || ^8.0.0",
@@ -722,6 +723,7 @@
"resolved": "https://registry.npmjs.org/@angular/animations/-/animations-21.0.0.tgz",
"integrity": "sha512-9AX4HFJmSP8SFNiweKNxasBzn3zbL3xRtwaUxw1I+x/WAzubm4ZziLnXqb+tai7C4UmwV+9XDlRVPfw5WxJ9zg==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"tslib": "^2.3.0"
},
@@ -905,6 +907,7 @@
"resolved": "https://registry.npmjs.org/@angular/common/-/common-21.0.0.tgz",
"integrity": "sha512-uFvQDYU5X5nEnI9C4Bkdxcu4aIzNesGLJzmFlnwChVxB4BxIRF0uHL0oRhdkInGTIzPDJPH4nF6B/22c5gDVqA==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"tslib": "^2.3.0"
},
@@ -921,6 +924,7 @@
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-21.0.0.tgz",
"integrity": "sha512-6jCH3UYga5iokj5F40SR4dlwo9ZRMkT8YzHCTijwZuDX9zvugp9jPof092RvIeNsTvCMVfGWuM9yZ1DRUsU/yg==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"tslib": "^2.3.0"
},
@@ -934,6 +938,7 @@
"integrity": "sha512-KTXp+e2UPGyfFew6Wq95ULpHWQ20dhqkAMZ6x6MCYfOe2ccdnGYsAbLLmnWGmSg5BaOI4B0x/1XCFZf/n6WDgA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@babel/core": "7.28.4",
"@jridgewell/sourcemap-codec": "^1.4.14",
@@ -966,6 +971,7 @@
"resolved": "https://registry.npmjs.org/@angular/core/-/core-21.0.0.tgz",
"integrity": "sha512-bqi8fT4csyITeX8vdN5FJDBWx5wuWzdCg4mKSjHd+onVzZLyZ8bcnuAKz4mklgvjvwuXoRYukmclUurLwfq3Rg==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"tslib": "^2.3.0"
},
@@ -1036,6 +1042,7 @@
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-21.0.0.tgz",
"integrity": "sha512-KQrANla4RBLhcGkwlndqsKzBwVFOWQr1640CfBVjj2oz4M3dW5hyMtXivBACvuwyUhYU/qJbqlDMBXl/OUSudQ==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"tslib": "^2.3.0"
},
@@ -1076,6 +1083,7 @@
"resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-21.0.0.tgz",
"integrity": "sha512-5IcmoftT2hLAbLfSoqGoCg0B1FLSk08xDoUdIyEUo1SmxNJMEEgU6WxhkPf6R7aoOlLAwYBoqGGP1Us1Z7rO7g==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"tslib": "^2.3.0",
"xhr2": "^0.2.0"
@@ -1096,6 +1104,7 @@
"resolved": "https://registry.npmjs.org/@angular/router/-/router-21.0.0.tgz",
"integrity": "sha512-ARx1R2CmTgAezlMkUpV40V4T/IbXhL7dm4SuMVKbuEOsCKZC0TLOSSTsGYY7HKem45JHlJaByv819cJnabFgBg==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"tslib": "^2.3.0"
},
@@ -1114,6 +1123,7 @@
"resolved": "https://registry.npmjs.org/@angular/ssr/-/ssr-21.0.0.tgz",
"integrity": "sha512-lzMzMdsAGy5OB7JsOfKK+SZQdxeOAWDg8sC/XcTUzY/BJu31Lz9kO2nuKmqcgr/aPOrD7Sc0F31u/NxGjeCdTw==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"tslib": "^2.3.0"
},
@@ -1569,6 +1579,7 @@
"integrity": "sha512-eohl3hKTiVyD1ilYdw9T0OiB4hnjef89e3dMYKz+mVKDzj+5IteTseASUsOB+EU9Tf6VNTCjDePcP6wkDGmLKQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@keyv/serialize": "^1.1.1"
}
@@ -1729,6 +1740,7 @@
}
],
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">=18"
},
@@ -1752,6 +1764,7 @@
}
],
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">=18"
}
@@ -3508,6 +3521,7 @@
"integrity": "sha512-X7/+dG9SLpSzRkwgG5/xiIzW0oMrV3C0HOa7YHG1WnrLK+vCQHfte4k/T80059YBdei29RBC3s+pSMvPJDU9/A==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@inquirer/checkbox": "^4.3.0",
"@inquirer/confirm": "^5.1.19",
@@ -4524,16 +4538,16 @@
}
},
"node_modules/@npmcli/fs": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-4.0.0.tgz",
- "integrity": "sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-5.0.0.tgz",
+ "integrity": "sha512-7OsC1gNORBEawOa5+j2pXN9vsicaIOH5cPXxoR6fJOmH6/EXpJB2CajXOu1fPRFun2m1lktEFX11+P89hqO/og==",
"dev": true,
"license": "ISC",
"dependencies": {
"semver": "^7.3.5"
},
"engines": {
- "node": "^18.17.0 || >=20.5.0"
+ "node": "^20.17.0 || >=22.9.0"
}
},
"node_modules/@npmcli/git": {
@@ -4653,14 +4667,14 @@
}
},
"node_modules/@npmcli/package-json": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-7.0.3.tgz",
- "integrity": "sha512-XT8016UrDfnR7yh2XvnIqaPnA5v2QomaWryDYYgKNT0LaX0vcKf4gu2f3CWD/ltV4tOto4MwZynWlynMJL8bBQ==",
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-7.0.4.tgz",
+ "integrity": "sha512-0wInJG3j/K40OJt/33ax47WfWMzZTm6OQxB9cDhTt5huCP2a9g2GnlsxmfN+PulItNPIpPrZ+kfwwUil7eHcZQ==",
"dev": true,
"license": "ISC",
"dependencies": {
"@npmcli/git": "^7.0.0",
- "glob": "^12.0.0",
+ "glob": "^13.0.0",
"hosted-git-info": "^9.0.0",
"json-parse-even-better-errors": "^5.0.0",
"proc-log": "^6.0.0",
@@ -4672,38 +4686,16 @@
}
},
"node_modules/@npmcli/package-json/node_modules/glob": {
- "version": "12.0.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-12.0.0.tgz",
- "integrity": "sha512-5Qcll1z7IKgHr5g485ePDdHcNQY0k2dtv/bjYy0iuyGxQw2qSOiiXUXJ+AYQpg3HNoUMHqAruX478Jeev7UULw==",
+ "version": "13.0.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz",
+ "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==",
"dev": true,
"license": "BlueOak-1.0.0",
"dependencies": {
- "foreground-child": "^3.3.1",
- "jackspeak": "^4.1.1",
"minimatch": "^10.1.1",
"minipass": "^7.1.2",
- "package-json-from-dist": "^1.0.0",
"path-scurry": "^2.0.0"
},
- "bin": {
- "glob": "dist/esm/bin.mjs"
- },
- "engines": {
- "node": "20 || >=22"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/@npmcli/package-json/node_modules/jackspeak": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz",
- "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "dependencies": {
- "@isaacs/cliui": "^8.0.2"
- },
"engines": {
"node": "20 || >=22"
},
@@ -6525,6 +6517,7 @@
"integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"undici-types": "~6.21.0"
}
@@ -6625,17 +6618,17 @@
}
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "8.47.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.47.0.tgz",
- "integrity": "sha512-fe0rz9WJQ5t2iaLfdbDc9T80GJy0AeO453q8C3YCilnGozvOyCG5t+EZtg7j7D88+c3FipfP/x+wzGnh1xp8ZA==",
+ "version": "8.48.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.48.0.tgz",
+ "integrity": "sha512-XxXP5tL1txl13YFtrECECQYeZjBZad4fyd3cFV4a19LkAY/bIp9fev3US4S5fDVV2JaYFiKAZ/GRTOLer+mbyQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/regexpp": "^4.10.0",
- "@typescript-eslint/scope-manager": "8.47.0",
- "@typescript-eslint/type-utils": "8.47.0",
- "@typescript-eslint/utils": "8.47.0",
- "@typescript-eslint/visitor-keys": "8.47.0",
+ "@typescript-eslint/scope-manager": "8.48.0",
+ "@typescript-eslint/type-utils": "8.48.0",
+ "@typescript-eslint/utils": "8.48.0",
+ "@typescript-eslint/visitor-keys": "8.48.0",
"graphemer": "^1.4.0",
"ignore": "^7.0.0",
"natural-compare": "^1.4.0",
@@ -6649,22 +6642,23 @@
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "@typescript-eslint/parser": "^8.47.0",
+ "@typescript-eslint/parser": "^8.48.0",
"eslint": "^8.57.0 || ^9.0.0",
"typescript": ">=4.8.4 <6.0.0"
}
},
"node_modules/@typescript-eslint/parser": {
- "version": "8.47.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.47.0.tgz",
- "integrity": "sha512-lJi3PfxVmo0AkEY93ecfN+r8SofEqZNGByvHAI3GBLrvt1Cw6H5k1IM02nSzu0RfUafr2EvFSw0wAsZgubNplQ==",
+ "version": "8.48.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.48.0.tgz",
+ "integrity": "sha512-jCzKdm/QK0Kg4V4IK/oMlRZlY+QOcdjv89U2NgKHZk1CYTj82/RVSx1mV/0gqCVMJ/DA+Zf/S4NBWNF8GQ+eqQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
- "@typescript-eslint/scope-manager": "8.47.0",
- "@typescript-eslint/types": "8.47.0",
- "@typescript-eslint/typescript-estree": "8.47.0",
- "@typescript-eslint/visitor-keys": "8.47.0",
+ "@typescript-eslint/scope-manager": "8.48.0",
+ "@typescript-eslint/types": "8.48.0",
+ "@typescript-eslint/typescript-estree": "8.48.0",
+ "@typescript-eslint/visitor-keys": "8.48.0",
"debug": "^4.3.4"
},
"engines": {
@@ -6680,14 +6674,14 @@
}
},
"node_modules/@typescript-eslint/project-service": {
- "version": "8.47.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.47.0.tgz",
- "integrity": "sha512-2X4BX8hUeB5JcA1TQJ7GjcgulXQ+5UkNb0DL8gHsHUHdFoiCTJoYLTpib3LtSDPZsRET5ygN4qqIWrHyYIKERA==",
+ "version": "8.48.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.48.0.tgz",
+ "integrity": "sha512-Ne4CTZyRh1BecBf84siv42wv5vQvVmgtk8AuiEffKTUo3DrBaGYZueJSxxBZ8fjk/N3DrgChH4TOdIOwOwiqqw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/tsconfig-utils": "^8.47.0",
- "@typescript-eslint/types": "^8.47.0",
+ "@typescript-eslint/tsconfig-utils": "^8.48.0",
+ "@typescript-eslint/types": "^8.48.0",
"debug": "^4.3.4"
},
"engines": {
@@ -6702,14 +6696,14 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
- "version": "8.47.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.47.0.tgz",
- "integrity": "sha512-a0TTJk4HXMkfpFkL9/WaGTNuv7JWfFTQFJd6zS9dVAjKsojmv9HT55xzbEpnZoY+VUb+YXLMp+ihMLz/UlZfDg==",
+ "version": "8.48.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.48.0.tgz",
+ "integrity": "sha512-uGSSsbrtJrLduti0Q1Q9+BF1/iFKaxGoQwjWOIVNJv0o6omrdyR8ct37m4xIl5Zzpkp69Kkmvom7QFTtue89YQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.47.0",
- "@typescript-eslint/visitor-keys": "8.47.0"
+ "@typescript-eslint/types": "8.48.0",
+ "@typescript-eslint/visitor-keys": "8.48.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -6720,9 +6714,9 @@
}
},
"node_modules/@typescript-eslint/tsconfig-utils": {
- "version": "8.47.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.47.0.tgz",
- "integrity": "sha512-ybUAvjy4ZCL11uryalkKxuT3w3sXJAuWhOoGS3T/Wu+iUu1tGJmk5ytSY8gbdACNARmcYEB0COksD2j6hfGK2g==",
+ "version": "8.48.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.48.0.tgz",
+ "integrity": "sha512-WNebjBdFdyu10sR1M4OXTt2OkMd5KWIL+LLfeH9KhgP+jzfDV/LI3eXzwJ1s9+Yc0Kzo2fQCdY/OpdusCMmh6w==",
"dev": true,
"license": "MIT",
"engines": {
@@ -6737,15 +6731,15 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
- "version": "8.47.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.47.0.tgz",
- "integrity": "sha512-QC9RiCmZ2HmIdCEvhd1aJELBlD93ErziOXXlHEZyuBo3tBiAZieya0HLIxp+DoDWlsQqDawyKuNEhORyku+P8A==",
+ "version": "8.48.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.48.0.tgz",
+ "integrity": "sha512-zbeVaVqeXhhab6QNEKfK96Xyc7UQuoFWERhEnj3mLVnUWrQnv15cJNseUni7f3g557gm0e46LZ6IJ4NJVOgOpw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.47.0",
- "@typescript-eslint/typescript-estree": "8.47.0",
- "@typescript-eslint/utils": "8.47.0",
+ "@typescript-eslint/types": "8.48.0",
+ "@typescript-eslint/typescript-estree": "8.48.0",
+ "@typescript-eslint/utils": "8.48.0",
"debug": "^4.3.4",
"ts-api-utils": "^2.1.0"
},
@@ -6762,11 +6756,12 @@
}
},
"node_modules/@typescript-eslint/types": {
- "version": "8.47.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.47.0.tgz",
- "integrity": "sha512-nHAE6bMKsizhA2uuYZbEbmp5z2UpffNrPEqiKIeN7VsV6UY/roxanWfoRrf6x/k9+Obf+GQdkm0nPU+vnMXo9A==",
+ "version": "8.48.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.48.0.tgz",
+ "integrity": "sha512-cQMcGQQH7kwKoVswD1xdOytxQR60MWKM1di26xSUtxehaDs/32Zpqsu5WJlXTtTTqyAVK8R7hvsUnIXRS+bjvA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
@@ -6776,21 +6771,20 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "8.47.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.47.0.tgz",
- "integrity": "sha512-k6ti9UepJf5NpzCjH31hQNLHQWupTRPhZ+KFF8WtTuTpy7uHPfeg2NM7cP27aCGajoEplxJDFVCEm9TGPYyiVg==",
+ "version": "8.48.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.48.0.tgz",
+ "integrity": "sha512-ljHab1CSO4rGrQIAyizUS6UGHHCiAYhbfcIZ1zVJr5nMryxlXMVWS3duFPSKvSUbFPwkXMFk1k0EMIjub4sRRQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/project-service": "8.47.0",
- "@typescript-eslint/tsconfig-utils": "8.47.0",
- "@typescript-eslint/types": "8.47.0",
- "@typescript-eslint/visitor-keys": "8.47.0",
+ "@typescript-eslint/project-service": "8.48.0",
+ "@typescript-eslint/tsconfig-utils": "8.48.0",
+ "@typescript-eslint/types": "8.48.0",
+ "@typescript-eslint/visitor-keys": "8.48.0",
"debug": "^4.3.4",
- "fast-glob": "^3.3.2",
- "is-glob": "^4.0.3",
"minimatch": "^9.0.4",
"semver": "^7.6.0",
+ "tinyglobby": "^0.2.15",
"ts-api-utils": "^2.1.0"
},
"engines": {
@@ -6805,16 +6799,17 @@
}
},
"node_modules/@typescript-eslint/utils": {
- "version": "8.47.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.47.0.tgz",
- "integrity": "sha512-g7XrNf25iL4TJOiPqatNuaChyqt49a/onq5YsJ9+hXeugK+41LVg7AxikMfM02PC6jbNtZLCJj6AUcQXJS/jGQ==",
+ "version": "8.48.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.48.0.tgz",
+ "integrity": "sha512-yTJO1XuGxCsSfIVt1+1UrLHtue8xz16V8apzPYI06W0HbEbEWHxHXgZaAgavIkoh+GeV6hKKd5jm0sS6OYxWXQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.7.0",
- "@typescript-eslint/scope-manager": "8.47.0",
- "@typescript-eslint/types": "8.47.0",
- "@typescript-eslint/typescript-estree": "8.47.0"
+ "@typescript-eslint/scope-manager": "8.48.0",
+ "@typescript-eslint/types": "8.48.0",
+ "@typescript-eslint/typescript-estree": "8.48.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -6829,13 +6824,13 @@
}
},
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "8.47.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.47.0.tgz",
- "integrity": "sha512-SIV3/6eftCy1bNzCQoPmbWsRLujS8t5iDIZ4spZOBHqrM+yfX2ogg8Tt3PDTAVKw3sSCiUgg30uOAvK2r9zGjQ==",
+ "version": "8.48.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.48.0.tgz",
+ "integrity": "sha512-T0XJMaRPOH3+LBbAfzR2jalckP1MSG/L9eUtY0DEzUyVaXJ/t6zN0nR7co5kz0Jko/nkSYCBRkz1djvjajVTTg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.47.0",
+ "@typescript-eslint/types": "8.48.0",
"eslint-visitor-keys": "^4.2.1"
},
"engines": {
@@ -6932,6 +6927,7 @@
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -7362,11 +7358,12 @@
}
},
"node_modules/astro": {
- "version": "5.15.9",
- "resolved": "https://registry.npmjs.org/astro/-/astro-5.15.9.tgz",
- "integrity": "sha512-XLDXxu0282cC/oYHswWZm3johGlRvk9rLRS7pWVWSne+HsZe9JgrpHI+vewAJSSNHBGd1aCyaQOElT5RNGe7IQ==",
+ "version": "5.16.0",
+ "resolved": "https://registry.npmjs.org/astro/-/astro-5.16.0.tgz",
+ "integrity": "sha512-GaDRs2Mngpw3dr2vc085GnORh98NiXxwIjg/EoQQQl/icZt3Z7s0BRsYHDZ8swkZbOA6wZsqWJdrNirl+iKcDg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@astrojs/compiler": "^2.13.0",
"@astrojs/internal-helpers": "0.7.5",
@@ -7407,13 +7404,14 @@
"p-limit": "^6.2.0",
"p-queue": "^8.1.1",
"package-manager-detector": "^1.5.0",
- "picocolors": "^1.1.1",
+ "piccolore": "^0.1.3",
"picomatch": "^4.0.3",
"prompts": "^2.4.2",
"rehype": "^13.0.2",
"semver": "^7.7.3",
"shiki": "^3.15.0",
"smol-toml": "^1.5.0",
+ "svgo": "^4.0.0",
"tinyexec": "^1.0.2",
"tinyglobby": "^0.2.15",
"tsconfck": "^3.1.6",
@@ -8367,9 +8365,9 @@
}
},
"node_modules/baseline-browser-mapping": {
- "version": "2.8.29",
- "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.29.tgz",
- "integrity": "sha512-sXdt2elaVnhpDNRDz+1BDx1JQoJRuNk7oVlAlbGiFkLikHCAQiccexF/9e91zVi6RCgqspl04aP+6Cnl9zRLrA==",
+ "version": "2.8.31",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.31.tgz",
+ "integrity": "sha512-a28v2eWrrRWPpJSzxc+mKwm0ZtVx/G8SepdQZDArnXYU/XS+IF6mp8aB/4E+hH1tyGCoDo3KlUCdlSxGDsRkAw==",
"dev": true,
"license": "Apache-2.0",
"bin": {
@@ -8443,35 +8441,27 @@
}
},
"node_modules/body-parser": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz",
- "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==",
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.1.tgz",
+ "integrity": "sha512-nfDwkulwiZYQIGwxdy0RUmowMhKcFVcYXUU7m4QlKYim1rUtg83xm2yjZ40QjDuc291AJjjeSc9b++AWHSgSHw==",
"license": "MIT",
"dependencies": {
"bytes": "^3.1.2",
"content-type": "^1.0.5",
- "debug": "^4.4.0",
+ "debug": "^4.4.3",
"http-errors": "^2.0.0",
- "iconv-lite": "^0.6.3",
+ "iconv-lite": "^0.7.0",
"on-finished": "^2.4.1",
"qs": "^6.14.0",
- "raw-body": "^3.0.0",
- "type-is": "^2.0.0"
+ "raw-body": "^3.0.1",
+ "type-is": "^2.0.1"
},
"engines": {
"node": ">=18"
- }
- },
- "node_modules/body-parser/node_modules/iconv-lite": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
- "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
- "license": "MIT",
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3.0.0"
},
- "engines": {
- "node": ">=0.10.0"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
"node_modules/boolbase": {
@@ -8626,6 +8616,7 @@
}
],
"license": "MIT",
+ "peer": true,
"dependencies": {
"baseline-browser-mapping": "^2.8.25",
"caniuse-lite": "^1.0.30001754",
@@ -8712,15 +8703,15 @@
}
},
"node_modules/cacache": {
- "version": "20.0.2",
- "resolved": "https://registry.npmjs.org/cacache/-/cacache-20.0.2.tgz",
- "integrity": "sha512-rVWvqtWcgSzB22wImrVto+7PmE+lUqv5dYzRHD0QJsfpSwTkW+GIqA4ykSt/CCjQlQle8USn8CO8vcWNrIqktg==",
+ "version": "20.0.3",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-20.0.3.tgz",
+ "integrity": "sha512-3pUp4e8hv07k1QlijZu6Kn7c9+ZpWWk4j3F8N3xPuCExULobqJydKYOTj1FTq58srkJsXvO7LbGAH4C0ZU3WGw==",
"dev": true,
"license": "ISC",
"dependencies": {
- "@npmcli/fs": "^4.0.0",
+ "@npmcli/fs": "^5.0.0",
"fs-minipass": "^3.0.0",
- "glob": "^11.0.3",
+ "glob": "^13.0.0",
"lru-cache": "^11.1.0",
"minipass": "^7.0.3",
"minipass-collect": "^2.0.1",
@@ -8728,45 +8719,23 @@
"minipass-pipeline": "^1.2.4",
"p-map": "^7.0.2",
"ssri": "^13.0.0",
- "unique-filename": "^4.0.0"
+ "unique-filename": "^5.0.0"
},
"engines": {
"node": "^20.17.0 || >=22.9.0"
}
},
"node_modules/cacache/node_modules/glob": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz",
- "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==",
+ "version": "13.0.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz",
+ "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==",
"dev": true,
"license": "BlueOak-1.0.0",
"dependencies": {
- "foreground-child": "^3.3.1",
- "jackspeak": "^4.1.1",
"minimatch": "^10.1.1",
"minipass": "^7.1.2",
- "package-json-from-dist": "^1.0.0",
"path-scurry": "^2.0.0"
},
- "bin": {
- "glob": "dist/esm/bin.mjs"
- },
- "engines": {
- "node": "20 || >=22"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/cacache/node_modules/jackspeak": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz",
- "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "dependencies": {
- "@isaacs/cliui": "^8.0.2"
- },
"engines": {
"node": "20 || >=22"
},
@@ -8996,9 +8965,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001756",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001756.tgz",
- "integrity": "sha512-4HnCNKbMLkLdhJz3TToeVWHSnfJvPaq6vu/eRP0Ahub/07n484XHhBF5AJoSGHdVrS8tKFauUQz8Bp9P7LVx7A==",
+ "version": "1.0.30001757",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001757.tgz",
+ "integrity": "sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==",
"dev": true,
"funding": [
{
@@ -9128,6 +9097,7 @@
"integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"readdirp": "^4.0.1"
},
@@ -10021,6 +9991,42 @@
"node": ">=4"
}
},
+ "node_modules/csso": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz",
+ "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "css-tree": "~2.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0",
+ "npm": ">=7.0.0"
+ }
+ },
+ "node_modules/csso/node_modules/css-tree": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz",
+ "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mdn-data": "2.0.28",
+ "source-map-js": "^1.0.1"
+ },
+ "engines": {
+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0",
+ "npm": ">=7.0.0"
+ }
+ },
+ "node_modules/csso/node_modules/mdn-data": {
+ "version": "2.0.28",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz",
+ "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==",
+ "dev": true,
+ "license": "CC0-1.0"
+ },
"node_modules/cssstyle": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz",
@@ -10430,7 +10436,8 @@
"resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1521046.tgz",
"integrity": "sha512-vhE6eymDQSKWUXwwA37NtTTVEzjtGVfDr3pRbsWEQ5onH/Snp2c+2xZHWJJawG/0hCCJLRGt4xVtEVUVILol4w==",
"dev": true,
- "license": "BSD-3-Clause"
+ "license": "BSD-3-Clause",
+ "peer": true
},
"node_modules/dfa": {
"version": "1.2.0",
@@ -10742,9 +10749,9 @@
"license": "MIT"
},
"node_modules/electron-to-chromium": {
- "version": "1.5.258",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.258.tgz",
- "integrity": "sha512-rHUggNV5jKQ0sSdWwlaRDkFc3/rRJIVnOSe9yR4zrR07m3ZxhP4N27Hlg8VeJGGYgFTxK5NqDmWI4DSH72vIJg==",
+ "version": "1.5.260",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.260.tgz",
+ "integrity": "sha512-ov8rBoOBhVawpzdre+Cmz4FB+y66Eqrk6Gwqd8NGxuhv99GQ8XqMAr351KEkOt7gukXWDg6gJWEMKgL2RLMPtA==",
"dev": true,
"license": "ISC"
},
@@ -11253,6 +11260,7 @@
"integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.8.0",
"@eslint-community/regexpp": "^4.12.1",
@@ -11308,9 +11316,9 @@
}
},
"node_modules/eslint-scope": {
- "version": "8.4.0",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz",
- "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==",
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.0.0.tgz",
+ "integrity": "sha512-+Yh0LeQKq+mW/tQArNj67tljR3L1HajDTQPuZOEwC00oBdoIDQrr89yBgjAlzAwRrY/5zDkM3v99iGHwz9y0dw==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
@@ -11318,7 +11326,7 @@
"estraverse": "^5.2.0"
},
"engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ "node": "^20.19.0 || ^22.13.0 || >=24"
},
"funding": {
"url": "https://opencollective.com/eslint"
@@ -11365,6 +11373,23 @@
"concat-map": "0.0.1"
}
},
+ "node_modules/eslint/node_modules/eslint-scope": {
+ "version": "8.4.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz",
+ "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
"node_modules/eslint/node_modules/eslint-visitor-keys": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
@@ -11590,6 +11615,7 @@
"resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz",
"integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"accepts": "^2.0.0",
"body-parser": "^2.2.0",
@@ -14082,28 +14108,23 @@
"license": "BSD-2-Clause"
},
"node_modules/http-errors": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
- "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
+ "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==",
"license": "MIT",
"dependencies": {
- "depd": "2.0.0",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "toidentifier": "1.0.1"
+ "depd": "~2.0.0",
+ "inherits": "~2.0.4",
+ "setprototypeof": "~1.2.0",
+ "statuses": "~2.0.2",
+ "toidentifier": "~1.0.1"
},
"engines": {
"node": ">= 0.8"
- }
- },
- "node_modules/http-errors/node_modules/statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
"node_modules/http-proxy": {
@@ -15419,6 +15440,7 @@
"integrity": "sha512-LrtUxbdvt1gOpo3gxG+VAJlJAEMhbWlM4YrFQgql98FwF7+K8K12LYO4hnDdUkNjeztYrOXEMqgTajSWgmtI/w==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@colors/colors": "1.5.0",
"body-parser": "^1.19.0",
@@ -15742,6 +15764,23 @@
"node": ">= 6"
}
},
+ "node_modules/karma/node_modules/http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/karma/node_modules/iconv-lite": {
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
@@ -15876,6 +15915,16 @@
"node": ">=0.10.0"
}
},
+ "node_modules/karma/node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/karma/node_modules/strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
@@ -16072,6 +16121,7 @@
"integrity": "sha512-j1n1IuTX1VQjIy3tT7cyGbX7nvQOsFLoIqobZv4ttI5axP923gA44zUj6miiA6R5Aoms4sEGVIIcucXUbRI14g==",
"dev": true,
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
"copy-anything": "^2.0.1",
"parse-node-version": "^1.0.1",
@@ -17131,9 +17181,9 @@
}
},
"node_modules/mdast-util-to-hast": {
- "version": "13.2.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz",
- "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==",
+ "version": "13.2.1",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz",
+ "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -17894,15 +17944,19 @@
}
},
"node_modules/mime-types": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz",
- "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz",
+ "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==",
"license": "MIT",
"dependencies": {
"mime-db": "^1.54.0"
},
"engines": {
- "node": ">= 0.6"
+ "node": ">=18"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
"node_modules/mimic-function": {
@@ -18318,6 +18372,7 @@
"integrity": "sha512-2lMGkmS91FyP+p/Tzmu49hY+p1PDgHBNM+Fce8yrzZo8/EbybNPBYfJnwFfl0lwGmqpYLevH2oh12+ikKCLv9g==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@ampproject/remapping": "^2.3.0",
"@rollup/plugin-json": "^6.1.0",
@@ -19422,9 +19477,9 @@
"license": "MIT"
},
"node_modules/oniguruma-to-es": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.3.tgz",
- "integrity": "sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==",
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.4.tgz",
+ "integrity": "sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -20147,6 +20202,13 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/piccolore": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/piccolore/-/piccolore-0.1.3.tgz",
+ "integrity": "sha512-o8bTeDWjE086iwKrROaDf31K0qC/BENdm15/uH9usSC/uZjJOKb2YGiVHfLY4GhwsERiPI1jmwI2XrA7ACOxVw==",
+ "dev": true,
+ "license": "ISC"
+ },
"node_modules/picocolors": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
@@ -20192,9 +20254,9 @@
}
},
"node_modules/pkce-challenge": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.0.tgz",
- "integrity": "sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.1.tgz",
+ "integrity": "sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -20267,6 +20329,7 @@
}
],
"license": "MIT",
+ "peer": true,
"dependencies": {
"nanoid": "^3.3.11",
"picocolors": "^1.1.1",
@@ -20417,6 +20480,7 @@
"integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"bin": {
"prettier": "bin/prettier.cjs"
},
@@ -20690,9 +20754,9 @@
}
},
"node_modules/puppeteer": {
- "version": "24.30.0",
- "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.30.0.tgz",
- "integrity": "sha512-A5OtCi9WpiXBQgJ2vQiZHSyrAzQmO/WDsvghqlN4kgw21PhxA5knHUaUQq/N3EMt8CcvSS0RM+kmYLJmedR3TQ==",
+ "version": "24.31.0",
+ "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.31.0.tgz",
+ "integrity": "sha512-q8y5yLxLD8xdZdzNWqdOL43NbfvUOp60SYhaLZQwHC9CdKldxQKXOyJAciOr7oUJfyAH/KgB2wKvqT2sFKoVXA==",
"dev": true,
"hasInstallScript": true,
"license": "Apache-2.0",
@@ -20701,7 +20765,7 @@
"chromium-bidi": "11.0.0",
"cosmiconfig": "^9.0.0",
"devtools-protocol": "0.0.1521046",
- "puppeteer-core": "24.30.0",
+ "puppeteer-core": "24.31.0",
"typed-query-selector": "^2.12.0"
},
"bin": {
@@ -20712,9 +20776,9 @@
}
},
"node_modules/puppeteer-core": {
- "version": "24.30.0",
- "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.30.0.tgz",
- "integrity": "sha512-2S3Smy0t0W4wJnNvDe7W0bE7wDmZjfZ3ljfMgJd6hn2Hq/f0jgN+x9PULZo2U3fu5UUIJ+JP8cNUGllu8P91Pg==",
+ "version": "24.31.0",
+ "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.31.0.tgz",
+ "integrity": "sha512-pnAohhSZipWQoFpXuGV7xCZfaGhqcBR9C4pVrU0QSrcMi7tQMH9J9lDBqBvyMAHQqe8HCARuREqFuVKRQOgTvg==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
@@ -20723,7 +20787,7 @@
"debug": "^4.4.3",
"devtools-protocol": "0.0.1521046",
"typed-query-selector": "^2.12.0",
- "webdriver-bidi-protocol": "0.3.8",
+ "webdriver-bidi-protocol": "0.3.9",
"ws": "^8.18.3"
},
"engines": {
@@ -20847,15 +20911,15 @@
}
},
"node_modules/raw-body": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.1.tgz",
- "integrity": "sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz",
+ "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==",
"license": "MIT",
"dependencies": {
- "bytes": "3.1.2",
- "http-errors": "2.0.0",
- "iconv-lite": "0.7.0",
- "unpipe": "1.0.0"
+ "bytes": "~3.1.2",
+ "http-errors": "~2.0.1",
+ "iconv-lite": "~0.7.0",
+ "unpipe": "~1.0.0"
},
"engines": {
"node": ">= 0.10"
@@ -21551,6 +21615,7 @@
"integrity": "sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@types/estree": "1.0.8"
},
@@ -21662,6 +21727,7 @@
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz",
"integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
"tslib": "^2.1.0"
}
@@ -21916,6 +21982,7 @@
"integrity": "sha512-+VUy01yfDqNmIVMd/LLKl2TTtY0ovZN0rTonh+FhKr65mFwIYgU9WzgIZKS7U9/SPCQvWTsTGx9jyt+qRm/XFw==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@bufbuild/protobuf": "^2.5.0",
"buffer-builder": "^0.2.0",
@@ -22517,7 +22584,6 @@
"dev": true,
"license": "ISC",
"optional": true,
- "peer": true,
"dependencies": {
"is-glob": "^4.0.1"
},
@@ -22568,7 +22634,6 @@
"dev": true,
"license": "MIT",
"optional": true,
- "peer": true,
"engines": {
"node": ">=8.6"
},
@@ -22583,7 +22648,6 @@
"dev": true,
"license": "MIT",
"optional": true,
- "peer": true,
"dependencies": {
"picomatch": "^2.2.1"
},
@@ -23164,8 +23228,7 @@
"resolved": "https://registry.npmjs.org/sax/-/sax-1.4.3.tgz",
"integrity": "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==",
"dev": true,
- "license": "BlueOak-1.0.0",
- "optional": true
+ "license": "BlueOak-1.0.0"
},
"node_modules/saxes": {
"version": "6.0.0",
@@ -24204,9 +24267,9 @@
}
},
"node_modules/stylelint": {
- "version": "16.25.0",
- "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.25.0.tgz",
- "integrity": "sha512-Li0avYWV4nfv1zPbdnxLYBGq4z8DVZxbRgx4Kn6V+Uftz1rMoF1qiEI3oL4kgWqyYgCgs7gT5maHNZ82Gk03vQ==",
+ "version": "16.26.0",
+ "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.26.0.tgz",
+ "integrity": "sha512-Y/3AVBefrkqqapVYH3LBF5TSDZ1kw+0XpdKN2KchfuhMK6lQ85S4XOG4lIZLcrcS4PWBmvcY6eS2kCQFz0jukQ==",
"dev": true,
"funding": [
{
@@ -24219,6 +24282,7 @@
}
],
"license": "MIT",
+ "peer": true,
"dependencies": {
"@csstools/css-parser-algorithms": "^3.0.5",
"@csstools/css-tokenizer": "^3.0.4",
@@ -24233,7 +24297,7 @@
"debug": "^4.4.3",
"fast-glob": "^3.3.3",
"fastest-levenshtein": "^1.0.16",
- "file-entry-cache": "^10.1.4",
+ "file-entry-cache": "^11.1.0",
"global-modules": "^2.0.0",
"globby": "^11.1.0",
"globjoin": "^0.1.4",
@@ -24461,13 +24525,13 @@
"license": "MIT"
},
"node_modules/stylelint/node_modules/file-entry-cache": {
- "version": "10.1.4",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-10.1.4.tgz",
- "integrity": "sha512-5XRUFc0WTtUbjfGzEwXc42tiGxQHBmtbUG1h9L2apu4SulCGN3Hqm//9D6FAolf8MYNL7f/YlJl9vy08pj5JuA==",
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-11.1.1.tgz",
+ "integrity": "sha512-TPVFSDE7q91Dlk1xpFLvFllf8r0HyOMOlnWy7Z2HBku5H3KhIeOGInexrIeg2D64DosVB/JXkrrk6N/7Wriq4A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "flat-cache": "^6.1.13"
+ "flat-cache": "^6.1.19"
}
},
"node_modules/stylelint/node_modules/flat-cache": {
@@ -24564,6 +24628,7 @@
"integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
@@ -24665,6 +24730,72 @@
"integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==",
"dev": true
},
+ "node_modules/svgo": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/svgo/-/svgo-4.0.0.tgz",
+ "integrity": "sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "commander": "^11.1.0",
+ "css-select": "^5.1.0",
+ "css-tree": "^3.0.1",
+ "css-what": "^6.1.0",
+ "csso": "^5.0.5",
+ "picocolors": "^1.1.1",
+ "sax": "^1.4.1"
+ },
+ "bin": {
+ "svgo": "bin/svgo.js"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/svgo"
+ }
+ },
+ "node_modules/svgo/node_modules/commander": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz",
+ "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/svgo/node_modules/css-select": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz",
+ "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.1.0",
+ "domhandler": "^5.0.2",
+ "domutils": "^3.0.1",
+ "nth-check": "^2.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/svgo/node_modules/css-what": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz",
+ "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
"node_modules/symbol-tree": {
"version": "3.2.4",
"resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
@@ -25221,7 +25352,8 @@
"version": "2.8.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
- "license": "0BSD"
+ "license": "0BSD",
+ "peer": true
},
"node_modules/tuf-js": {
"version": "4.0.0",
@@ -25308,6 +25440,7 @@
"integrity": "sha512-ftJYPvpVfQvFzpkoSfHLkJybdA/geDJ8BGQt/ZnkkhnBYoYW6lBgPQXu6vqLxO4X75dA55hX8Af847H5KXlEFA==",
"dev": true,
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
"@gerrit0/mini-shiki": "^3.12.0",
"lunr": "^2.3.9",
@@ -25342,6 +25475,7 @@
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
"dev": true,
"license": "Apache-2.0",
+ "peer": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -25536,29 +25670,29 @@
}
},
"node_modules/unique-filename": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-4.0.0.tgz",
- "integrity": "sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-5.0.0.tgz",
+ "integrity": "sha512-2RaJTAvAb4owyjllTfXzFClJ7WsGxlykkPvCr9pA//LD9goVq+m4PPAeBgNodGZ7nSrntT/auWpJ6Y5IFXcfjg==",
"dev": true,
"license": "ISC",
"dependencies": {
- "unique-slug": "^5.0.0"
+ "unique-slug": "^6.0.0"
},
"engines": {
- "node": "^18.17.0 || >=20.5.0"
+ "node": "^20.17.0 || >=22.9.0"
}
},
"node_modules/unique-slug": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-5.0.0.tgz",
- "integrity": "sha512-9OdaqO5kwqR+1kVgHAhsp5vPNU0hnxRa26rBFNfNgM7M6pNtgzeBn3s/xbyCQL3dcjzOatcef6UUHpB/6MaETg==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-6.0.0.tgz",
+ "integrity": "sha512-4Lup7Ezn8W3d52/xBhZBVdx323ckxa7DEvd9kPQHppTkLoJXw6ltrBCyj5pnrxj0qKDxYMJ56CoxNuFCscdTiw==",
"dev": true,
"license": "ISC",
"dependencies": {
"imurmurhash": "^0.1.4"
},
"engines": {
- "node": "^18.17.0 || >=20.5.0"
+ "node": "^20.17.0 || >=22.9.0"
}
},
"node_modules/unique-stream": {
@@ -25737,9 +25871,9 @@
}
},
"node_modules/unstorage": {
- "version": "1.17.2",
- "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.2.tgz",
- "integrity": "sha512-cKEsD6iBWJgOMJ6vW1ID/SYuqNf8oN4yqRk8OYqaVQ3nnkJXOT1PSpaMh2QfzLs78UN5kSNRD2c/mgjT8tX7+w==",
+ "version": "1.17.3",
+ "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.3.tgz",
+ "integrity": "sha512-i+JYyy0DoKmQ3FximTHbGadmIYb8JEpq7lxUjnjeB702bCPum0vzo6oy5Mfu0lpqISw7hCyMW2yj4nWC8bqJ3Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -25749,7 +25883,7 @@
"h3": "^1.15.4",
"lru-cache": "^10.4.3",
"node-fetch-native": "^1.6.7",
- "ofetch": "^1.5.0",
+ "ofetch": "^1.5.1",
"ufo": "^1.6.1"
},
"peerDependencies": {
@@ -26451,6 +26585,7 @@
"integrity": "sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"esbuild": "^0.25.0",
"fdir": "^6.5.0",
@@ -27081,9 +27216,9 @@
}
},
"node_modules/webdriver-bidi-protocol": {
- "version": "0.3.8",
- "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.3.8.tgz",
- "integrity": "sha512-21Yi2GhGntMc671vNBCjiAeEVknXjVRoyu+k+9xOMShu+ZQfpGQwnBqbNz/Sv4GXZ6JmutlPAi2nIJcrymAWuQ==",
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.3.9.tgz",
+ "integrity": "sha512-uIYvlRQ0PwtZR1EzHlTMol1G0lAlmOe6wPykF9a77AK3bkpvZHzIVxRE2ThOx5vjy2zISe0zhwf5rzuUfbo1PQ==",
"dev": true,
"license": "Apache-2.0"
},
@@ -27439,6 +27574,7 @@
"integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==",
"dev": true,
"license": "ISC",
+ "peer": true,
"bin": {
"yaml": "bin.mjs"
},
@@ -27591,6 +27727,7 @@
"integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
@@ -27619,7 +27756,8 @@
"version": "0.15.1",
"resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.15.1.tgz",
"integrity": "sha512-XE96n56IQpJM7NAoXswY3XRLcWFW83xe0BiAOeMD7K5k5xecOeul3Qcpx6GqEeeHNkW5DWL5zOyTbEfB4eti8w==",
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
},
"node_modules/zwitch": {
"version": "2.0.4",
diff --git a/projects/igniteui-angular/accordion/src/accordion/public_api.ts b/projects/igniteui-angular/accordion/src/accordion/public_api.ts
index ac11e0d4286..4f380b900ab 100644
--- a/projects/igniteui-angular/accordion/src/accordion/public_api.ts
+++ b/projects/igniteui-angular/accordion/src/accordion/public_api.ts
@@ -5,7 +5,7 @@ export * from './accordion.component';
/* Imports that cannot be resolved from IGX_EXPANSION_PANEL_DIRECTIVES spread
NOTE: Do not remove! Issue: https://github.com/IgniteUI/igniteui-angular/issues/13310
*/
- import {
+import {
IgxExpansionPanelComponent,
IgxExpansionPanelHeaderComponent,
IgxExpansionPanelBodyComponent,
diff --git a/projects/igniteui-angular/carousel/src/carousel/carousel.component.ts b/projects/igniteui-angular/carousel/src/carousel/carousel.component.ts
index b5d8c2e6e7d..75eef06bb79 100644
--- a/projects/igniteui-angular/carousel/src/carousel/carousel.component.ts
+++ b/projects/igniteui-angular/carousel/src/carousel/carousel.component.ts
@@ -27,7 +27,7 @@ import {
import { HammerGestureConfig, HAMMER_GESTURE_CONFIG } from '@angular/platform-browser';
import { merge, Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
-import { CarouselResourceStringsEN, ICarouselResourceStrings } from 'igniteui-angular/core';
+import { CarouselResourceStringsEN, ICarouselResourceStrings, ɵIgxDirectionality } from 'igniteui-angular/core';
import { first, IBaseEventArgs, last, PlatformUtil } from 'igniteui-angular/core';
import { IgxAngularAnimationService } from 'igniteui-angular/core';
import { AnimationService } from 'igniteui-angular/core';
@@ -39,7 +39,6 @@ import { IgxButtonDirective } from 'igniteui-angular/directives';
import { getCurrentResourceStrings } from 'igniteui-angular/core';
import { HammerGesturesManager } from 'igniteui-angular/core';
import { CarouselAnimationType, CarouselIndicatorsOrientation } from './enums';
-import { ɵIgxDirectionality } from 'igniteui-angular/core';
let NEXT_ID = 0;
diff --git a/projects/igniteui-angular/core/src/services/overlay/overlay.spec.ts b/projects/igniteui-angular/core/src/services/overlay/overlay.spec.ts
index 5307058c656..1b53bb25dd8 100644
--- a/projects/igniteui-angular/core/src/services/overlay/overlay.spec.ts
+++ b/projects/igniteui-angular/core/src/services/overlay/overlay.spec.ts
@@ -12,13 +12,9 @@ import {
import { fakeAsync, TestBed, tick, waitForAsync } from '@angular/core/testing';
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { first } from 'rxjs/operators';
-import { IgxAvatarComponent } from '../../../../avatar/src/avatar/avatar.component';
-import { IgxCalendarComponent } from '../../../../calendar/src/public_api';
-import { IgxCalendarContainerComponent } from '../../../../date-picker/src/date-picker/calendar-container/calendar-container.component';
import { UIInteractions } from '../../../../test-utils/ui-interactions.spec';
import { IgxAngularAnimationService } from '../animation/angular-animation-service';
import { AnimationService } from '../animation/animation';
-import { IgxOverlayOutletDirective, IgxToggleDirective } from '../../../../directives/src/directives/toggle/toggle.directive';
import { IgxOverlayService } from './overlay';
import { ContainerPositionStrategy } from './position';
import { AutoPositionStrategy } from './position/auto-position-strategy';
@@ -33,6 +29,7 @@ import { CloseScrollStrategy } from './scroll/close-scroll-strategy';
import { NoOpScrollStrategy } from './scroll/NoOpScrollStrategy';
import {
HorizontalAlignment,
+ IgxOverlayOutletDirective,
OffsetMode,
OverlayCancelableEventArgs,
OverlayEventArgs,
@@ -42,6 +39,10 @@ import {
VerticalAlignment
} from './utilities';
import { scaleInVerTop, scaleOutVerTop } from 'igniteui-angular/animations';
+import { IgxCalendarContainerComponent } from 'igniteui-angular/date-picker';
+import { IgxAvatarComponent } from 'igniteui-angular/avatar';
+import { IgxCalendarComponent } from 'igniteui-angular/calendar';
+import { IgxToggleDirective } from 'igniteui-angular/directives';
const CLASS_OVERLAY_CONTENT = 'igx-overlay__content';
const CLASS_OVERLAY_CONTENT_MODAL = 'igx-overlay__content--modal';
diff --git a/projects/igniteui-angular/core/src/services/overlay/utilities.ts b/projects/igniteui-angular/core/src/services/overlay/utilities.ts
index 9441c0a955a..4459d1bdfb3 100644
--- a/projects/igniteui-angular/core/src/services/overlay/utilities.ts
+++ b/projects/igniteui-angular/core/src/services/overlay/utilities.ts
@@ -1,17 +1,29 @@
import { AnimationReferenceMetadata } from '@angular/animations';
-import { ComponentRef, ElementRef, Injector, NgZone } from '@angular/core';
+import { ComponentRef, Directive, ElementRef, Injector, NgZone } from '@angular/core';
import { CancelableBrowserEventArgs, CancelableEventArgs, cloneValue, IBaseEventArgs } from '../../core/utils';
import { AnimationPlayer } from '../animation/animation';
import { IPositionStrategy } from './position/IPositionStrategy';
import { IScrollStrategy } from './scroll';
/**
- * Interface representing an overlay outlet directive.
- * The actual implementation is in igniteui-angular/directives.
+ * Mark an element as an igxOverlay outlet container.
+ * Directive instance is exported as `overlay-outlet` to be assigned to templates variables:
+ * ```html
+ *
+ * ```
*/
-export interface IgxOverlayOutletDirective {
- element: ElementRef;
- readonly nativeElement: HTMLElement;
+@Directive({
+ exportAs: 'overlay-outlet',
+ selector: '[igxOverlayOutlet]',
+ standalone: true
+})
+export class IgxOverlayOutletDirective {
+ constructor(public element: ElementRef) { }
+
+ /** @hidden */
+ public get nativeElement() {
+ return this.element.nativeElement;
+ }
}
/* blazorAlternateName: GridHorizontalAlignment */
diff --git a/projects/igniteui-angular/core/src/services/public_api.ts b/projects/igniteui-angular/core/src/services/public_api.ts
index 88d1c71891b..5a0ac3f116d 100644
--- a/projects/igniteui-angular/core/src/services/public_api.ts
+++ b/projects/igniteui-angular/core/src/services/public_api.ts
@@ -15,7 +15,8 @@ export * from './overlay/position';
export * from './overlay/scroll';
export {
AbsolutePosition, ConnectedFit, HorizontalAlignment, OffsetMode, OverlayAnimationEventArgs, OverlayCancelableEventArgs, OverlayClosingEventArgs,
- OverlayCreateSettings, OverlayEventArgs, OverlaySettings, Point, PositionSettings, RelativePosition, RelativePositionStrategy, Size, VerticalAlignment, Util
+ OverlayCreateSettings, OverlayEventArgs, OverlaySettings, Point, PositionSettings, RelativePosition, RelativePositionStrategy, Size, VerticalAlignment, Util,
+ IgxOverlayOutletDirective
} from './overlay/utilities';
export * from './transaction/base-transaction';
export * from './transaction/hierarchical-transaction';
diff --git a/projects/igniteui-angular/date-picker/src/date-picker/date-picker.component.spec.ts b/projects/igniteui-angular/date-picker/src/date-picker/date-picker.component.spec.ts
index 07d2c13758e..16ad78106d9 100644
--- a/projects/igniteui-angular/date-picker/src/date-picker/date-picker.component.spec.ts
+++ b/projects/igniteui-angular/date-picker/src/date-picker/date-picker.component.spec.ts
@@ -9,6 +9,7 @@ import { IFormattingViews, IgxCalendarComponent, IgxCalendarHeaderTemplateDirect
import { IgxCalendarContainerComponent } from './calendar-container/calendar-container.component';
import { IgxDatePickerComponent } from './date-picker.component';
import {
+ IgxOverlayOutletDirective,
IgxOverlayService,
OverlayCancelableEventArgs, OverlayClosingEventArgs, OverlayEventArgs, OverlaySettings,
WEEKDAYS
@@ -18,7 +19,6 @@ import { By } from '@angular/platform-browser';
import { PickerCalendarOrientation, PickerHeaderOrientation, PickerInteractionMode } from '../../../core/src/date-common/types';
import { DatePart } from '../../../core/src/date-common/public_api';
import { DateRangeDescriptor, DateRangeType } from 'igniteui-angular/core';
-import { IgxOverlayOutletDirective } from '../../../directives/src/directives/toggle/toggle.directive';
import { IgxPickerClearComponent, IgxPickerToggleComponent } from '../../../core/src/date-common/public_api';
import { DateTimeUtil } from '../../../core/src/date-common/util/date-time.util';
import { registerLocaleData } from "@angular/common";
diff --git a/projects/igniteui-angular/date-picker/src/date-picker/date-picker.component.ts b/projects/igniteui-angular/date-picker/src/date-picker/date-picker.component.ts
index 44e2b987ba0..c649d6bdd99 100644
--- a/projects/igniteui-angular/date-picker/src/date-picker/date-picker.component.ts
+++ b/projects/igniteui-angular/date-picker/src/date-picker/date-picker.component.ts
@@ -43,7 +43,7 @@ import {
import { fromEvent, Subscription, noop, MonoTypeOperatorFunction } from 'rxjs';
import { filter, takeUntil } from 'rxjs/operators';
-import { IgxDateTimeEditorDirective, IgxOverlayOutletDirective, IgxTextSelectionDirective } from 'igniteui-angular/directives';
+import { IgxDateTimeEditorDirective, IgxTextSelectionDirective } from 'igniteui-angular/directives';
import {
AbsoluteScrollStrategy,
AutoPositionStrategy,
@@ -64,7 +64,8 @@ import {
DateTimeUtil,
DatePartDeltas,
DatePart,
- isDateInRanges
+ isDateInRanges,
+ IgxOverlayOutletDirective
} from 'igniteui-angular/core';
import { IDatePickerValidationFailedEventArgs } from './date-picker.common';
import { IgxIconComponent } from 'igniteui-angular/icon';
diff --git a/projects/igniteui-angular/date-picker/src/date-picker/picker-base.directive.ts b/projects/igniteui-angular/date-picker/src/date-picker/picker-base.directive.ts
index c3e516f54bd..b32be7bebd4 100644
--- a/projects/igniteui-angular/date-picker/src/date-picker/picker-base.directive.ts
+++ b/projects/igniteui-angular/date-picker/src/date-picker/picker-base.directive.ts
@@ -8,8 +8,7 @@ import { getLocaleFirstDayOfWeek } from "@angular/common";
import { merge, Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
import { IGX_INPUT_GROUP_TYPE, IgxInputGroupComponent, IgxInputGroupType, IgxPrefixDirective, IgxSuffixDirective } from 'igniteui-angular/input-group';
-import { DateRange, EditorProvider, IBaseCancelableBrowserEventArgs, IBaseEventArgs, IgxPickerClearComponent, IgxPickerToggleComponent, IToggleView, OverlaySettings, PickerHeaderOrientation, PickerInteractionMode, WEEKDAYS } from 'igniteui-angular/core';
-import { IgxOverlayOutletDirective } from 'igniteui-angular/directives';
+import { DateRange, EditorProvider, IBaseCancelableBrowserEventArgs, IBaseEventArgs, IgxOverlayOutletDirective, IgxPickerClearComponent, IgxPickerToggleComponent, IToggleView, OverlaySettings, PickerHeaderOrientation, PickerInteractionMode, WEEKDAYS } from 'igniteui-angular/core';
@Directive()
export abstract class PickerBaseDirective implements IToggleView, EditorProvider, AfterViewInit, AfterContentChecked, OnDestroy {
diff --git a/projects/igniteui-angular/date-picker/src/date-range-picker/date-range-picker.component.ts b/projects/igniteui-angular/date-picker/src/date-range-picker/date-range-picker.component.ts
index 4b2789c892f..ca15a8b834b 100644
--- a/projects/igniteui-angular/date-picker/src/date-range-picker/date-range-picker.component.ts
+++ b/projects/igniteui-angular/date-picker/src/date-range-picker/date-range-picker.component.ts
@@ -37,11 +37,11 @@ import {
DateTimeUtil,
IgxPickerActionsDirective,
isDateInRanges,
- PickerCalendarOrientation
+ PickerCalendarOrientation,
+ IgxOverlayOutletDirective
} from 'igniteui-angular/core';
import { IgxCalendarContainerComponent } from '../date-picker/calendar-container/calendar-container.component';
import { PickerBaseDirective } from '../date-picker/picker-base.directive';
-import { IgxOverlayOutletDirective } from 'igniteui-angular/directives';
import {
IgxInputDirective,
IgxInputGroupComponent,
diff --git a/projects/igniteui-angular/directives/src/directives/notification/notifications.directive.ts b/projects/igniteui-angular/directives/src/directives/notification/notifications.directive.ts
index bf318a6f312..0df270be7f5 100644
--- a/projects/igniteui-angular/directives/src/directives/notification/notifications.directive.ts
+++ b/projects/igniteui-angular/directives/src/directives/notification/notifications.directive.ts
@@ -1,7 +1,7 @@
import { Directive, ElementRef, HostBinding, Input, OnDestroy, booleanAttribute } from '@angular/core';
-import { IToggleView } from 'igniteui-angular/core';
+import { IgxOverlayOutletDirective, IToggleView } from 'igniteui-angular/core';
import { IPositionStrategy, OverlaySettings } from 'igniteui-angular/core';
-import { IgxOverlayOutletDirective, IgxToggleDirective } from '../toggle/toggle.directive';
+import { IgxToggleDirective } from '../toggle/toggle.directive';
@Directive()
export abstract class IgxNotificationsDirective extends IgxToggleDirective
diff --git a/projects/igniteui-angular/directives/src/directives/toggle/toggle.directive.spec.ts b/projects/igniteui-angular/directives/src/directives/toggle/toggle.directive.spec.ts
index 45b8ed094c9..cf4f3cd509f 100644
--- a/projects/igniteui-angular/directives/src/directives/toggle/toggle.directive.spec.ts
+++ b/projects/igniteui-angular/directives/src/directives/toggle/toggle.directive.spec.ts
@@ -2,15 +2,10 @@ import { ChangeDetectionStrategy, Component, DebugElement, ViewChild, ElementRef
import { fakeAsync, TestBed, tick, waitForAsync } from '@angular/core/testing';
import { By } from '@angular/platform-browser';
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
-import { IgxToggleActionDirective, IgxToggleDirective, IgxOverlayOutletDirective } from './toggle.directive';
-import {
- IgxOverlayService, OverlaySettings, ConnectedPositioningStrategy,
- AbsoluteScrollStrategy, AutoPositionStrategy, HorizontalAlignment
-} from '../../../../core/src/services/public_api';
-import { CancelableEventArgs } from '../../../../core/src/core/utils';
+import { IgxToggleActionDirective, IgxToggleDirective } from './toggle.directive';
import { first } from 'rxjs/operators';
-import { OffsetMode } from '../../../../core/src/services/overlay/utilities';
+import { AbsoluteScrollStrategy, AutoPositionStrategy, CancelableEventArgs, ConnectedPositioningStrategy, HorizontalAlignment, IgxOverlayOutletDirective, IgxOverlayService, OffsetMode, OverlaySettings } from 'igniteui-angular/core';
describe('IgxToggle', () => {
const HIDDEN_TOGGLER_CLASS = 'igx-toggle--hidden';
diff --git a/projects/igniteui-angular/directives/src/directives/toggle/toggle.directive.ts b/projects/igniteui-angular/directives/src/directives/toggle/toggle.directive.ts
index 3289bc062b3..286472fab6b 100644
--- a/projects/igniteui-angular/directives/src/directives/toggle/toggle.directive.ts
+++ b/projects/igniteui-angular/directives/src/directives/toggle/toggle.directive.ts
@@ -11,7 +11,7 @@ import {
Optional,
Output,
} from '@angular/core';
-import { AbsoluteScrollStrategy } from 'igniteui-angular/core';
+import { AbsoluteScrollStrategy, IgxOverlayOutletDirective } from 'igniteui-angular/core';
import { CancelableBrowserEventArgs, IBaseEventArgs, PlatformUtil } from 'igniteui-angular/core';
import { ConnectedPositioningStrategy } from 'igniteui-angular/core';
import { filter, first, takeUntil } from 'rxjs/operators';
@@ -526,24 +526,3 @@ export class IgxToggleActionDirective implements OnInit {
return settings;
}
}
-
-/**
- * Mark an element as an igxOverlay outlet container.
- * Directive instance is exported as `overlay-outlet` to be assigned to templates variables:
- * ```html
- *
- * ```
- */
-@Directive({
- exportAs: 'overlay-outlet',
- selector: '[igxOverlayOutlet]',
- standalone: true
-})
-export class IgxOverlayOutletDirective {
- constructor(public element: ElementRef) { }
-
- /** @hidden */
- public get nativeElement() {
- return this.element.nativeElement;
- }
-}
diff --git a/projects/igniteui-angular/directives/src/directives/toggle/toggle.module.ts b/projects/igniteui-angular/directives/src/directives/toggle/toggle.module.ts
index 89bf597b6b8..dbc4a79d4d5 100644
--- a/projects/igniteui-angular/directives/src/directives/toggle/toggle.module.ts
+++ b/projects/igniteui-angular/directives/src/directives/toggle/toggle.module.ts
@@ -1,12 +1,12 @@
import { NgModule } from '@angular/core';
-import { IgxOverlayOutletDirective, IgxToggleActionDirective, IgxToggleDirective } from './toggle.directive';
+import { IgxToggleActionDirective, IgxToggleDirective } from './toggle.directive';
/**
* @hidden
* IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components
*/
@NgModule({
- imports: [IgxToggleDirective, IgxToggleActionDirective, IgxOverlayOutletDirective],
- exports: [IgxToggleDirective, IgxToggleActionDirective, IgxOverlayOutletDirective]
+ imports: [IgxToggleDirective, IgxToggleActionDirective],
+ exports: [IgxToggleDirective, IgxToggleActionDirective]
})
export class IgxToggleModule { }
diff --git a/projects/igniteui-angular/drop-down/src/drop-down/autocomplete/autocomplete.directive.ts b/projects/igniteui-angular/drop-down/src/drop-down/autocomplete/autocomplete.directive.ts
index 83934e7a1b6..019c2df9c8f 100644
--- a/projects/igniteui-angular/drop-down/src/drop-down/autocomplete/autocomplete.directive.ts
+++ b/projects/igniteui-angular/drop-down/src/drop-down/autocomplete/autocomplete.directive.ts
@@ -18,7 +18,7 @@ import {
import { NgModel, FormControlName } from '@angular/forms';
import { Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
-import { CancelableEventArgs, IBaseEventArgs } from 'igniteui-angular/core';
+import { CancelableEventArgs, IBaseEventArgs, IgxOverlayOutletDirective } from 'igniteui-angular/core';
import {
AbsoluteScrollStrategy,
AutoPositionStrategy,
@@ -28,7 +28,6 @@ import {
} from 'igniteui-angular/core';
import { IgxDropDownComponent } from '../drop-down.component';
import { IgxDropDownItemNavigationDirective } from '../drop-down-navigation.directive';
-import { IgxOverlayOutletDirective } from 'igniteui-angular/directives';
import { ISelectionEventArgs } from '../drop-down.common';
import { IgxInputGroupComponent } from 'igniteui-angular/input-group';
diff --git a/projects/igniteui-angular/drop-down/src/drop-down/public_api.ts b/projects/igniteui-angular/drop-down/src/drop-down/public_api.ts
index 25f4a0188b9..e627fa1a5c9 100644
--- a/projects/igniteui-angular/drop-down/src/drop-down/public_api.ts
+++ b/projects/igniteui-angular/drop-down/src/drop-down/public_api.ts
@@ -12,6 +12,7 @@ export { ISelectionEventArgs, IDropDownNavigationDirective } from './drop-down.c
export * from './drop-down-navigation.directive';
export * from './drop-down-group.component';
export * from './autocomplete/autocomplete.directive';
+export * from './autocomplete/autocomplete.module';
/* NOTE: Drop down directives collection for ease-of-use import in standalone components scenario */
export const IGX_DROP_DOWN_DIRECTIVES = [
diff --git a/projects/igniteui-angular/grids/core/src/columns/public_api.ts b/projects/igniteui-angular/grids/core/src/columns/public_api.ts
index 89487810b6f..bbecc39ab22 100644
--- a/projects/igniteui-angular/grids/core/src/columns/public_api.ts
+++ b/projects/igniteui-angular/grids/core/src/columns/public_api.ts
@@ -18,7 +18,7 @@ import {
IgxColumnMinLengthValidatorDirective,
IgxColumnMinValidatorDirective,
IgxColumnRequiredValidatorDirective,
- IgxColumPatternValidatorDirective
+ IgxColumnPatternValidatorDirective
} from './validators.directive';
export * from './column.component';
@@ -35,7 +35,7 @@ export const IGX_GRID_VALIDATION_DIRECTIVES = [
IgxColumnEmailValidatorDirective,
IgxColumnMinLengthValidatorDirective,
IgxColumnMaxLengthValidatorDirective,
- IgxColumPatternValidatorDirective
+ IgxColumnPatternValidatorDirective
] as const;
/* NOTE: Grid column validation directives collection for ease-of-use import in standalone components scenario */
diff --git a/projects/igniteui-angular/grids/core/src/columns/validators.directive.ts b/projects/igniteui-angular/grids/core/src/columns/validators.directive.ts
index dc8a9b845fd..729b9eb8829 100644
--- a/projects/igniteui-angular/grids/core/src/columns/validators.directive.ts
+++ b/projects/igniteui-angular/grids/core/src/columns/validators.directive.ts
@@ -2,7 +2,7 @@ import { Directive } from '@angular/core';
import { RequiredValidator, NG_VALIDATORS, MinValidator, MaxValidator, EmailValidator, MinLengthValidator, MaxLengthValidator, PatternValidator } from '@angular/forms';
@Directive({
-
+
selector: 'igx-column[required]',
providers: [{
provide: NG_VALIDATORS,
@@ -15,7 +15,7 @@ export class IgxColumnRequiredValidatorDirective extends RequiredValidator {
}
@Directive({
-
+
selector: 'igx-column[min]',
providers: [{
provide: NG_VALIDATORS,
@@ -28,7 +28,7 @@ export class IgxColumnMinValidatorDirective extends MinValidator { }
@Directive({
-
+
selector: 'igx-column[max]',
providers: [{
provide: NG_VALIDATORS,
@@ -41,7 +41,7 @@ export class IgxColumnMaxValidatorDirective extends MaxValidator { }
@Directive({
-
+
selector: 'igx-column[email]',
providers: [{
provide: NG_VALIDATORS,
@@ -54,7 +54,7 @@ export class IgxColumnEmailValidatorDirective extends EmailValidator { }
@Directive({
-
+
selector: 'igx-column[minlength]',
providers: [{
provide: NG_VALIDATORS,
@@ -66,7 +66,7 @@ export class IgxColumnEmailValidatorDirective extends EmailValidator { }
export class IgxColumnMinLengthValidatorDirective extends MinLengthValidator { }
@Directive({
-
+
selector: 'igx-column[maxlength]',
providers: [{
provide: NG_VALIDATORS,
@@ -79,14 +79,14 @@ export class IgxColumnMaxLengthValidatorDirective extends MaxLengthValidator {
}
@Directive({
-
+
selector: 'igx-column[pattern]',
providers: [{
provide: NG_VALIDATORS,
- useExisting: IgxColumPatternValidatorDirective,
+ useExisting: IgxColumnPatternValidatorDirective,
multi: true
}],
standalone: true
})
-export class IgxColumPatternValidatorDirective extends PatternValidator {
+export class IgxColumnPatternValidatorDirective extends PatternValidator {
}
diff --git a/projects/igniteui-angular/grids/core/src/common/grid.interface.ts b/projects/igniteui-angular/grids/core/src/common/grid.interface.ts
index e70a4a40dae..b1bbd4a9580 100644
--- a/projects/igniteui-angular/grids/core/src/common/grid.interface.ts
+++ b/projects/igniteui-angular/grids/core/src/common/grid.interface.ts
@@ -15,9 +15,9 @@ import { IgxCell, IgxEditRow } from './crud.service';
import { GridSelectionRange } from './types';
import { DropPosition, IgxColumnMovingService } from '../moving/moving.service';
import { Observable, Subject } from 'rxjs';
-import { ColumnPinningPosition, ColumnType, FilteringExpressionsTree, FilteringLogic, GridColumnDataType, GridSummaryCalculationMode, GridTypeBase, IDataCloneStrategy, IFilteringExpressionsTree, IFilteringStrategy, IGridGroupingStrategy, IGridMergeStrategy, IGridResourceStrings, IGridSortingStrategy, IGroupByExpandState, IGroupByRecord, IGroupingExpression, IgxSummaryResult, IPathSegment, ISortingExpression, ISortingOptions, ITreeGridRecord, OverlaySettings, ɵSize, SortingDirection, State, Transaction, TransactionService } from 'igniteui-angular/core';
+import { ColumnPinningPosition, ColumnType, FilteringExpressionsTree, FilteringLogic, GridColumnDataType, GridSummaryCalculationMode, GridTypeBase, IDataCloneStrategy, IFilteringExpressionsTree, IFilteringStrategy, IGridGroupingStrategy, IGridMergeStrategy, IGridResourceStrings, IGridSortingStrategy, IGroupByExpandState, IGroupByRecord, IGroupingExpression, IgxSummaryResult, IPathSegment, ISortingExpression, ISortingOptions, ITreeGridRecord, OverlaySettings, ɵSize, SortingDirection, State, Transaction, TransactionService, type IgxOverlayOutletDirective } from 'igniteui-angular/core';
import { FormControl, FormGroup, ValidationErrors } from '@angular/forms';
-import type { IForOfState, IgxGridForOfDirective, IgxOverlayOutletDirective, IgxToggleDirective } from 'igniteui-angular/directives';
+import type { IForOfState, IgxGridForOfDirective, IgxToggleDirective } from 'igniteui-angular/directives';
import type { IgxPaginatorComponent } from 'igniteui-angular/paginator';
import { IgxGridValidationService } from '../grid-validation.service';
import { IDimensionsChange, IPivotConfiguration, IPivotDimension, IPivotKeys, IPivotUISettings, IPivotValue, IValuesChange, PivotDimensionType } from '../pivot-grid.interface';
diff --git a/projects/igniteui-angular/grids/core/src/filtering/excel-style/excel-style-date-expression.component.ts b/projects/igniteui-angular/grids/core/src/filtering/excel-style/excel-style-date-expression.component.ts
index 6ba453b362f..417379410f9 100644
--- a/projects/igniteui-angular/grids/core/src/filtering/excel-style/excel-style-date-expression.component.ts
+++ b/projects/igniteui-angular/grids/core/src/filtering/excel-style/excel-style-date-expression.component.ts
@@ -6,9 +6,9 @@ import { IgxSelectComponent, IgxSelectItemComponent } from 'igniteui-angular/sel
import { IgxInputDirective, IgxInputGroupComponent, IgxPrefixDirective } from 'igniteui-angular/input-group';
import { IgxIconComponent } from 'igniteui-angular/icon';
import { IgxDatePickerComponent } from 'igniteui-angular/date-picker';
-import { IgxPickerClearComponent, IgxPickerToggleComponent } from 'igniteui-angular/core';
+import { IgxOverlayOutletDirective, IgxPickerClearComponent, IgxPickerToggleComponent } from 'igniteui-angular/core';
import { IgxTimePickerComponent } from 'igniteui-angular/time-picker';
-import { IgxButtonDirective, IgxDateTimeEditorDirective, IgxIconButtonDirective, IgxOverlayOutletDirective } from 'igniteui-angular/directives';
+import { IgxButtonDirective, IgxDateTimeEditorDirective, IgxIconButtonDirective } from 'igniteui-angular/directives';
import { IgxButtonGroupComponent } from 'igniteui-angular/button-group';
/**
diff --git a/projects/igniteui-angular/grids/core/src/filtering/excel-style/excel-style-default-expression.component.ts b/projects/igniteui-angular/grids/core/src/filtering/excel-style/excel-style-default-expression.component.ts
index 7ef21aab955..71fb49cc960 100644
--- a/projects/igniteui-angular/grids/core/src/filtering/excel-style/excel-style-default-expression.component.ts
+++ b/projects/igniteui-angular/grids/core/src/filtering/excel-style/excel-style-default-expression.component.ts
@@ -9,11 +9,11 @@ import {
} from '@angular/core';
import { FormsModule } from '@angular/forms';
import { ExpressionUI } from './common';
-import { AbsoluteScrollStrategy, ColumnType, ConnectedPositioningStrategy, DataUtil, FilteringLogic, GridColumnDataType, IBaseEventArgs, IFilteringOperation, OverlaySettings, PlatformUtil } from 'igniteui-angular/core';
+import { AbsoluteScrollStrategy, ColumnType, ConnectedPositioningStrategy, DataUtil, FilteringLogic, GridColumnDataType, IBaseEventArgs, IFilteringOperation, IgxOverlayOutletDirective, OverlaySettings, PlatformUtil } from 'igniteui-angular/core';
import { IgxSelectComponent, IgxSelectItemComponent } from 'igniteui-angular/select';
import { IgxInputDirective, IgxInputGroupComponent, IgxPrefixDirective } from 'igniteui-angular/input-group';
import { IgxIconComponent } from 'igniteui-angular/icon';
-import { IgxButtonDirective, IgxIconButtonDirective, IgxOverlayOutletDirective } from 'igniteui-angular/directives';
+import { IgxButtonDirective, IgxIconButtonDirective } from 'igniteui-angular/directives';
import { IgxButtonGroupComponent } from 'igniteui-angular/button-group';
/**
diff --git a/projects/igniteui-angular/grids/core/src/pivot-grid.interface.ts b/projects/igniteui-angular/grids/core/src/pivot-grid.interface.ts
index 76d3784cfbc..edbb95dc676 100644
--- a/projects/igniteui-angular/grids/core/src/pivot-grid.interface.ts
+++ b/projects/igniteui-angular/grids/core/src/pivot-grid.interface.ts
@@ -230,7 +230,7 @@ export interface IPivotUISettings {
horizontalSummariesPosition?: PivotSummaryPosition;
}
-export type PivotAggregationType = 'SUM' | 'AVG' | 'MIN' | 'MAX' | 'COUNT' | 'LATEST' | 'EARLIEST' ;
+export type PivotAggregationType = 'SUM' | 'AVG' | 'MIN' | 'MAX' | 'COUNT' | 'LATEST' | 'EARLIEST';
/** Interface describing the pivot dimension data.
* Contains additional information needed to render dimension headers.
diff --git a/projects/igniteui-angular/grids/core/src/public_api.ts b/projects/igniteui-angular/grids/core/src/public_api.ts
index 9e8b122047d..29c86eba1fd 100644
--- a/projects/igniteui-angular/grids/core/src/public_api.ts
+++ b/projects/igniteui-angular/grids/core/src/public_api.ts
@@ -73,8 +73,7 @@ export {
IgxRowEditTabStopDirective,
IgxRowEditTemplateDirective
} from './grid.rowEdit.directive';
-export { IGridState, IColumnState, IGridStateCollection, IGridStateOptions, GridFeatures } from './state-base.directive';
-export { IgxGridStateBaseDirective } from './state-base.directive';
+export * from './state-base.directive';
export * from './state.directive';
export * from './columns/public_api';
export * from './headers/public_api';
diff --git a/projects/igniteui-angular/grids/grid/src/column.spec.ts b/projects/igniteui-angular/grids/grid/src/column.spec.ts
index 5da248006f5..06c055a128d 100644
--- a/projects/igniteui-angular/grids/grid/src/column.spec.ts
+++ b/projects/igniteui-angular/grids/grid/src/column.spec.ts
@@ -1353,37 +1353,37 @@ describe('IgxGrid - Column properties #grid', () => {
let fix: ComponentFixture;
let grid: IgxGridComponent;
const dataWithImages = [{
- avatar: 'assets/images/avatar/1.jpg',
+ avatar: './test-utils/assets/images/avatar/1.jpg',
phone: '770-504-2217',
text: 'Terrance Orta',
available: false
}, {
- avatar: 'assets/images/avatar/2.jpg',
+ avatar: './test-utils/assets/images/avatar/2.jpg',
phone: '423-676-2869',
text: 'Richard Mahoney',
available: true
}, {
- avatar: 'assets/images/avatar/3.jpg',
+ avatar: './test-utils/assets/images/avatar/3.jpg',
phone: '859-496-2817',
text: 'Donna Price',
available: true
}, {
- avatar: 'assets/images/avatar/4.jpg',
+ avatar: './test-utils/assets/images/avatar/4.jpg',
phone: '901-747-3428',
text: 'Lisa Landers',
available: true
}, {
- avatar: 'assets/images/avatar/12.jpg',
+ avatar: './test-utils/assets/images/avatar/12.jpg',
phone: '573-394-9254',
text: 'Dorothy H. Spencer',
available: true
}, {
- avatar: 'assets/images/avatar/13.jpg',
+ avatar: './test-utils/assets/images/avatar/13.jpg',
phone: '323-668-1482',
text: 'Stephanie May',
available: false
}, {
- avatar: 'assets/images/avatar/14.jpg',
+ avatar: './test-utils/assets/images/avatar/14.jpg',
phone: '401-661-3742',
text: 'Marianne Taylor',
available: true
@@ -1410,7 +1410,7 @@ describe('IgxGrid - Column properties #grid', () => {
const cell = column._cells[0];
expect(cell.nativeElement.firstElementChild.tagName).toBe('IMG');
- expect(cell.nativeElement.firstElementChild.getAttribute('src')).toBe('assets/images/avatar/1.jpg');
+ expect(cell.nativeElement.firstElementChild.getAttribute('src')).toBe('./test-utils/assets/images/avatar/1.jpg');
expect(cell.nativeElement.firstElementChild.getAttribute('alt')).toBe('1');
});
diff --git a/projects/igniteui-angular/grids/grid/src/grid-base.directive.ts b/projects/igniteui-angular/grids/grid/src/grid-base.directive.ts
index c8373625afc..ac4d2fe594d 100644
--- a/projects/igniteui-angular/grids/grid/src/grid-base.directive.ts
+++ b/projects/igniteui-angular/grids/grid/src/grid-base.directive.ts
@@ -91,13 +91,13 @@ import {
GridSummaryCalculationMode,
IgxActionStripToken,
GridResourceStringsEN,
- IGridResourceStrings
+ IGridResourceStrings,
+ IgxOverlayOutletDirective
} from 'igniteui-angular/core';
import { IgcTrialWatermark } from 'igniteui-trial-watermark';
import { Subject, pipe, fromEvent, animationFrameScheduler, merge } from 'rxjs';
import { takeUntil, first, filter, throttleTime, map, shareReplay, takeWhile } from 'rxjs/operators';
import {
- IgxOverlayOutletDirective,
IgxToggleDirective,
IForOfDataChangeEventArgs,
IgxGridForOfDirective,
diff --git a/projects/igniteui-angular/grids/grid/src/grid.component.ts b/projects/igniteui-angular/grids/grid/src/grid.component.ts
index 54a81c382a1..69474e86d7c 100644
--- a/projects/igniteui-angular/grids/grid/src/grid.component.ts
+++ b/projects/igniteui-angular/grids/grid/src/grid.component.ts
@@ -50,13 +50,13 @@ import {
import { IgxGridAPIService } from './grid-api.service';
import { IgxGridGroupByRowComponent } from './groupby-row.component';
import { take, takeUntil } from 'rxjs/operators';
-import { cloneArray, IBaseEventArgs, IGridGroupingStrategy, IGroupByExpandState, IGroupByRecord, IGroupingExpression, ISortingExpression } from 'igniteui-angular/core';
+import { cloneArray, IBaseEventArgs, IGridGroupingStrategy, IGroupByExpandState, IGroupByRecord, IGroupingExpression, IgxOverlayOutletDirective, ISortingExpression } from 'igniteui-angular/core';
import { IgxGridDetailsPipe } from './grid.details.pipe';
import { IgxGridSummaryPipe } from './grid.summary.pipe';
import { IgxGridGroupingPipe, IgxGridPagingPipe, IgxGridSortingPipe, IgxGridFilteringPipe, IgxGridCellMergePipe, IgxGridUnmergeActivePipe } from './grid.pipes';
import { IgxGridRowComponent } from './grid-row.component';
import { Observable, Subject } from 'rxjs';
-import { IForOfState, IgxButtonDirective, IgxForOfScrollSyncService, IgxForOfSyncService, IgxGridForOfDirective, IgxOverlayOutletDirective, IgxRippleDirective, IgxScrollInertiaDirective, IgxTemplateOutletDirective, IgxToggleDirective } from 'igniteui-angular/directives';
+import { IForOfState, IgxButtonDirective, IgxForOfScrollSyncService, IgxForOfSyncService, IgxGridForOfDirective, IgxRippleDirective, IgxScrollInertiaDirective, IgxTemplateOutletDirective, IgxToggleDirective } from 'igniteui-angular/directives';
import { IgxCircularProgressBarComponent } from 'igniteui-angular/progressbar';
import { IgxSnackbarComponent } from 'igniteui-angular/snackbar';
import { IgxIconComponent } from 'igniteui-angular/icon';
diff --git a/projects/igniteui-angular/grids/grid/src/public_api.ts b/projects/igniteui-angular/grids/grid/src/public_api.ts
index 380502c260f..e439197ac4f 100644
--- a/projects/igniteui-angular/grids/grid/src/public_api.ts
+++ b/projects/igniteui-angular/grids/grid/src/public_api.ts
@@ -41,7 +41,7 @@ import {
IgxColumnEmailValidatorDirective,
IgxColumnMinLengthValidatorDirective,
IgxColumnMaxLengthValidatorDirective,
- IgxColumPatternValidatorDirective,
+ IgxColumnPatternValidatorDirective,
IgxColumnActionsComponent,
IgxColumnHidingDirective,
IgxColumnPinningDirective,
@@ -174,7 +174,7 @@ export const IGX_GRID_DIRECTIVES = [
IgxColumnEmailValidatorDirective,
IgxColumnMinLengthValidatorDirective,
IgxColumnMaxLengthValidatorDirective,
- IgxColumPatternValidatorDirective,
+ IgxColumnPatternValidatorDirective,
// IGX_PAGINATOR_DIRECTIVES:
IgxPaginatorComponent,
IgxPageNavigationComponent,
diff --git a/projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-grid.component.ts b/projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-grid.component.ts
index fb151362a28..6c23986d6f6 100644
--- a/projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-grid.component.ts
+++ b/projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-grid.component.ts
@@ -52,11 +52,11 @@ import { IgxGridDragSelectDirective } from 'igniteui-angular/grids/core';
import { IgxGridBodyDirective } from 'igniteui-angular/grids/core';
import { IgxGridHeaderRowComponent } from 'igniteui-angular/grids/core';
import { IgxGridSelectionService } from 'igniteui-angular/grids/core';
-import { IgxButtonDirective, IgxForOfScrollSyncService, IgxForOfSyncService, IgxGridForOfDirective, IgxOverlayOutletDirective, IgxRippleDirective, IgxScrollInertiaDirective, IgxTemplateOutletDirective, IgxToggleDirective } from 'igniteui-angular/directives';
+import { IgxButtonDirective, IgxForOfScrollSyncService, IgxForOfSyncService, IgxGridForOfDirective, IgxRippleDirective, IgxScrollInertiaDirective, IgxTemplateOutletDirective, IgxToggleDirective } from 'igniteui-angular/directives';
import { IgxCircularProgressBarComponent } from 'igniteui-angular/progressbar';
import { IgxSnackbarComponent } from 'igniteui-angular/snackbar';
import { IgxIconComponent } from 'igniteui-angular/icon';
-import { EntityType, FieldType, IFilteringExpressionsTree, IgxActionStripToken, flatten } from 'igniteui-angular/core';
+import { EntityType, FieldType, IFilteringExpressionsTree, IgxActionStripToken, IgxOverlayOutletDirective, flatten } from 'igniteui-angular/core';
import { IgxPaginatorToken } from 'igniteui-angular/paginator';
import { IgxGridCellMergePipe, IgxGridComponent, IgxGridFilteringPipe, IgxGridSortingPipe, IgxGridUnmergeActivePipe } from 'igniteui-angular/grids/grid';
diff --git a/projects/igniteui-angular/grids/hierarchical-grid/src/public_api.ts b/projects/igniteui-angular/grids/hierarchical-grid/src/public_api.ts
index 218b772d3c6..2ab86a012d1 100644
--- a/projects/igniteui-angular/grids/hierarchical-grid/src/public_api.ts
+++ b/projects/igniteui-angular/grids/hierarchical-grid/src/public_api.ts
@@ -49,7 +49,7 @@ import {
IgxColumnEmailValidatorDirective,
IgxColumnMinLengthValidatorDirective,
IgxColumnMaxLengthValidatorDirective,
- IgxColumPatternValidatorDirective,
+ IgxColumnPatternValidatorDirective,
IgxColumnActionsComponent,
IgxColumnHidingDirective,
IgxColumnPinningDirective,
@@ -167,7 +167,7 @@ export const IGX_HIERARCHICAL_GRID_DIRECTIVES = [
IgxColumnEmailValidatorDirective,
IgxColumnMinLengthValidatorDirective,
IgxColumnMaxLengthValidatorDirective,
- IgxColumPatternValidatorDirective,
+ IgxColumnPatternValidatorDirective,
// IGX_PAGINATOR_DIRECTIVES:
IgxPaginatorComponent,
IgxPageNavigationComponent,
diff --git a/projects/igniteui-angular/grids/pivot-grid/src/pivot-grid.component.ts b/projects/igniteui-angular/grids/pivot-grid/src/pivot-grid.component.ts
index 00c23733755..c91fa2f1184 100644
--- a/projects/igniteui-angular/grids/pivot-grid/src/pivot-grid.component.ts
+++ b/projects/igniteui-angular/grids/pivot-grid/src/pivot-grid.component.ts
@@ -43,7 +43,7 @@ import { IgxColumnGroupComponent } from 'igniteui-angular/grids/core';
import { IgxColumnComponent } from 'igniteui-angular/grids/core';
import { FilterMode, GridPagingMode, GridSummaryPosition } from 'igniteui-angular/grids/core';
import { WatchChanges } from 'igniteui-angular/grids/core';
-import { cloneArray, ColumnType, DataUtil, DefaultDataCloneStrategy, GridColumnDataType, GridSummaryCalculationMode, IDataCloneStrategy, IFilteringExpressionsTree, IFilteringOperation, IFilteringStrategy, ISortingExpression, OverlaySettings, PlatformUtil, resizeObservable, ɵSize, SortingDirection } from 'igniteui-angular/core';
+import { cloneArray, ColumnType, DataUtil, DefaultDataCloneStrategy, GridColumnDataType, GridSummaryCalculationMode, IDataCloneStrategy, IFilteringExpressionsTree, IFilteringOperation, IFilteringStrategy, ISortingExpression, OverlaySettings, PlatformUtil, resizeObservable, ɵSize, SortingDirection, IgxOverlayOutletDirective } from 'igniteui-angular/core';
import {
IGridEditEventArgs,
ICellPosition,
@@ -82,7 +82,7 @@ import { IgxGridBodyDirective } from 'igniteui-angular/grids/core';
import { IgxColumnResizingService } from 'igniteui-angular/grids/core';
import { IgxPivotRowHeaderGroupComponent } from './pivot-row-header-group.component';
import { IgxPivotRowDimensionMrlRowComponent } from './pivot-row-dimension-mrl-row.component';
-import { IForOfDataChangingEventArgs, IgxForOfScrollSyncService, IgxForOfSyncService, IgxGridForOfDirective, IgxOverlayOutletDirective, IgxTemplateOutletDirective, IgxTextHighlightService, IgxToggleDirective } from 'igniteui-angular/directives';
+import { IForOfDataChangingEventArgs, IgxForOfScrollSyncService, IgxForOfSyncService, IgxGridForOfDirective, IgxTemplateOutletDirective, IgxTextHighlightService, IgxToggleDirective } from 'igniteui-angular/directives';
import { IgxCircularProgressBarComponent } from 'igniteui-angular/progressbar';
import { IgxSnackbarComponent } from 'igniteui-angular/snackbar';
import { IgxIconComponent } from 'igniteui-angular/icon';
diff --git a/projects/igniteui-angular/grids/tree-grid/src/public_api.ts b/projects/igniteui-angular/grids/tree-grid/src/public_api.ts
index 989f17e19f4..e0051743288 100644
--- a/projects/igniteui-angular/grids/tree-grid/src/public_api.ts
+++ b/projects/igniteui-angular/grids/tree-grid/src/public_api.ts
@@ -50,7 +50,7 @@ import {
IgxColumnEmailValidatorDirective,
IgxColumnMinLengthValidatorDirective,
IgxColumnMaxLengthValidatorDirective,
- IgxColumPatternValidatorDirective,
+ IgxColumnPatternValidatorDirective,
IgxColumnActionsComponent,
IgxColumnHidingDirective,
IgxColumnPinningDirective,
@@ -169,7 +169,7 @@ export const IGX_TREE_GRID_DIRECTIVES = [
IgxColumnEmailValidatorDirective,
IgxColumnMinLengthValidatorDirective,
IgxColumnMaxLengthValidatorDirective,
- IgxColumPatternValidatorDirective,
+ IgxColumnPatternValidatorDirective,
// IGX_PAGINATOR_DIRECTIVES:
IgxPaginatorComponent,
IgxPageNavigationComponent,
diff --git a/projects/igniteui-angular/grids/tree-grid/src/tree-grid.component.ts b/projects/igniteui-angular/grids/tree-grid/src/tree-grid.component.ts
index 725537cd983..2d1890a5e31 100644
--- a/projects/igniteui-angular/grids/tree-grid/src/tree-grid.component.ts
+++ b/projects/igniteui-angular/grids/tree-grid/src/tree-grid.component.ts
@@ -67,12 +67,12 @@ import {
import { first, takeUntil } from 'rxjs/operators';
import { IgxRowLoadingIndicatorTemplateDirective } from './tree-grid.directives';
import { IgxTreeGridSelectionService } from './tree-grid-selection.service';
-import { DefaultTreeGridMergeStrategy, HierarchicalState, HierarchicalTransaction, HierarchicalTransactionService, IGridMergeStrategy, IgxHierarchicalTransactionFactory, IgxOverlayService, ITreeGridRecord, mergeObjects, PlatformUtil, StateUpdateEvent, TransactionEventOrigin, TransactionType, TreeGridFilteringStrategy } from 'igniteui-angular/core';
+import { DefaultTreeGridMergeStrategy, HierarchicalState, HierarchicalTransaction, HierarchicalTransactionService, IGridMergeStrategy, IgxHierarchicalTransactionFactory, IgxOverlayOutletDirective, IgxOverlayService, ITreeGridRecord, mergeObjects, PlatformUtil, StateUpdateEvent, TransactionEventOrigin, TransactionType, TreeGridFilteringStrategy } from 'igniteui-angular/core';
import { IgxTreeGridSummaryPipe } from './tree-grid.summary.pipe';
import { IgxTreeGridFilteringPipe } from './tree-grid.filtering.pipe';
import { IgxTreeGridHierarchizingPipe, IgxTreeGridFlatteningPipe, IgxTreeGridSortingPipe, IgxTreeGridPagingPipe, IgxTreeGridTransactionPipe, IgxTreeGridNormalizeRecordsPipe, IgxTreeGridAddRowPipe } from './tree-grid.pipes';
import { IgxTreeGridRowComponent } from './tree-grid-row.component';
-import { IgxButtonDirective, IgxForOfScrollSyncService, IgxForOfSyncService, IgxGridForOfDirective, IgxOverlayOutletDirective, IgxRippleDirective, IgxScrollInertiaDirective, IgxTemplateOutletDirective, IgxTextHighlightService, IgxToggleDirective } from 'igniteui-angular/directives';
+import { IgxButtonDirective, IgxForOfScrollSyncService, IgxForOfSyncService, IgxGridForOfDirective, IgxRippleDirective, IgxScrollInertiaDirective, IgxTemplateOutletDirective, IgxTextHighlightService, IgxToggleDirective } from 'igniteui-angular/directives';
import { IgxCircularProgressBarComponent } from 'igniteui-angular/progressbar';
import { IgxSnackbarComponent } from 'igniteui-angular/snackbar';
import { IgxIconComponent } from 'igniteui-angular/icon';
diff --git a/projects/igniteui-angular/migrations/migration-collection.json b/projects/igniteui-angular/migrations/migration-collection.json
index 3042c67033e..8a6855db3bb 100644
--- a/projects/igniteui-angular/migrations/migration-collection.json
+++ b/projects/igniteui-angular/migrations/migration-collection.json
@@ -249,9 +249,15 @@
},
"migration-50": {
"version": "21.0.0",
- "description": "Updates Ignite UI for Angular from v20.1.0 to v21.0.0 - migrates to multiple entry points",
- "factory": "./update-21_0_0",
- "schema": "./update-21_0_0/schema.json"
+ "description": "Updates Ignite UI for Angular from v20.1.0 to v21.0.0",
+ "factory": "./update-21_0_0"
+ },
+ "migration-51": {
+ "version": "21.0.0",
+ "description": "Migrates imports to use granular entry points for better tree-shaking",
+ "factory": "./update-21_0_0_import-migration",
+ "recommended": true,
+ "optional": true
}
}
}
diff --git a/projects/igniteui-angular/migrations/update-21_0_0/changes/classes.json b/projects/igniteui-angular/migrations/update-21_0_0/changes/classes.json
index c999683c85f..551e1723dcc 100644
--- a/projects/igniteui-angular/migrations/update-21_0_0/changes/classes.json
+++ b/projects/igniteui-angular/migrations/update-21_0_0/changes/classes.json
@@ -4,6 +4,10 @@
{
"name": "Direction",
"replaceWith": "CarouselAnimationDirection"
+ },
+ {
+ "name": "IgxColumPatternValidatorDirective",
+ "replaceWith": "IgxColumnPatternValidatorDirective"
}
]
}
diff --git a/projects/igniteui-angular/migrations/update-21_0_0/index.ts b/projects/igniteui-angular/migrations/update-21_0_0/index.ts
index 7ecb4cf209b..19db0ecf7d2 100644
--- a/projects/igniteui-angular/migrations/update-21_0_0/index.ts
+++ b/projects/igniteui-angular/migrations/update-21_0_0/index.ts
@@ -1,655 +1,23 @@
import type {
- FileVisitor,
Rule,
SchematicContext,
Tree
} from '@angular-devkit/schematics';
import { UpdateChanges } from '../common/UpdateChanges';
-import * as ts from 'typescript';
const version = '21.0.0';
-// Comprehensive entry point mapping for ALL exports from all 42 entry points
-const ENTRY_POINT_MAP = new Map([
- // Core - Services, Utilities, Types, Enums
- ['IgxOverlayService', 'core'],
- ['IgxNavigationService', 'core'],
- ['IgxFocusTrapDirective', 'core'],
- ['IgxToggleDirective', 'core'],
- ['IgxRippleDirective', 'core'],
- ['IgxDragDirective', 'core'],
- ['IgxDropDirective', 'core'],
- ['DisplayDensity', 'core'],
- ['DisplayDensityToken', 'core'],
- ['DisplayDensityBase', 'core'],
- ['IDisplayDensityOptions', 'core'],
- ['OverlaySettings', 'core'],
- ['PositionSettings', 'core'],
- ['ScrollStrategy', 'core'],
- ['GlobalPositionStrategy', 'core'],
- ['AutoPositionStrategy', 'core'],
- ['ConnectedPositioningStrategy', 'core'],
- ['ElasticPositionStrategy', 'core'],
- ['AbsoluteScrollStrategy', 'core'],
- ['BlockScrollStrategy', 'core'],
- ['CloseScrollStrategy', 'core'],
- ['NoOpScrollStrategy', 'core'],
- ['HorizontalAlignment', 'core'],
- ['VerticalAlignment', 'core'],
- ['PositionStrategy', 'core'],
- ['OverlayEventArgs', 'core'],
- ['OverlayCancelableEventArgs', 'core'],
- ['OverlayClosingEventArgs', 'core'],
- ['OverlayAnimationEventArgs', 'core'],
- ['Size', 'core'],
- ['OffsetMode', 'core'],
- ['ConnectedFit', 'core'],
- ['IFilteringExpressionsTree', 'core'],
- ['IFilteringExpression', 'core'],
- ['FilteringLogic', 'core'],
- ['IFilteringOperation', 'core'],
- ['ISortingExpression', 'core'],
- ['SortingDirection', 'core'],
- ['IGroupingExpression', 'core'],
- ['IGroupByExpandState', 'core'],
- ['IPagingState', 'core'],
- ['PagingError', 'core'],
- ['DataUtil', 'core'],
- ['DatePart', 'core'],
- ['DatePartInfo', 'core'],
- ['DatePickerUtil', 'core'],
- ['IBaseCancelableBrowserEventArgs', 'core'],
- ['IBaseCancelableEventArgs', 'core'],
- ['IBaseEventArgs', 'core'],
- ['ICancelableBrowserEventArgs', 'core'],
- ['ICancelableEventArgs', 'core'],
- ['PlatformUtil', 'core'],
- ['Transaction', 'core'],
- ['TransactionType', 'core'],
- ['IgxTransactionService', 'core'],
- ['State', 'core'],
+export default function migrate(): Rule {
+ return async (host: Tree, context: SchematicContext) => {
+ context.logger.info(`Applying migration for Ignite UI for Angular to version ${version}`);
- // Accordion
- ['IgxAccordionComponent', 'accordion'],
- ['IgxAccordionModule', 'accordion'],
- ['IgxExpansionPanelHeaderComponent', 'accordion'],
- ['IgxExpansionPanelBodyComponent', 'accordion'],
- ['IgxExpansionPanelTitleDirective', 'accordion'],
- ['IgxExpansionPanelDescriptionDirective', 'accordion'],
- ['IgxExpansionPanelIconDirective', 'accordion'],
- ['IAccordionEventArgs', 'accordion'],
- ['IAccordionCancelableEventArgs', 'accordion'],
+ const update = new UpdateChanges(__dirname, host, context);
- // Action Strip
- ['IgxActionStripComponent', 'action-strip'],
- ['IgxActionStripModule', 'action-strip'],
+ context.logger.info('The library now supports granular entry points for better tree-shaking.');
+ context.logger.info('You can continue using the main entry point (igniteui-angular), or');
+ context.logger.info('migrate to granular entry points by running:');
+ context.logger.info(' ng update igniteui-angular --migrate-only --from=20.1.0 --to=21.0.0 --name=migration-51');
- // Avatar
- ['IgxAvatarComponent', 'avatar'],
- ['IgxAvatarModule', 'avatar'],
- ['AvatarType', 'avatar'],
- ['IgxAvatarSize', 'avatar'],
- ['IgxAvatarShape', 'avatar'],
-
- // Badge
- ['IgxBadgeComponent', 'badge'],
- ['IgxBadgeModule', 'badge'],
- ['BadgeType', 'badge'],
- ['IgxBadgeVariant', 'badge'],
-
- // Banner
- ['IgxBannerComponent', 'banner'],
- ['IgxBannerModule', 'banner'],
- ['IgxBannerActionsDirective', 'banner'],
- ['IBannerEventArgs', 'banner'],
- ['IBannerCancelEventArgs', 'banner'],
-
- // Bottom Nav
- ['IgxBottomNavComponent', 'bottom-nav'],
- ['IgxBottomNavModule', 'bottom-nav'],
- ['IgxBottomNavItemComponent', 'bottom-nav'],
- ['IgxBottomNavHeaderComponent', 'bottom-nav'],
- ['IgxBottomNavContentComponent', 'bottom-nav'],
- ['IgxBottomNavHeaderLabelDirective', 'bottom-nav'],
- ['IgxBottomNavHeaderIconDirective', 'bottom-nav'],
- ['IGX_BOTTOM_NAV_DIRECTIVES', 'bottom-nav'],
-
- // Button Group
- ['IgxButtonGroupComponent', 'button-group'],
- ['IgxButtonGroupModule', 'button-group'],
- ['IgxButtonDirective', 'button-group'],
- ['IgxIconButtonDirective', 'button-group'],
- ['IButtonGroupEventArgs', 'button-group'],
-
- // Calendar
- ['IgxCalendarComponent', 'calendar'],
- ['IgxCalendarModule', 'calendar'],
- ['IgxDaysViewComponent', 'calendar'],
- ['IgxMonthsViewComponent', 'calendar'],
- ['IgxYearsViewComponent', 'calendar'],
- ['IgxMonthPickerComponent', 'calendar'],
- ['CalendarSelection', 'calendar'],
- ['ICalendarDate', 'calendar'],
- ['ICalendarViewChangingEventArgs', 'calendar'],
- ['WeekDays', 'calendar'],
-
- // Card
- ['IgxCardComponent', 'card'],
- ['IgxCardModule', 'card'],
- ['IgxCardHeaderComponent', 'card'],
- ['IgxCardMediaDirective', 'card'],
- ['IgxCardContentDirective', 'card'],
- ['IgxCardActionsComponent', 'card'],
- ['IgxCardHeaderTitleDirective', 'card'],
- ['IgxCardHeaderSubtitleDirective', 'card'],
- ['IgxCardThumbnailDirective', 'card'],
- ['IgxCardType', 'card'],
-
- // Carousel
- ['IgxCarouselComponent', 'carousel'],
- ['IgxCarouselModule', 'carousel'],
- ['IgxSlideComponent', 'carousel'],
- ['CarouselAnimationDirection', 'carousel'], // Renamed from Direction
- ['ISlideEventArgs', 'carousel'],
- ['ISlideCarouselBaseEventArgs', 'carousel'],
- ['CarouselAnimationType', 'carousel'],
- ['CarouselIndicatorsOrientation', 'carousel'],
-
- // Checkbox
- ['IgxCheckboxComponent', 'checkbox'],
- ['IgxCheckboxModule', 'checkbox'],
- ['IChangeCheckboxEventArgs', 'checkbox'],
- ['LabelPosition', 'checkbox'],
-
- // Chips
- ['IgxChipsComponent', 'chips'],
- ['IgxChipsModule', 'chips'],
- ['IgxChipComponent', 'chips'],
- ['IgxChipsAreaComponent', 'chips'],
- ['IBaseChipEventArgs', 'chips'],
- ['IChipClickEventArgs', 'chips'],
- ['IChipKeyDownEventArgs', 'chips'],
- ['IChipEnterDragAreaEventArgs', 'chips'],
- ['IChipSelectEventArgs', 'chips'],
-
- // Combo
- ['IgxComboComponent', 'combo'],
- ['IgxComboModule', 'combo'],
- ['IComboSelectionChangingEventArgs', 'combo'],
- ['IComboItemAdditionEvent', 'combo'],
- ['IComboSearchInputEventArgs', 'combo'],
- ['IgxComboState', 'combo'],
-
- // Date Picker
- ['IgxDatePickerComponent', 'date-picker'],
- ['IgxDatePickerModule', 'date-picker'],
- ['InteractionMode', 'date-picker'],
- ['IDatePickerCancelEventArgs', 'date-picker'],
- ['IDatePickerDisabledDateEventArgs', 'date-picker'],
- ['IDatePickerValidationFailedEventArgs', 'date-picker'],
-
- // Date Range Picker
- ['IgxDateRangePickerComponent', 'date-range-picker'],
- ['IgxDateRangePickerModule', 'date-range-picker'],
- ['DateRangeType', 'date-range-picker'],
- ['DateRangeDescriptor', 'date-range-picker'],
- ['IDateRangePickerCancelEventArgs', 'date-range-picker'],
-
- // Dialog
- ['IgxDialogComponent', 'dialog'],
- ['IgxDialogModule', 'dialog'],
- ['IgxDialogActionsDirective', 'dialog'],
- ['IgxDialogTitleDirective', 'dialog'],
- ['IDialogEventArgs', 'dialog'],
- ['IDialogCancelEventArgs', 'dialog'],
-
- // Drop Down
- ['IgxDropDownComponent', 'drop-down'],
- ['IgxDropDownModule', 'drop-down'],
- ['IgxDropDownItemComponent', 'drop-down'],
- ['IgxDropDownGroupComponent', 'drop-down'],
- ['IgxDropDownItemBaseDirective', 'drop-down'],
- ['IgxAutocompleteDirective', 'drop-down'], // Breaking change - moved from directives
- ['ISelectionEventArgs', 'drop-down'],
- ['IDropDownNavigationDirective', 'drop-down'],
-
- // Expansion Panel
- ['IgxExpansionPanelComponent', 'expansion-panel'],
- ['IgxExpansionPanelModule', 'expansion-panel'],
- ['IgxExpansionPanelBase', 'expansion-panel'],
- ['IExpansionPanelEventArgs', 'expansion-panel'],
- ['IExpansionPanelCancelableEventArgs', 'expansion-panel'],
- ['ToggleAnimationSettings', 'expansion-panel'],
-
- // Grids - Components, Services, Types
- // Note: All grid exports are available from 'igniteui-angular/grids'
- // For better tree-shaking, you can use specific grid entry points:
- // - 'igniteui-angular/grids/core' - Shared grid infrastructure (columns, toolbar, etc.)
- // - 'igniteui-angular/grids/grid' - Standard grid (IgxGridComponent)
- // - 'igniteui-angular/grids/tree-grid' - Tree grid (IgxTreeGridComponent)
- // - 'igniteui-angular/grids/hierarchical-grid' - Hierarchical grid (IgxHierarchicalGridComponent, IgxRowIslandComponent)
- // - 'igniteui-angular/grids/pivot-grid' - Pivot grid (IgxPivotGridComponent, IgxPivotDataSelectorComponent)
- ['IgxGridComponent', 'grids/grid'],
- ['IgxTreeGridComponent', 'grids/tree-grid'],
- ['IgxHierarchicalGridComponent', 'grids/hierarchical-grid'],
- ['IgxPivotGridComponent', 'grids/pivot-grid'],
- ['IgxPivotDataSelectorComponent', 'grids/pivot-grid'],
- ['IgxRowIslandComponent', 'grids/hierarchical-grid'],
- ['IgxGridModule', 'grids/grid'],
- ['IgxTreeGridModule', 'grids/tree-grid'],
- ['IgxHierarchicalGridModule', 'grids/hierarchical-grid'],
- ['IgxPivotGridModule', 'grids/pivot-grid'],
- ['IgxColumnComponent', 'grids/core'],
- ['IgxColumnGroupComponent', 'grids/core'],
- ['IgxRowDirective', 'grids/core'],
- ['IgxCellComponent', 'grids/core'],
- ['IgxGridCellComponent', 'grids/core'],
- ['IgxGridHeaderComponent', 'grids/core'],
- ['IgxGridToolbarComponent', 'grids/core'],
- ['IgxGridToolbarActionsComponent', 'grids/core'],
- ['IgxGridToolbarAdvancedFilteringComponent', 'grids/core'],
- ['IgxGridToolbarExporterComponent', 'grids/core'],
- ['IgxGridToolbarHidingComponent', 'grids/core'],
- ['IgxGridToolbarPinningComponent', 'grids/core'],
- ['IgxGridToolbarTitleComponent', 'grids/core'],
- ['GridBaseAPIService', 'grids/core'],
- ['IgxGridAPIService', 'grids/grid'],
- ['IgxTreeGridAPIService', 'grids/tree-grid'],
- ['IgxHierarchicalGridAPIService', 'grids/hierarchical-grid'],
- ['IgxGridSelectionService', 'grids/core'],
- ['IgxGridNavigationService', 'grids/core'],
- ['IgxGridCRUDService', 'grids/core'],
- ['IgxGridSummaryService', 'grids/core'],
- ['IgxFilteringService', 'grids/core'],
- ['IGridCellEventArgs', 'grids/core'],
- ['IGridEditEventArgs', 'grids/core'],
- ['IRowDataEventArgs', 'grids/core'],
- ['IRowSelectionEventArgs', 'grids/core'],
- ['ICellPosition', 'grids/core'],
- ['IColumnResizeEventArgs', 'grids/core'],
- ['IColumnMovingEventArgs', 'grids/core'],
- ['IColumnMovingEndEventArgs', 'grids/core'],
- ['IColumnMovingStartEventArgs', 'grids/core'],
- ['IGridKeydownEventArgs', 'grids/core'],
- ['IRowDragEndEventArgs', 'grids/core'],
- ['IRowDragStartEventArgs', 'grids/core'],
- ['GridSelectionMode', 'grids/core'],
- ['FilterMode', 'grids/core'],
- ['GridSummaryCalculationMode', 'grids/core'],
- ['GridSummaryPosition', 'grids/core'],
- ['RowPinningPosition', 'grids/core'],
- ['ColumnPinningPosition', 'grids/core'],
- ['GridInstanceType', 'grids/core'],
- ['Size', 'core'], // Moved to core
- ['SortingIndexFilteringStrategy', 'grids/core'],
- ['IgxGridEditingActions', 'grids/core'], // Grid actions moved to grids
- ['IgxGridPinningActions', 'grids/core'], // Grid actions moved to grids
- ['IgxGridActionButtonComponent', 'grids/core'], // Grid actions moved to grids
- ['IgxGridActionsBaseDirective', 'grids/core'], // Grid actions moved to grids
- ['IgxGridEditingActionsComponent', 'grids/core'], // Grid actions moved to grids
- ['IgxGridPinningActionsComponent', 'grids/core'], // Grid actions moved to grids
-
- // Icon
- ['IgxIconComponent', 'icon'],
- ['IgxIconModule', 'icon'],
- ['IgxIconService', 'icon'],
- ['IconMeta', 'icon'],
-
- // Input Group
- ['IgxInputGroupComponent', 'input-group'],
- ['IgxInputGroupModule', 'input-group'],
- ['IgxInputDirective', 'input-group'], // Breaking change - moved from directives
- ['IgxLabelDirective', 'input-group'], // Breaking change - moved from directives
- ['IgxHintDirective', 'input-group'], // Breaking change - moved from directives
- ['IgxPrefixDirective', 'input-group'], // Breaking change - moved from directives
- ['IgxSuffixDirective', 'input-group'], // Breaking change - moved from directives
- ['IgxInputState', 'input-group'],
- ['IgxInputGroupType', 'input-group'],
-
- // List
- ['IgxListComponent', 'list'],
- ['IgxListModule', 'list'],
- ['IgxListItemComponent', 'list'],
- ['IgxListHeaderComponent', 'list'],
- ['IListItemClickEventArgs', 'list'],
- ['IgxListPanState', 'list'],
-
- // Navbar
- ['IgxNavbarComponent', 'navbar'],
- ['IgxNavbarModule', 'navbar'],
- ['IgxNavbarActionDirective', 'navbar'],
- ['IgxNavbarTitleDirective', 'navbar'],
-
- // Navigation Drawer
- ['IgxNavigationDrawerComponent', 'navigation-drawer'],
- ['IgxNavigationDrawerModule', 'navigation-drawer'],
- ['IgxNavigationDrawerItemComponent', 'navigation-drawer'],
- ['INavigationDrawerEventArgs', 'navigation-drawer'],
- ['IgxNavDrawerMode', 'navigation-drawer'],
-
- // Paginator
- ['IgxPaginatorComponent', 'paginator'],
- ['IgxPaginatorModule', 'paginator'],
- ['IPageEventArgs', 'paginator'],
- ['IPageCancelableEventArgs', 'paginator'],
-
- // Progressbar
- ['IgxCircularProgressBarComponent', 'progressbar'],
- ['IgxLinearProgressBarComponent', 'progressbar'],
- ['IgxProgressBarModule', 'progressbar'],
- ['IgxProgressType', 'progressbar'],
- ['IgxTextAlign', 'progressbar'],
- ['IgxProgressBarGradientMode', 'progressbar'],
-
- // Query Builder
- ['IgxQueryBuilderComponent', 'query-builder'],
- ['IgxQueryBuilderModule', 'query-builder'],
- ['IExpressionGroup', 'query-builder'],
-
- // Radio
- ['IgxRadioComponent', 'radio'],
- ['IgxRadioModule', 'radio'],
- ['IgxRadioGroupDirective', 'radio'], // Breaking change - moved from directives
-
- // Select
- ['IgxSelectComponent', 'select'],
- ['IgxSelectModule', 'select'],
- ['IgxSelectItemComponent', 'select'],
- ['IgxSelectHeaderDirective', 'select'],
- ['IgxSelectFooterDirective', 'select'],
- ['IgxSelectToggleIconDirective', 'select'],
- ['ISelectionChangedEventArgs', 'select'],
-
- // Simple Combo
- ['IgxSimpleComboComponent', 'simple-combo'],
- ['IgxSimpleComboModule', 'simple-combo'],
-
- // Slider
- ['IgxSliderComponent', 'slider'],
- ['IgxSliderModule', 'slider'],
- ['ISliderValueChangeEventArgs', 'slider'],
- ['IRangeSliderValue', 'slider'],
- ['SliderType', 'slider'],
- ['IgxSliderType', 'slider'],
-
- // Snackbar
- ['IgxSnackbarComponent', 'snackbar'],
- ['IgxSnackbarModule', 'snackbar'],
-
- // Splitter
- ['IgxSplitterComponent', 'splitter'],
- ['IgxSplitterModule', 'splitter'],
- ['IgxSplitterPaneComponent', 'splitter'],
- ['ISplitterEventArgs', 'splitter'],
- ['SplitterType', 'splitter'],
-
- // Stepper
- ['IgxStepperComponent', 'stepper'],
- ['IgxStepperModule', 'stepper'],
- ['IgxStepComponent', 'stepper'],
- ['IStepChangingEventArgs', 'stepper'],
- ['IStepChangedEventArgs', 'stepper'],
- ['IgxStepperOrientation', 'stepper'],
- ['IgxStepType', 'stepper'],
-
- // Switch
- ['IgxSwitchComponent', 'switch'],
- ['IgxSwitchModule', 'switch'],
-
- // Tabs
- ['IgxTabsComponent', 'tabs'],
- ['IgxTabsModule', 'tabs'],
- ['IgxTabItemComponent', 'tabs'],
- ['IgxTabHeaderComponent', 'tabs'],
- ['IgxTabContentComponent', 'tabs'],
- ['IgxTabsGroupComponent', 'tabs'],
- ['ITabsSelectedItemChangeEventArgs', 'tabs'],
- ['IgxTabsType', 'tabs'],
-
- // Time Picker
- ['IgxTimePickerComponent', 'time-picker'],
- ['IgxTimePickerModule', 'time-picker'],
- ['IgxTimePickerActionsDirective', 'time-picker'],
- ['IgxHourItemDirective', 'time-picker'],
- ['IgxMinuteItemDirective', 'time-picker'],
- ['IgxAmPmItemDirective', 'time-picker'],
- ['IgxItemListDirective', 'time-picker'],
-
- // Toast
- ['IgxToastComponent', 'toast'],
- ['IgxToastModule', 'toast'],
- ['IgxToastPosition', 'toast'],
-
- // Tree
- ['IgxTreeComponent', 'tree'],
- ['IgxTreeModule', 'tree'],
- ['IgxTreeNodeComponent', 'tree'],
- ['ITreeNodeSelectionEvent', 'tree'],
- ['ITreeNodeTogglingEventArgs', 'tree'],
- ['IgxTreeSelectionType', 'tree'],
-
- // Directives (re-exports from other entry points)
- ['IgxForOfDirective', 'directives'],
- ['IgxTemplateOutletDirective', 'directives'],
- ['IgxTextSelectionDirective', 'directives'],
- ['IgxTextHighlightDirective', 'directives'],
- ['IgxDateTimeEditorDirective', 'directives'],
- ['IgxMaskDirective', 'directives'],
- ['IgxDividerDirective', 'directives'],
- ['IgxFilterDirective', 'directives'],
- ['IgxButtonDirective', 'directives'],
- ['IgxToggleActionDirective', 'directives'],
- ['IgxLayoutDirective', 'directives'],
- ['IgxFlexDirective', 'directives'],
-]);
-
-// Type renames (old name -> new name and entry point)
-const TYPE_RENAMES = new Map([
- ['Direction', { newName: 'CarouselAnimationDirection', entryPoint: 'carousel' }],
-]);
-
-function migrateImportDeclaration(node: ts.ImportDeclaration, sourceFile: ts.SourceFile): { start: number, end: number, replacement: string } | null {
- const moduleSpecifier = node.moduleSpecifier;
- if (!ts.isStringLiteral(moduleSpecifier)) {
- return null;
- }
-
- const importPath = moduleSpecifier.text;
-
- // Only process igniteui-angular imports (not already using entry points)
- if (importPath !== 'igniteui-angular') {
- return null;
- }
-
- const importClause = node.importClause;
- if (!importClause || !importClause.namedBindings) {
- return null;
- }
-
- if (!ts.isNamedImports(importClause.namedBindings)) {
- return null;
- }
-
- // Group imports by entry point
- const entryPointGroups = new Map();
-
- for (const element of importClause.namedBindings.elements) {
- const name = element.name.text;
- const alias = element.propertyName?.text;
- const importName = alias || name;
- let actualImportName = importName;
-
- // Check if this is a renamed type
- if (TYPE_RENAMES.has(importName)) {
- const rename = TYPE_RENAMES.get(importName)!;
- actualImportName = rename.newName;
- }
-
- const fullImport = alias ? `${actualImportName} as ${name}` : actualImportName;
-
- // Determine target entry point
- let targetEntryPoint = 'core'; // Default to core
-
- // Check if it's a renamed type first
- if (TYPE_RENAMES.has(importName)) {
- targetEntryPoint = TYPE_RENAMES.get(importName)!.entryPoint;
- } else if (ENTRY_POINT_MAP.has(importName)) {
- targetEntryPoint = ENTRY_POINT_MAP.get(importName)!;
- }
-
- if (!entryPointGroups.has(targetEntryPoint)) {
- entryPointGroups.set(targetEntryPoint, []);
- }
- entryPointGroups.get(targetEntryPoint)!.push(fullImport);
- }
-
- // Generate new import statements
- const newImports: string[] = [];
- for (const [entryPoint, imports] of entryPointGroups) {
- const sortedImports = imports.sort();
- newImports.push(`import { ${sortedImports.join(', ')} } from 'igniteui-angular/${entryPoint}';`);
- }
-
- return {
- start: node.getStart(sourceFile),
- end: node.getEnd(),
- replacement: newImports.join('\n')
+ update.applyChanges();
};
}
-
-function migrateFile(filePath: string, content: string): string {
- const sourceFile = ts.createSourceFile(
- filePath,
- content,
- ts.ScriptTarget.Latest,
- true
- );
-
- const changes: { start: number, end: number, replacement: string }[] = [];
-
- // Track which old type names are imported in this file
- const importedOldTypes = new Set();
-
- function visit(node: ts.Node) {
- if (ts.isImportDeclaration(node)) {
- const change = migrateImportDeclaration(node, sourceFile);
- if (change) {
- changes.push(change);
-
- // Track old type names that were imported
- const moduleSpecifier = node.moduleSpecifier;
- if (ts.isStringLiteral(moduleSpecifier) && moduleSpecifier.text === 'igniteui-angular') {
- const importClause = node.importClause;
- if (importClause?.namedBindings && ts.isNamedImports(importClause.namedBindings)) {
- for (const element of importClause.namedBindings.elements) {
- const importName = element.propertyName?.text || element.name.text;
- if (TYPE_RENAMES.has(importName)) {
- importedOldTypes.add(importName);
- }
- }
- }
- }
- }
- } else if (ts.isIdentifier(node) && importedOldTypes.has(node.text)) {
- // Rename type references in the code (but only if not aliased in import)
- const oldName = node.text;
- const rename = TYPE_RENAMES.get(oldName)!;
-
- // Check if this identifier is part of an import statement
- // We don't want to rename it there as we already handled it
- let isInImport = false;
- let parent = node.parent;
- while (parent) {
- if (ts.isImportDeclaration(parent)) {
- isInImport = true;
- break;
- }
- parent = parent.parent;
- }
-
- if (!isInImport) {
- changes.push({
- start: node.getStart(sourceFile),
- end: node.getEnd(),
- replacement: rename.newName
- });
- }
- }
-
- ts.forEachChild(node, visit);
- }
-
- visit(sourceFile);
-
- // Apply changes in reverse order to maintain positions
- changes.sort((a, b) => b.start - a.start);
-
- let result = content;
- for (const change of changes) {
- result = result.substring(0, change.start) + change.replacement + result.substring(change.end);
- }
-
- return result;
-}
-
-interface MigrationOptions {
- migrateImports?: boolean;
-}
-
-export default (options: MigrationOptions = {}): Rule => async (host: Tree, context: SchematicContext) => {
- context.logger.info(`Applying migration for Ignite UI for Angular to version ${version}`);
-
- const update = new UpdateChanges(__dirname, host, context);
- const shouldMigrateImports = options.migrateImports !== false; // Default to true if not specified
-
- if (shouldMigrateImports) {
- context.logger.info('Migrating imports to new entry points...');
-
- const visit: FileVisitor = (filePath) => {
- // Only process TypeScript files
- if (!filePath.endsWith('.ts')) {
- return;
- }
-
- // Skip node_modules and dist
- if (filePath.includes('node_modules') || filePath.includes('dist')) {
- return;
- }
-
- const content = host.read(filePath);
- if (!content) {
- return;
- }
-
- const originalContent = content.toString();
-
- // Check if file has igniteui-angular imports
- if (!originalContent.includes("from 'igniteui-angular'") && !originalContent.includes('from "igniteui-angular"')) {
- return;
- }
-
- const migratedContent = migrateFile(filePath, originalContent);
-
- if (migratedContent !== originalContent) {
- host.overwrite(filePath, migratedContent);
- context.logger.info(` ✓ Migrated ${filePath}`);
- }
- };
-
- host.visit(visit);
-
- context.logger.info('Migration complete!');
- context.logger.info('Breaking changes:');
- context.logger.info(' - Input directives moved to igniteui-angular/input-group');
- context.logger.info(' - IgxAutocompleteDirective moved to igniteui-angular/drop-down');
- context.logger.info(' - IgxRadioGroupDirective moved to igniteui-angular/radio');
- context.logger.info('Type renames:');
- context.logger.info(' - Direction → CarouselAnimationDirection');
- } else {
- context.logger.info('Skipping import migration. You can continue using the main entry point.');
- context.logger.info('Note: The library now supports granular entry points for better tree-shaking.');
- context.logger.info('To migrate later, run: ng update igniteui-angular --migrate-only --from=20.1.0 --to=21.0.0');
- }
-
- update.applyChanges();
-};
diff --git a/projects/igniteui-angular/migrations/update-21_0_0/schema.json b/projects/igniteui-angular/migrations/update-21_0_0/schema.json
deleted file mode 100644
index 5bc139f345b..00000000000
--- a/projects/igniteui-angular/migrations/update-21_0_0/schema.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "$schema": "http://json-schema.org/schema",
- "$id": "igniteui-angular-migration-21",
- "title": "Update to version 21.0.0",
- "type": "object",
- "properties": {
- "migrateImports": {
- "type": "boolean",
- "description": "Migrate imports to use granular entry points (e.g., 'igniteui-angular/grids' instead of 'igniteui-angular'). The library remains backwards compatible - you can continue using the main entry point.",
- "default": true,
- "x-prompt": "Would you like to migrate your imports to use the new granular entry points for better tree-shaking? (The library remains backwards compatible if you choose 'No')"
- }
- }
-}
diff --git a/projects/igniteui-angular/migrations/update-21_0_0_import-migration/index.ts b/projects/igniteui-angular/migrations/update-21_0_0_import-migration/index.ts
new file mode 100644
index 00000000000..fc7f6e604bc
--- /dev/null
+++ b/projects/igniteui-angular/migrations/update-21_0_0_import-migration/index.ts
@@ -0,0 +1,843 @@
+import type {
+ FileVisitor,
+ Rule,
+ SchematicContext,
+ Tree
+} from '@angular-devkit/schematics';
+import * as ts from 'typescript';
+
+const version = '21.0.0';
+
+// Comprehensive entry point mapping for ALL exports from all 42 entry points
+const ENTRY_POINT_MAP = new Map([
+ // Core - Services, Utilities, Types, Enums
+ // ['IgxOverlayService', 'core'],
+ // ['IgxNavigationService', 'core'],
+ // ['DisplayDensity', 'core'],
+ // ['DisplayDensityToken', 'core'],
+ // ['DisplayDensityBase', 'core'],
+ // ['IDisplayDensityOptions', 'core'],
+ // ['OverlaySettings', 'core'],
+ // ['PositionSettings', 'core'],
+ // ['ScrollStrategy', 'core'],
+ // ['GlobalPositionStrategy', 'core'],
+ // ['AutoPositionStrategy', 'core'],
+ // ['ConnectedPositioningStrategy', 'core'],
+ // ['ElasticPositionStrategy', 'core'],
+ // ['AbsoluteScrollStrategy', 'core'],
+ // ['BlockScrollStrategy', 'core'],
+ // ['CloseScrollStrategy', 'core'],
+ // ['NoOpScrollStrategy', 'core'],
+ // ['HorizontalAlignment', 'core'],
+ // ['VerticalAlignment', 'core'],
+ // ['PositionStrategy', 'core'],
+ // ['OverlayEventArgs', 'core'],
+ // ['OverlayCancelableEventArgs', 'core'],
+ // ['OverlayClosingEventArgs', 'core'],
+ // ['OverlayAnimationEventArgs', 'core'],
+ // ['Size', 'core'],
+ // ['OffsetMode', 'core'],
+ // ['ConnectedFit', 'core'],
+ // ['IFilteringExpressionsTree', 'core'],
+ // ['IFilteringExpression', 'core'],
+ // ['FilteringLogic', 'core'],
+ // ['IFilteringOperation', 'core'],
+ // ['ISortingExpression', 'core'],
+ // ['SortingDirection', 'core'],
+ // ['IGroupingExpression', 'core'],
+ // ['IGroupByExpandState', 'core'],
+ // ['IPagingState', 'core'],
+ // ['PagingError', 'core'],
+ // ['DataUtil', 'core'],
+ // ['DatePart', 'core'],
+ // ['DatePartInfo', 'core'],
+ // ['DatePickerUtil', 'core'],
+ // ['IBaseCancelableBrowserEventArgs', 'core'],
+ // ['IBaseCancelableEventArgs', 'core'],
+ // ['IBaseEventArgs', 'core'],
+ // ['ICancelableBrowserEventArgs', 'core'],
+ // ['ICancelableEventArgs', 'core'],
+ // ['PlatformUtil', 'core'],
+ // ['Transaction', 'core'],
+ // ['TransactionType', 'core'],
+ // ['IgxTransactionService', 'core'],
+ // ['State', 'core'],
+
+ // Accordion
+ ['IgxAccordionComponent', 'accordion'],
+ ['IgxAccordionModule', 'accordion'],
+ ['IGX_ACCORDION_DIRECTIVES', 'accordion'],
+ ['IAccordionEventArgs', 'accordion'],
+ ['IAccordionCancelableEventArgs', 'accordion'],
+
+ // Action Strip
+ ['IgxActionStripComponent', 'action-strip'],
+ ['IgxActionStripModule', 'action-strip'],
+ ['IGX_ACTION_STRIP_DIRECTIVES', 'action-strip'],
+ ['IgxActionStripMenuItemDirective', 'action-strip'],
+
+ // Avatar
+ ['IgxAvatarComponent', 'avatar'],
+ ['IgxAvatarModule', 'avatar'],
+ ['AvatarType', 'avatar'],
+ ['IgxAvatarSize', 'avatar'],
+ ['IgxAvatarShape', 'avatar'],
+
+ // Badge
+ ['IgxBadgeComponent', 'badge'],
+ ['IgxBadgeModule', 'badge'],
+ ['BadgeType', 'badge'],
+ ['IgxBadgeVariant', 'badge'],
+
+ // Banner
+ ['IgxBannerComponent', 'banner'],
+ ['IgxBannerModule', 'banner'],
+ ['IGX_BANNER_DIRECTIVES', 'banner'],
+ ['IgxBannerActionsDirective', 'banner'],
+ ['IBannerEventArgs', 'banner'],
+ ['IBannerCancelEventArgs', 'banner'],
+
+ // Bottom Nav
+ ['IgxBottomNavComponent', 'bottom-nav'],
+ ['IgxBottomNavModule', 'bottom-nav'],
+ ['IgxBottomNavItemComponent', 'bottom-nav'],
+ ['IgxBottomNavHeaderComponent', 'bottom-nav'],
+ ['IgxBottomNavContentComponent', 'bottom-nav'],
+ ['IgxBottomNavHeaderLabelDirective', 'bottom-nav'],
+ ['IgxBottomNavHeaderIconDirective', 'bottom-nav'],
+ ['IGX_BOTTOM_NAV_DIRECTIVES', 'bottom-nav'],
+
+ // Button Group
+ ['IgxButtonGroupComponent', 'button-group'],
+ ['IgxButtonGroupModule', 'button-group'],
+ ['IGX_BUTTON_GROUP_DIRECTIVES', 'button-group'],
+ ['IgxButtonDirective', 'button-group'],
+ ['IgxIconButtonDirective', 'button-group'],
+ ['IButtonGroupEventArgs', 'button-group'],
+ ['ButtonGroupAlignment', 'button-group'],
+
+ // Calendar
+ ['IgxCalendarComponent', 'calendar'],
+ ['IgxCalendarModule', 'calendar'],
+ ['IGX_CALENDAR_DIRECTIVES', 'calendar'],
+ ['IgxDaysViewComponent', 'calendar'],
+ ['IgxMonthsViewComponent', 'calendar'],
+ ['IgxYearsViewComponent', 'calendar'],
+ ['IgxMonthPickerComponent', 'calendar'],
+ ['CalendarSelection', 'calendar'],
+ ['ICalendarDate', 'calendar'],
+ ['ICalendarViewChangingEventArgs', 'calendar'],
+ ['WeekDays', 'calendar'],
+ ['IFormattingOptions', 'calendar'],
+ ['IgxCalendarView', 'calendar'],
+ ['IgxCalendarHeaderTemplateDirective', 'calendar'],
+ ['IgxCalendarSubheaderTemplateDirective', 'calendar'],
+ ['IViewDateChangeEventArgs', 'calendar'],
+
+ // Card
+ ['IgxCardComponent', 'card'],
+ ['IgxCardModule', 'card'],
+ ['IGX_CARD_DIRECTIVES', 'card'],
+ ['IgxCardHeaderComponent', 'card'],
+ ['IgxCardMediaDirective', 'card'],
+ ['IgxCardContentDirective', 'card'],
+ ['IgxCardActionsComponent', 'card'],
+ ['IgxCardHeaderTitleDirective', 'card'],
+ ['IgxCardHeaderSubtitleDirective', 'card'],
+ ['IgxCardThumbnailDirective', 'card'],
+ ['IgxCardType', 'card'],
+
+ // Carousel
+ ['IgxCarouselComponent', 'carousel'],
+ ['IgxCarouselModule', 'carousel'],
+ ['IGX_CAROUSEL_DIRECTIVES', 'carousel'],
+ ['IgxSlideComponent', 'carousel'],
+ ['CarouselAnimationDirection', 'carousel'], // Renamed from Direction
+ ['ISlideEventArgs', 'carousel'],
+ ['ISlideCarouselBaseEventArgs', 'carousel'],
+ ['CarouselAnimationType', 'carousel'],
+ ['CarouselIndicatorsOrientation', 'carousel'],
+
+ // Checkbox
+ ['IgxCheckboxComponent', 'checkbox'],
+ ['IgxCheckboxModule', 'checkbox'],
+ ['IChangeCheckboxEventArgs', 'checkbox'],
+ ['LabelPosition', 'checkbox'],
+
+ // Chips
+ ['IgxChipsComponent', 'chips'],
+ ['IgxChipsModule', 'chips'],
+ ['IGX_CHIPS_DIRECTIVES', 'chips'],
+ ['IgxChipComponent', 'chips'],
+ ['IgxChipsAreaComponent', 'chips'],
+ ['IBaseChipEventArgs', 'chips'],
+ ['IChipClickEventArgs', 'chips'],
+ ['IChipKeyDownEventArgs', 'chips'],
+ ['IChipEnterDragAreaEventArgs', 'chips'],
+ ['IChipSelectEventArgs', 'chips'],
+ ['IChipsAreaReorderEventArgs', 'chips'],
+
+ // Combo
+ ['IgxComboComponent', 'combo'],
+ ['IgxComboModule', 'combo'],
+ ['IGX_COMBO_DIRECTIVES', 'combo'],
+ ['IComboSelectionChangingEventArgs', 'combo'],
+ ['IComboItemAdditionEvent', 'combo'],
+ ['IComboSearchInputEventArgs', 'combo'],
+ ['IgxComboState', 'combo'],
+ ['IgxComboClearIconDirective', 'combo'],
+ ['IgxComboItemDirective', 'combo'],
+ ['IgxComboAddItemDirective', 'combo'],
+ ['IgxComboEmptyDirective', 'combo'],
+ ['IgxComboFooterDirective', 'combo'],
+ ['IgxComboHeaderDirective', 'combo'],
+ ['IgxComboHeaderItemDirective', 'combo'],
+ ['IgxComboToggleIconDirective', 'combo'],
+
+ // Date and Date Range Picker
+ ['IgxDatePickerComponent', 'date-picker'],
+ ['IgxDatePickerModule', 'date-picker'],
+ ['IGX_DATE_PICKER_DIRECTIVES', 'date-picker'],
+ ['IGX_DATE_RANGE_PICKER_DIRECTIVES', 'date-picker'],
+ ['InteractionMode', 'date-picker'],
+ ['IDatePickerCancelEventArgs', 'date-picker'],
+ ['IDatePickerDisabledDateEventArgs', 'date-picker'],
+ ['IDatePickerValidationFailedEventArgs', 'date-picker'],
+ ['IgxDateRangePickerComponent', 'date-picker'],
+ ['IgxDateRangePickerModule', 'date-picker'],
+ ['DateRangeDescriptor', 'date-picker'],
+ ['IDateRangePickerCancelEventArgs', 'date-picker'],
+ ['IgxDateRangeEndComponent', 'date-picker'],
+ ['IgxDateRangeStartComponent', 'date-picker'],
+
+ // Dialog
+ ['IgxDialogComponent', 'dialog'],
+ ['IgxDialogModule', 'dialog'],
+ ['IGX_DIALOG_DIRECTIVES', 'dialog'],
+ ['IgxDialogActionsDirective', 'dialog'],
+ ['IgxDialogTitleDirective', 'dialog'],
+ ['IDialogEventArgs', 'dialog'],
+ ['IDialogCancelEventArgs', 'dialog'],
+
+ // Drop Down
+ ['IgxDropDownComponent', 'drop-down'],
+ ['IgxDropDownModule', 'drop-down'],
+ ['IGX_DROP_DOWN_DIRECTIVES', 'drop-down'],
+ ['IgxDropDownItemComponent', 'drop-down'],
+ ['IgxDropDownGroupComponent', 'drop-down'],
+ ['IgxDropDownItemBaseDirective', 'drop-down'],
+ ['IgxAutocompleteDirective', 'drop-down'], // Breaking change - moved from directives
+ ['ISelectionEventArgs', 'drop-down'],
+ ['IDropDownNavigationDirective', 'drop-down'],
+ ['IgxDropDownItemNavigationDirective', 'drop-down'],
+ ['IgxAutocompleteModule', 'drop-down'],
+
+ // Expansion Panel
+ ['IgxExpansionPanelComponent', 'expansion-panel'],
+ ['IgxExpansionPanelModule', 'expansion-panel'],
+ ['IGX_EXPANSION_PANEL_DIRECTIVES', 'expansion-panel'],
+ ['IgxExpansionPanelBase', 'expansion-panel'],
+ ['IExpansionPanelEventArgs', 'expansion-panel'],
+ ['IExpansionPanelCancelableEventArgs', 'expansion-panel'],
+ ['IgxExpansionPanelHeaderComponent', 'expansion-panel'],
+ ['IgxExpansionPanelBodyComponent', 'expansion-panel'],
+ ['IgxExpansionPanelTitleDirective', 'expansion-panel'],
+ ['IgxExpansionPanelDescriptionDirective', 'expansion-panel'],
+ ['IgxExpansionPanelIconDirective', 'expansion-panel'],
+ ['ToggleAnimationSettings', 'expansion-panel'],
+
+ // Grids - Components, Services, Types
+ // Note: All grid exports are available from 'igniteui-angular/grids'
+ // For better tree-shaking, you can use specific grid entry points:
+ // - 'igniteui-angular/grids/core' - Shared grid infrastructure (columns, toolbar, etc.)
+ // - 'igniteui-angular/grids/grid' - Standard grid (IgxGridComponent)
+ // - 'igniteui-angular/grids/tree-grid' - Tree grid (IgxTreeGridComponent)
+ // - 'igniteui-angular/grids/hierarchical-grid' - Hierarchical grid (IgxHierarchicalGridComponent, IgxRowIslandComponent)
+ // - 'igniteui-angular/grids/pivot-grid' - Pivot grid (IgxPivotGridComponent, IgxPivotDataSelectorComponent)
+ ['IgxGridComponent', 'grids/grid'],
+ ['IGX_GRID_DIRECTIVES', 'grids/grid'],
+ ['IgxTreeGridComponent', 'grids/tree-grid'],
+ ['IGX_TREE_GRID_DIRECTIVES', 'grids/tree-grid'],
+ ['IgxHierarchicalGridComponent', 'grids/hierarchical-grid'],
+ ['IGX_HIERARCHICAL_GRID_DIRECTIVES', 'grids/hierarchical-grid'],
+ ['IgxPivotGridComponent', 'grids/pivot-grid'],
+ ['IGX_PIVOT_GRID_DIRECTIVES', 'grids/pivot-grid'],
+ ['IgxPivotDataSelectorComponent', 'grids/pivot-grid'],
+ ['IgxRowIslandComponent', 'grids/hierarchical-grid'],
+ ['IgxGridModule', 'grids/grid'],
+ ['IgxTreeGridModule', 'grids/tree-grid'],
+ ['IgxHierarchicalGridModule', 'grids/hierarchical-grid'],
+ ['IgxPivotGridModule', 'grids/pivot-grid'],
+ ['IgxColumnComponent', 'grids/core'],
+ ['IgxColumnGroupComponent', 'grids/core'],
+ ['IgxCollapsibleIndicatorTemplateDirective', 'grids/core'],
+ ['IgxRowDirective', 'grids/core'],
+ ['IgxCellComponent', 'grids/core'],
+ ['IgxGridCellComponent', 'grids/core'],
+ ['IgxGridHeaderComponent', 'grids/core'],
+ ['IgxGridToolbarComponent', 'grids/core'],
+ ['IgxGridToolbarActionsComponent', 'grids/core'],
+ ['IgxGridToolbarAdvancedFilteringComponent', 'grids/core'],
+ ['IgxGridToolbarExporterComponent', 'grids/core'],
+ ['IgxGridToolbarHidingComponent', 'grids/core'],
+ ['IgxGridToolbarPinningComponent', 'grids/core'],
+ ['IgxGridToolbarTitleComponent', 'grids/core'],
+ ['GridBaseAPIService', 'grids/core'],
+ ['IgxGridAPIService', 'grids/grid'],
+ ['IgxTreeGridAPIService', 'grids/tree-grid'],
+ ['IgxHierarchicalGridAPIService', 'grids/hierarchical-grid'],
+ ['IgxGridSelectionService', 'grids/core'],
+ ['IgxGridNavigationService', 'grids/core'],
+ ['IgxGridCRUDService', 'grids/core'],
+ ['IgxGridSummaryService', 'grids/core'],
+ ['IgxFilteringService', 'grids/core'],
+ ['IGridCellEventArgs', 'grids/core'],
+ ['IGridEditEventArgs', 'grids/core'],
+ ['IRowDataEventArgs', 'grids/core'],
+ ['IRowSelectionEventArgs', 'grids/core'],
+ ['ICellPosition', 'grids/core'],
+ ['IColumnResizeEventArgs', 'grids/core'],
+ ['IColumnMovingEventArgs', 'grids/core'],
+ ['IColumnMovingEndEventArgs', 'grids/core'],
+ ['IColumnMovingStartEventArgs', 'grids/core'],
+ ['IGridKeydownEventArgs', 'grids/core'],
+ ['IRowDragEndEventArgs', 'grids/core'],
+ ['IRowDragStartEventArgs', 'grids/core'],
+ ['GridSelectionMode', 'grids/core'],
+ ['FilterMode', 'grids/core'],
+ ['GridSummaryPosition', 'grids/core'],
+ ['RowPinningPosition', 'grids/core'],
+ ['GridInstanceType', 'grids/core'],
+ ['IgxSummaryOperand', 'grids/core'],
+ ['IgxNumberSummaryOperand', 'grids/core'],
+ ['IgxDateSummaryOperand', 'grids/core'],
+ ['IgxSummaryTemplateDirective', 'grids/core'],
+ ['IgxCellTemplateDirective', 'grids/core'],
+ ['IgxCellHeaderTemplateDirective', 'grids/core'],
+ ['IgxFilterCellTemplateDirective', 'grids/core'],
+ ['IGridFormGroupCreatedEventArgs', 'grids/core'],
+ ['IgxCellValidationErrorDirective', 'grids/core'],
+ ['IgxColumnMaxValidatorDirective', 'grids/core'],
+ ['IgxColumnMinValidatorDirective', 'grids/core'],
+ ['IgxColumnEmailValidatorDirective', 'grids/core'],
+ ['IgxColumnMinLengthValidatorDirective', 'grids/core'],
+ ['IgxColumnMaxLengthValidatorDirective', 'grids/core'],
+ ['IgxColumnPatternValidatorDirective', 'grids/core'],
+ ['IgxColumnRequiredValidatorDirective', 'grids/core'],
+ ['CellType', 'grids/core'],
+ ['IPinningConfig', 'grids/core'],
+ ['RowType', 'grids/core'],
+ ['IgxCellEditorTemplateDirective', 'grids/core'],
+ ['IGridToolbarExportEventArgs', 'grids/core'],
+ ['SortingIndexFilteringStrategy', 'grids/core'],
+ ['IgxHeadSelectorDirective', 'grids/core'],
+ ['IgxRowSelectorDirective', 'grids/core'],
+ ['GridFeatures', 'grids/core'],
+ ['IGridState', 'grids/core'],
+ ['IGridStateOptions', 'grids/core'],
+ ['IgxGridStateDirective', 'grids/core'],
+ ['IgxRowEditActionsDirective', 'grids/core'],
+ ['IgxRowEditTabStopDirective', 'grids/core'],
+ ['IgxRowEditTextDirective', 'grids/core'],
+ ['IgxRowAddTextDirective', 'grids/core'],
+ ['GridPagingMode', 'grids/core'],
+ ['IgxAdvancedFilteringDialogComponent', 'grids/core'],
+ ['IgxExcelStyleColumnOperationsTemplateDirective', 'grids/core'],
+ ['IgxExcelStyleFilterOperationsTemplateDirective', 'grids/core'],
+ ['IgxExcelStyleLoadingValuesTemplateDirective', 'grids/core'],
+ ['IgxExcelStyleHeaderComponent', 'grids/core'],
+ ['IgxExcelStyleHeaderIconDirective', 'grids/core'],
+ ['IgxExcelStyleSearchComponent', 'grids/core'],
+ ['IgxExcelStyleSortingComponent', 'grids/core'],
+ ['IgxExcelStylePinningComponent', 'grids/core'],
+ ['IgxGridExcelStyleFilteringComponent', 'grids/core'],
+ ['IgxExcelTextDirective', 'grids/core'],
+ ['IgxCSVTextDirective', 'grids/core'],
+ ['GridCellMergeMode', 'grids/core'],
+ ['IActiveNodeChangeEventArgs', 'grids/core'],
+ ['IPivotAggregator', 'grids/core'],
+ ['PivotAggregation', 'grids/core'],
+ ['PivotAggregationType', 'grids/core'],
+ ['PivotRowLayoutType', 'grids/core'],
+ ['IPivotConfiguration', 'grids/core'],
+ ['IPivotDimension', 'grids/core'],
+ ['IPivotDimensionData', 'grids/core'],
+ ['IPivotValue', 'grids/core'],
+ ['IgxPivotDateDimension', 'grids/core'],
+ ['IgxPivotAggregate', 'grids/core'],
+ ['IgxPivotNumericAggregate', 'grids/core'],
+ ['IgxPivotDateAggregate', 'grids/core'],
+ ['IgxPivotTimeAggregate', 'grids/core'],
+ ['IPivotUISettings', 'grids/core'],
+ ['PivotSummaryPosition', 'grids/core'],
+ ['NoopPivotDimensionsStrategy', 'grids/core'],
+ ['IgxGridToolbarDirective', 'grids/core'],
+ ['IgxGroupByRowTemplateDirective', 'grids/core'],
+ ['IgxGridDetailTemplateDirective', 'grids/core'],
+ ['GridType', 'grids/core'],
+ ['IGX_GRID_BASE', 'grids/core'],
+ ['IColumnSelectionEventArgs', 'grids/core'],
+ ['IgxDragIndicatorIconDirective', 'grids/core'],
+ ['IgxRowDragGhostDirective', 'grids/core'],
+ ['IgxGridFooterComponent', 'grids/core'],
+ ['IgxColumnLayoutComponent', 'grids/core'],
+ ['IgxExporterEvent', 'grids/core'],
+ ['IGridEditDoneEventArgs', 'grids/core'],
+ ['IgxGridRow', 'grids/core'],
+ ['IgxGridEditingActions', 'grids/core'], // Grid actions moved to grids
+ ['IgxGridPinningActions', 'grids/core'], // Grid actions moved to grids
+ ['IgxGridActionButtonComponent', 'grids/core'], // Grid actions moved to grids
+ ['IgxGridActionsBaseDirective', 'grids/core'], // Grid actions moved to grids
+ ['IgxGridEditingActionsComponent', 'grids/core'], // Grid actions moved to grids
+ ['IgxGridPinningActionsComponent', 'grids/core'], // Grid actions moved to grids
+ ['IgxColumnActionsComponent', 'grids/core'],
+ ['IgxColumnHidingDirective', 'grids/core'],
+ ['IgxColumnPinningDirective', 'grids/core'],
+ ['IgxTreeGridGroupByAreaComponent', 'grids/tree-grid'],
+ ['ITreeGridAggregation', 'grids/tree-grid'],
+ ['IgxGroupedTreeGridSorting', 'grids/tree-grid'],
+ ['IgxTreeGridGroupingPipe', 'grids/tree-grid'],
+ ['IGridCreatedEventArgs', 'grids/hierarchical-grid'],
+
+ // Icon
+ ['IgxIconComponent', 'icon'],
+ ['IgxIconModule', 'icon'],
+ ['IgxIconService', 'icon'],
+ ['IconMeta', 'icon'],
+
+ // Input Group
+ ['IgxInputGroupComponent', 'input-group'],
+ ['IgxInputGroupModule', 'input-group'],
+ ['IGX_INPUT_GROUP_DIRECTIVES', 'input-group'],
+ ['IgxInputDirective', 'input-group'], // Breaking change - moved from directives
+ ['IgxLabelDirective', 'input-group'], // Breaking change - moved from directives
+ ['IgxHintDirective', 'input-group'], // Breaking change - moved from directives
+ ['IgxPrefixDirective', 'input-group'], // Breaking change - moved from directives
+ ['IgxSuffixDirective', 'input-group'], // Breaking change - moved from directives
+ ['IgxInputState', 'input-group'],
+ ['IgxInputGroupType', 'input-group'],
+ ['IGX_INPUT_GROUP_TYPE', 'input-group'],
+
+ // List
+ ['IgxListComponent', 'list'],
+ ['IgxListModule', 'list'],
+ ['IGX_LIST_DIRECTIVES', 'list'],
+ ['IgxListItemComponent', 'list'],
+ ['IgxListHeaderComponent', 'list'],
+ ['IListItemClickEventArgs', 'list'],
+ ['IgxListPanState', 'list'],
+ ['IgxEmptyListTemplateDirective', 'list'],
+ ['IgxListLineDirective', 'list'],
+ ['IgxListLineSubTitleDirective', 'list'],
+ ['IgxListLineTitleDirective', 'list'],
+ ['IgxDataLoadingTemplateDirective', 'list'],
+ ['IgxListActionDirective', 'list'],
+ ['IgxListThumbnailDirective', 'list'],
+ ['IgxListItemLeftPanningTemplateDirective', 'list'],
+ ['IgxListItemRightPanningTemplateDirective', 'list'],
+
+ // Navbar
+ ['IgxNavbarComponent', 'navbar'],
+ ['IgxNavbarModule', 'navbar'],
+ ['IGX_NAVBAR_DIRECTIVES', 'navbar'],
+ ['IgxNavbarActionDirective', 'navbar'],
+ ['IgxNavbarTitleDirective', 'navbar'],
+
+ // Navigation Drawer
+ ['IgxNavigationDrawerComponent', 'navigation-drawer'],
+ ['IgxNavigationDrawerModule', 'navigation-drawer'],
+ ['IGX_NAVIGATION_DRAWER_DIRECTIVES', 'navigation-drawer'],
+ ['IgxNavigationDrawerItemComponent', 'navigation-drawer'],
+ ['INavigationDrawerEventArgs', 'navigation-drawer'],
+ ['IgxNavDrawerMode', 'navigation-drawer'],
+ ['IgxNavDrawerItemDirective', 'navigation-drawer'],
+ ['IgxNavDrawerTemplateDirective', 'navigation-drawer'],
+ ['IgxNavDrawerMiniTemplateDirective', 'navigation-drawer'],
+
+ // Paginator
+ ['IgxPaginatorComponent', 'paginator'],
+ ['IGX_PAGINATOR_DIRECTIVES', 'paginator'],
+ ['IgxPaginatorDirective', 'paginator'],
+ ['IgxPageNavigationComponent', 'paginator'],
+ ['IgxPageSizeSelectorComponent', 'paginator'],
+ ['IgxPaginatorContentDirective', 'paginator'],
+ ['IgxPaginatorModule', 'paginator'],
+ ['IPageEventArgs', 'paginator'],
+ ['IPageCancelableEventArgs', 'paginator'],
+
+ // Progressbar
+ ['IgxCircularProgressBarComponent', 'progressbar'],
+ ['IgxLinearProgressBarComponent', 'progressbar'],
+ ['IgxProgressBarModule', 'progressbar'],
+ ['IGX_PROGRESS_BAR_DIRECTIVES', 'progressbar'],
+ ['IgxProgressType', 'progressbar'],
+ ['IgxTextAlign', 'progressbar'],
+ ['IgxProgressBarGradientMode', 'progressbar'],
+ ['IgxProgressBarGradientDirective', 'progressbar'],
+
+ // Query Builder
+ ['IgxQueryBuilderComponent', 'query-builder'],
+ ['IgxQueryBuilderModule', 'query-builder'],
+ ['IGX_QUERY_BUILDER_DIRECTIVES', 'query-builder'],
+ ['IExpressionGroup', 'query-builder'],
+ ['IgxQueryBuilderHeaderComponent', 'query-builder'],
+ ['IgxQueryBuilderSearchValueTemplateDirective', 'query-builder'],
+
+ // Radio
+ ['IgxRadioComponent', 'radio'],
+ ['IgxRadioModule', 'radio'],
+ ['IGX_RADIO_GROUP_DIRECTIVES', 'radio'],
+ ['RadioGroupAlignment', 'radio'],
+ ['IgxRadioGroupDirective', 'radio'],
+
+ // Select
+ ['IgxSelectComponent', 'select'],
+ ['IgxSelectModule', 'select'],
+ ['IGX_SELECT_DIRECTIVES', 'select'],
+ ['IgxSelectItemComponent', 'select'],
+ ['IgxSelectHeaderDirective', 'select'],
+ ['IgxSelectFooterDirective', 'select'],
+ ['IgxSelectToggleIconDirective', 'select'],
+ ['ISelectionChangedEventArgs', 'select'],
+ ['IgxSelectGroupComponent', 'select'],
+
+ // Simple Combo
+ ['IgxSimpleComboComponent', 'simple-combo'],
+ ['IGX_SIMPLE_COMBO_DIRECTIVES', 'simple-combo'],
+ ['ISimpleComboSelectionChangingEventArgs', 'simple-combo'],
+ ['IgxSimpleComboModule', 'simple-combo'],
+
+ // Slider
+ ['IgxSliderComponent', 'slider'],
+ ['IgxSliderModule', 'slider'],
+ ['IGX_SLIDER_DIRECTIVES', 'slider'],
+ ['ISliderValueChangeEventArgs', 'slider'],
+ ['IRangeSliderValue', 'slider'],
+ ['SliderType', 'slider'],
+ ['IgxSliderType', 'slider'],
+ ['TickLabelsOrientation', 'slider'],
+ ['TicksOrientation', 'slider'],
+ ['IgxTickLabelTemplateDirective', 'slider'],
+ ['IgxThumbToTemplateDirective', 'slider'],
+ ['IgxThumbFromTemplateDirective', 'slider'],
+
+ // Snackbar
+ ['IgxSnackbarComponent', 'snackbar'],
+ ['IgxSnackbarModule', 'snackbar'],
+
+ // Splitter
+ ['IgxSplitterComponent', 'splitter'],
+ ['IgxSplitterModule', 'splitter'],
+ ['IGX_SPLITTER_DIRECTIVES', 'splitter'],
+ ['IgxSplitterPaneComponent', 'splitter'],
+ ['ISplitterEventArgs', 'splitter'],
+ ['SplitterType', 'splitter'],
+
+ // Stepper
+ ['IgxStepperComponent', 'stepper'],
+ ['IgxStepperModule', 'stepper'],
+ ['IGX_STEPPER_DIRECTIVES', 'stepper'],
+ ['IgxStepComponent', 'stepper'],
+ ['IStepChangingEventArgs', 'stepper'],
+ ['IStepChangedEventArgs', 'stepper'],
+ ['IgxStepperOrientation', 'stepper'],
+ ['IgxStepType', 'stepper'],
+ ['IgxStepActiveIndicatorDirective', 'stepper'],
+ ['IgxStepCompletedIndicatorDirective', 'stepper'],
+ ['IgxStepContentDirective', 'stepper'],
+ ['IgxStepTitleDirective', 'stepper'],
+ ['IgxStepSubtitleDirective', 'stepper'],
+ ['IgxStepInvalidIndicatorDirective', 'stepper'],
+ ['IgxStepIndicatorDirective', 'stepper'],
+ ['IgxStepperTitlePosition', 'stepper'],
+
+ // Switch
+ ['IgxSwitchComponent', 'switch'],
+ ['IgxSwitchModule', 'switch'],
+
+ // Tabs
+ ['IgxTabsComponent', 'tabs'],
+ ['IgxTabsModule', 'tabs'],
+ ['IGX_TABS_DIRECTIVES', 'tabs'],
+ ['IgxTabItemComponent', 'tabs'],
+ ['IgxTabHeaderComponent', 'tabs'],
+ ['IgxTabContentComponent', 'tabs'],
+ ['IgxTabsGroupComponent', 'tabs'],
+ ['ITabsSelectedItemChangeEventArgs', 'tabs'],
+ ['IgxTabsType', 'tabs'],
+ ['IgxTabHeaderIconDirective', 'tabs'],
+ ['IgxTabHeaderLabelDirective', 'tabs'],
+
+ // Time Picker
+ ['IgxTimePickerComponent', 'time-picker'],
+ ['IgxTimePickerModule', 'time-picker'],
+ ['IGX_TIME_PICKER_DIRECTIVES', 'time-picker'],
+ ['IgxTimePickerActionsDirective', 'time-picker'],
+ ['IgxHourItemDirective', 'time-picker'],
+ ['IgxMinuteItemDirective', 'time-picker'],
+ ['IgxAmPmItemDirective', 'time-picker'],
+ ['IgxItemListDirective', 'time-picker'],
+
+ // Toast
+ ['IgxToastComponent', 'toast'],
+ ['IgxToastModule', 'toast'],
+ ['IgxToastPosition', 'toast'],
+
+ // Tree
+ ['IgxTreeComponent', 'tree'],
+ ['IgxTreeModule', 'tree'],
+ ['IGX_TREE_DIRECTIVES', 'tree'],
+ ['IgxTreeNodeComponent', 'tree'],
+ ['ITreeNodeSelectionEvent', 'tree'],
+ ['ITreeNodeTogglingEventArgs', 'tree'],
+ ['IgxTreeSelectionType', 'tree'],
+ ['IgxTreeNodeLinkDirective', 'tree'],
+
+ // Directives (re-exports from other entry points)
+ ['IgxForOfDirective', 'directives'],
+ ['IForOfState', 'directives'],
+ ['IgxForOfModule', 'directives'],
+ ['IgxTemplateOutletDirective', 'directives'],
+ ['IgxTextSelectionDirective', 'directives'],
+ ['IgxTextSelectionModule', 'directives'],
+ ['IgxTextHighlightDirective', 'directives'],
+ ['IgxTextHighlightModule', 'directives'],
+ ['IgxDateTimeEditorDirective', 'directives'],
+ ['IgxMaskDirective', 'directives'],
+ ['IgxMaskModule', 'directives'],
+ ['IgxDividerDirective', 'directives'],
+ ['IgxDividerModule', 'directives'],
+ ['IgxFilterDirective', 'directives'],
+ ['IgxButtonDirective', 'directives'],
+ ['IgxButtonModule', 'directives'],
+ ['IgxIconButtonDirective', 'directives'],
+ ['IgxToggleActionDirective', 'directives'],
+ ['IgxLayoutDirective', 'directives'],
+ ['IgxLayoutModule', 'directives'],
+ ['IgxFlexDirective', 'directives'],
+ ['IgxFocusDirective', 'directives'],
+ ['IgxFocusModule', 'directives'],
+ ['IgxTooltipDirective', 'directives'],
+ ['IgxTooltipTargetDirective', 'directives'],
+ ['TooltipPositionStrategy', 'directives'],
+ ['IgxTooltipModule', 'directives'],
+ ['IgxRippleDirective', 'directives'],
+ ['IgxRippleModule', 'directives'],
+ ['IDropDroppedEventArgs', 'directives'],
+ ['IDragGhostCreatedEventArgs', 'directives'],
+ ['IDragStartEventArgs', 'directives'],
+ ['IDragBaseEventArgs', 'directives'],
+ ['IDropBaseEventArgs', 'directives'],
+ ['IDragMoveEventArgs', 'directives'],
+ ['IgxDragDirective', 'directives'],
+ ['IgxDragHandleDirective', 'directives'],
+ ['IgxDragLocation', 'directives'],
+ ['IgxDropDirective', 'directives'],
+ ['IgxDragDropModule', 'directives'],
+ ['IgxFocusTrapDirective', 'directives'],
+ ['IgxToggleDirective', 'directives'],
+ ['IgxToggleModule', 'directives'],
+ ['IgxFilterOptions', 'directives'],
+ ['IgxFilterPipe', 'directives'],
+ ['IgxFilterModule', 'directives'],
+ ['IgcFormControlDirective', 'directives'],
+ ['IgxTextHighlightService', 'directives']
+]);
+
+// Type renames (old name -> new name and entry point)
+const TYPE_RENAMES = new Map([
+ ['Direction', { newName: 'CarouselAnimationDirection', entryPoint: 'carousel' }],
+ ['IgxColumPatternValidatorDirective', { newName: 'IgxColumnPatternValidatorDirective', entryPoint: 'grids/core' }],
+]);
+
+function migrateImportDeclaration(node: ts.ImportDeclaration, sourceFile: ts.SourceFile): { start: number, end: number, replacement: string } | null {
+ const moduleSpecifier = node.moduleSpecifier;
+ if (!ts.isStringLiteral(moduleSpecifier)) {
+ return null;
+ }
+
+ const importPath = moduleSpecifier.text;
+
+ // Only process igniteui-angular imports (not already using entry points)
+ if (importPath !== 'igniteui-angular') {
+ return null;
+ }
+
+ const importClause = node.importClause;
+ if (!importClause || !importClause.namedBindings) {
+ return null;
+ }
+
+ if (!ts.isNamedImports(importClause.namedBindings)) {
+ return null;
+ }
+
+ // Group imports by entry point
+ const entryPointGroups = new Map();
+
+ for (const element of importClause.namedBindings.elements) {
+ const name = element.name.text;
+ const alias = element.propertyName?.text;
+ const importName = alias || name;
+ let actualImportName = importName;
+
+ // Check if this is a renamed type
+ if (TYPE_RENAMES.has(importName)) {
+ const rename = TYPE_RENAMES.get(importName)!;
+ actualImportName = rename.newName;
+ }
+
+ const fullImport = alias ? `${actualImportName} as ${name}` : actualImportName;
+
+ // Determine target entry point
+ let targetEntryPoint = 'core'; // Default to core
+
+ // Check if it's a renamed type first
+ if (TYPE_RENAMES.has(importName)) {
+ targetEntryPoint = TYPE_RENAMES.get(importName)!.entryPoint;
+ } else if (ENTRY_POINT_MAP.has(importName)) {
+ targetEntryPoint = ENTRY_POINT_MAP.get(importName)!;
+ }
+
+ if (!entryPointGroups.has(targetEntryPoint)) {
+ entryPointGroups.set(targetEntryPoint, []);
+ }
+ entryPointGroups.get(targetEntryPoint)!.push(fullImport);
+ }
+
+ // Generate new import statements
+ const newImports: string[] = [];
+ for (const [entryPoint, imports] of entryPointGroups) {
+ const sortedImports = imports.sort();
+ newImports.push(`import { ${sortedImports.join(', ')} } from 'igniteui-angular/${entryPoint}';`);
+ }
+
+ return {
+ start: node.getStart(sourceFile),
+ end: node.getEnd(),
+ replacement: newImports.join('\n')
+ };
+}
+
+function migrateFile(filePath: string, content: string): string {
+ const sourceFile = ts.createSourceFile(
+ filePath,
+ content,
+ ts.ScriptTarget.Latest,
+ true
+ );
+
+ const changes: { start: number, end: number, replacement: string }[] = [];
+
+ // Track which old type names are imported in this file
+ const importedOldTypes = new Set();
+
+ function visit(node: ts.Node) {
+ if (ts.isImportDeclaration(node)) {
+ const change = migrateImportDeclaration(node, sourceFile);
+ if (change) {
+ changes.push(change);
+
+ // Track old type names that were imported
+ const moduleSpecifier = node.moduleSpecifier;
+ if (ts.isStringLiteral(moduleSpecifier) && moduleSpecifier.text === 'igniteui-angular') {
+ const importClause = node.importClause;
+ if (importClause?.namedBindings && ts.isNamedImports(importClause.namedBindings)) {
+ for (const element of importClause.namedBindings.elements) {
+ const importName = element.propertyName?.text || element.name.text;
+ if (TYPE_RENAMES.has(importName)) {
+ importedOldTypes.add(importName);
+ }
+ }
+ }
+ }
+ }
+ } else if (ts.isIdentifier(node) && importedOldTypes.has(node.text)) {
+ // Rename type references in the code (but only if not aliased in import)
+ const oldName = node.text;
+ const rename = TYPE_RENAMES.get(oldName)!;
+
+ // Check if this identifier is part of an import statement
+ // We don't want to rename it there as we already handled it
+ let isInImport = false;
+ let parent = node.parent;
+ while (parent) {
+ if (ts.isImportDeclaration(parent)) {
+ isInImport = true;
+ break;
+ }
+ parent = parent.parent;
+ }
+
+ if (!isInImport) {
+ changes.push({
+ start: node.getStart(sourceFile),
+ end: node.getEnd(),
+ replacement: rename.newName
+ });
+ }
+ }
+
+ ts.forEachChild(node, visit);
+ }
+
+ visit(sourceFile);
+
+ // Apply changes in reverse order to maintain positions
+ changes.sort((a, b) => b.start - a.start);
+
+ let result = content;
+ for (const change of changes) {
+ result = result.substring(0, change.start) + change.replacement + result.substring(change.end);
+ }
+
+ return result;
+}
+
+export default function migrate(): Rule {
+ return async (host: Tree, context: SchematicContext) => {
+ context.logger.info(`Applying optional import migration for Ignite UI for Angular to version ${version}`);
+ context.logger.info('Migrating imports to new entry points...');
+
+ const visit: FileVisitor = (filePath) => {
+ // Only process TypeScript files
+ if (!filePath.endsWith('.ts')) {
+ return;
+ }
+
+ // Skip node_modules and dist
+ if (filePath.includes('node_modules') || filePath.includes('dist')) {
+ return;
+ }
+
+ const content = host.read(filePath);
+ if (!content) {
+ return;
+ }
+
+ const originalContent = content.toString();
+
+ // Check if file has igniteui-angular imports
+ if (!originalContent.includes("from 'igniteui-angular'") && !originalContent.includes('from "igniteui-angular"')) {
+ return;
+ }
+
+ const migratedContent = migrateFile(filePath, originalContent);
+
+ if (migratedContent !== originalContent) {
+ host.overwrite(filePath, migratedContent);
+ context.logger.info(` ✓ Migrated ${filePath}`);
+ }
+ };
+
+ host.visit(visit);
+
+ context.logger.info('Migration complete!');
+ context.logger.info('Breaking changes:');
+ context.logger.info(' - Input directives moved to igniteui-angular/input-group');
+ context.logger.info(' - IgxAutocompleteDirective moved to igniteui-angular/drop-down');
+ context.logger.info(' - IgxRadioGroupDirective moved to igniteui-angular/radio');
+ context.logger.info('Type renames:');
+ context.logger.info(' - Direction → CarouselAnimationDirection');
+ };
+}
diff --git a/projects/igniteui-angular/query-builder/src/query-builder/query-builder-tree.component.ts b/projects/igniteui-angular/query-builder/src/query-builder/query-builder-tree.component.ts
index feab3103635..f6d6d0cb1e9 100644
--- a/projects/igniteui-angular/query-builder/src/query-builder/query-builder-tree.component.ts
+++ b/projects/igniteui-angular/query-builder/src/query-builder/query-builder-tree.component.ts
@@ -43,14 +43,14 @@ import {
IgxPickerToggleComponent,
IgxPickerClearComponent,
getCurrentResourceStrings,
- isTree
+ isTree,
+ IgxOverlayOutletDirective
} from 'igniteui-angular/core';
import { IgxDatePickerComponent } from 'igniteui-angular/date-picker';
import {
IgxButtonDirective,
IgxDateTimeEditorDirective,
- IgxOverlayOutletDirective,
IgxIconButtonDirective,
IgxTooltipDirective,
IgxTooltipTargetDirective,
diff --git a/projects/igniteui-angular/query-builder/src/query-builder/query-builder.component.ts b/projects/igniteui-angular/query-builder/src/query-builder/query-builder.component.ts
index addf61a5c34..3553d599000 100644
--- a/projects/igniteui-angular/query-builder/src/query-builder/query-builder.component.ts
+++ b/projects/igniteui-angular/query-builder/src/query-builder/query-builder.component.ts
@@ -10,9 +10,9 @@ import {
IQueryBuilderResourceStrings,
QueryBuilderResourceStringsEN,
recreateTree,
- getCurrentResourceStrings
+ getCurrentResourceStrings,
+ IgxOverlayOutletDirective
} from 'igniteui-angular/core';
-import { IgxOverlayOutletDirective } from 'igniteui-angular/directives';
import { IgxQueryBuilderTreeComponent } from './query-builder-tree.component';
import { IgxIconService } from 'igniteui-angular/icon';
import { editor } from '@igniteui/material-icons-extended';
diff --git a/projects/igniteui-angular/radio/src/public_api.ts b/projects/igniteui-angular/radio/src/public_api.ts
index f2e174b9c56..6aca07adab5 100644
--- a/projects/igniteui-angular/radio/src/public_api.ts
+++ b/projects/igniteui-angular/radio/src/public_api.ts
@@ -1,2 +1 @@
-export type { IChangeCheckboxEventArgs } from "igniteui-angular/directives";
export * from './radio/public_api';
diff --git a/projects/igniteui-angular/slider/src/slider/slider.component.ts b/projects/igniteui-angular/slider/src/slider/slider.component.ts
index 18c294a5eb5..e3d8ff21280 100644
--- a/projects/igniteui-angular/slider/src/slider/slider.component.ts
+++ b/projects/igniteui-angular/slider/src/slider/slider.component.ts
@@ -5,9 +5,7 @@ import {
import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';
import { animationFrameScheduler, fromEvent, interval, merge, noop, Observable, Subject, timer } from 'rxjs';
import { takeUntil, throttle, throttleTime } from 'rxjs/operators';
-import { EditorProvider } from 'igniteui-angular/core';
-import { resizeObservable } from 'igniteui-angular/core';
-import { ɵIgxDirectionality } from 'igniteui-angular/core';
+import { EditorProvider, ɵIgxDirectionality, resizeObservable } from 'igniteui-angular/core';
import { IgxThumbLabelComponent } from './label/thumb-label.component';
import {
IgxSliderType, IgxThumbFromTemplateDirective,
diff --git a/projects/igniteui-angular/src/assets/images/avatar/1.jpg b/projects/igniteui-angular/test-utils/assets/images/avatar/1.jpg
similarity index 100%
rename from projects/igniteui-angular/src/assets/images/avatar/1.jpg
rename to projects/igniteui-angular/test-utils/assets/images/avatar/1.jpg
diff --git a/projects/igniteui-angular/src/assets/images/avatar/10.jpg b/projects/igniteui-angular/test-utils/assets/images/avatar/10.jpg
similarity index 100%
rename from projects/igniteui-angular/src/assets/images/avatar/10.jpg
rename to projects/igniteui-angular/test-utils/assets/images/avatar/10.jpg
diff --git a/projects/igniteui-angular/src/assets/images/avatar/11.jpg b/projects/igniteui-angular/test-utils/assets/images/avatar/11.jpg
similarity index 100%
rename from projects/igniteui-angular/src/assets/images/avatar/11.jpg
rename to projects/igniteui-angular/test-utils/assets/images/avatar/11.jpg
diff --git a/projects/igniteui-angular/src/assets/images/avatar/12.jpg b/projects/igniteui-angular/test-utils/assets/images/avatar/12.jpg
similarity index 100%
rename from projects/igniteui-angular/src/assets/images/avatar/12.jpg
rename to projects/igniteui-angular/test-utils/assets/images/avatar/12.jpg
diff --git a/projects/igniteui-angular/src/assets/images/avatar/13.jpg b/projects/igniteui-angular/test-utils/assets/images/avatar/13.jpg
similarity index 100%
rename from projects/igniteui-angular/src/assets/images/avatar/13.jpg
rename to projects/igniteui-angular/test-utils/assets/images/avatar/13.jpg
diff --git a/projects/igniteui-angular/src/assets/images/avatar/14.jpg b/projects/igniteui-angular/test-utils/assets/images/avatar/14.jpg
similarity index 100%
rename from projects/igniteui-angular/src/assets/images/avatar/14.jpg
rename to projects/igniteui-angular/test-utils/assets/images/avatar/14.jpg
diff --git a/projects/igniteui-angular/src/assets/images/avatar/15.jpg b/projects/igniteui-angular/test-utils/assets/images/avatar/15.jpg
similarity index 100%
rename from projects/igniteui-angular/src/assets/images/avatar/15.jpg
rename to projects/igniteui-angular/test-utils/assets/images/avatar/15.jpg
diff --git a/projects/igniteui-angular/src/assets/images/avatar/16.jpg b/projects/igniteui-angular/test-utils/assets/images/avatar/16.jpg
similarity index 100%
rename from projects/igniteui-angular/src/assets/images/avatar/16.jpg
rename to projects/igniteui-angular/test-utils/assets/images/avatar/16.jpg
diff --git a/projects/igniteui-angular/src/assets/images/avatar/17.jpg b/projects/igniteui-angular/test-utils/assets/images/avatar/17.jpg
similarity index 100%
rename from projects/igniteui-angular/src/assets/images/avatar/17.jpg
rename to projects/igniteui-angular/test-utils/assets/images/avatar/17.jpg
diff --git a/projects/igniteui-angular/src/assets/images/avatar/18.jpg b/projects/igniteui-angular/test-utils/assets/images/avatar/18.jpg
similarity index 100%
rename from projects/igniteui-angular/src/assets/images/avatar/18.jpg
rename to projects/igniteui-angular/test-utils/assets/images/avatar/18.jpg
diff --git a/projects/igniteui-angular/src/assets/images/avatar/19.jpg b/projects/igniteui-angular/test-utils/assets/images/avatar/19.jpg
similarity index 100%
rename from projects/igniteui-angular/src/assets/images/avatar/19.jpg
rename to projects/igniteui-angular/test-utils/assets/images/avatar/19.jpg
diff --git a/projects/igniteui-angular/src/assets/images/avatar/2.jpg b/projects/igniteui-angular/test-utils/assets/images/avatar/2.jpg
similarity index 100%
rename from projects/igniteui-angular/src/assets/images/avatar/2.jpg
rename to projects/igniteui-angular/test-utils/assets/images/avatar/2.jpg
diff --git a/projects/igniteui-angular/src/assets/images/avatar/20.jpg b/projects/igniteui-angular/test-utils/assets/images/avatar/20.jpg
similarity index 100%
rename from projects/igniteui-angular/src/assets/images/avatar/20.jpg
rename to projects/igniteui-angular/test-utils/assets/images/avatar/20.jpg
diff --git a/projects/igniteui-angular/src/assets/images/avatar/21.jpg b/projects/igniteui-angular/test-utils/assets/images/avatar/21.jpg
similarity index 100%
rename from projects/igniteui-angular/src/assets/images/avatar/21.jpg
rename to projects/igniteui-angular/test-utils/assets/images/avatar/21.jpg
diff --git a/projects/igniteui-angular/src/assets/images/avatar/22.jpg b/projects/igniteui-angular/test-utils/assets/images/avatar/22.jpg
similarity index 100%
rename from projects/igniteui-angular/src/assets/images/avatar/22.jpg
rename to projects/igniteui-angular/test-utils/assets/images/avatar/22.jpg
diff --git a/projects/igniteui-angular/src/assets/images/avatar/23.jpg b/projects/igniteui-angular/test-utils/assets/images/avatar/23.jpg
similarity index 100%
rename from projects/igniteui-angular/src/assets/images/avatar/23.jpg
rename to projects/igniteui-angular/test-utils/assets/images/avatar/23.jpg
diff --git a/projects/igniteui-angular/src/assets/images/avatar/24.jpg b/projects/igniteui-angular/test-utils/assets/images/avatar/24.jpg
similarity index 100%
rename from projects/igniteui-angular/src/assets/images/avatar/24.jpg
rename to projects/igniteui-angular/test-utils/assets/images/avatar/24.jpg
diff --git a/projects/igniteui-angular/src/assets/images/avatar/3.jpg b/projects/igniteui-angular/test-utils/assets/images/avatar/3.jpg
similarity index 100%
rename from projects/igniteui-angular/src/assets/images/avatar/3.jpg
rename to projects/igniteui-angular/test-utils/assets/images/avatar/3.jpg
diff --git a/projects/igniteui-angular/src/assets/images/avatar/4.jpg b/projects/igniteui-angular/test-utils/assets/images/avatar/4.jpg
similarity index 100%
rename from projects/igniteui-angular/src/assets/images/avatar/4.jpg
rename to projects/igniteui-angular/test-utils/assets/images/avatar/4.jpg
diff --git a/projects/igniteui-angular/src/assets/images/avatar/5.jpg b/projects/igniteui-angular/test-utils/assets/images/avatar/5.jpg
similarity index 100%
rename from projects/igniteui-angular/src/assets/images/avatar/5.jpg
rename to projects/igniteui-angular/test-utils/assets/images/avatar/5.jpg
diff --git a/projects/igniteui-angular/src/assets/images/avatar/6.jpg b/projects/igniteui-angular/test-utils/assets/images/avatar/6.jpg
similarity index 100%
rename from projects/igniteui-angular/src/assets/images/avatar/6.jpg
rename to projects/igniteui-angular/test-utils/assets/images/avatar/6.jpg
diff --git a/projects/igniteui-angular/src/assets/images/avatar/7.jpg b/projects/igniteui-angular/test-utils/assets/images/avatar/7.jpg
similarity index 100%
rename from projects/igniteui-angular/src/assets/images/avatar/7.jpg
rename to projects/igniteui-angular/test-utils/assets/images/avatar/7.jpg
diff --git a/projects/igniteui-angular/src/assets/images/avatar/8.jpg b/projects/igniteui-angular/test-utils/assets/images/avatar/8.jpg
similarity index 100%
rename from projects/igniteui-angular/src/assets/images/avatar/8.jpg
rename to projects/igniteui-angular/test-utils/assets/images/avatar/8.jpg
diff --git a/projects/igniteui-angular/src/assets/images/avatar/9.jpg b/projects/igniteui-angular/test-utils/assets/images/avatar/9.jpg
similarity index 100%
rename from projects/igniteui-angular/src/assets/images/avatar/9.jpg
rename to projects/igniteui-angular/test-utils/assets/images/avatar/9.jpg