Skip to content

Update to 22.1.0 - #18

Open
viktorkombov wants to merge 18 commits into
mainfrom
chore/migrate-to-igniteui-22
Open

Update to 22.1.0#18
viktorkombov wants to merge 18 commits into
mainfrom
chore/migrate-to-igniteui-22

Conversation

@viktorkombov

Copy link
Copy Markdown

No description provided.

viktorkombov and others added 15 commits August 17, 2026 18:06
Snapshot .agents/, .claude/, AGENTS.md, .mcp.json and the pending
package-lock.json change so `ng update` starts from a clean tree.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Removes tooling that cannot survive the climb to Angular 22 and repairs
two breakages that already existed at HEAD (the app did not build):

- Sass: '~' prefixed imports no longer resolve. Switch layout-config to a
  proper Sass module that @forwards igniteui-angular/theming, and load it
  (and minireset) with @use everywhere. Drops the dead
  '~igniteui-angular/lib/core/styles/base/index' import.
- products: IgxToastPosition was removed from the library; the field was
  never bound in the template, so it goes away with the import.

Also drops Protractor e2e, TSLint/codelyzer and the vestigial es5 build
configuration, and moves Karma off karma-coverage-istanbul-reporter.
rxjs 6 -> 7 and @types/node 12 -> 20 to satisfy later Angular peers.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Automatic migrations applied:
- igxButton="icon" -> igxIconButton="flat" (Ignite UI 17.1)
- igx-card type="outlined" removed; outlined is now the default (17.0)
- browserTarget -> buildTarget in angular.json (Angular 17)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Automatic migrations applied:
- HttpClientModule -> provideHttpClient(withInterceptorsFromDi())
- displayDensity removed from the grid; global --ig-size: large added to
  styles.scss by the Ignite UI 18.0 migration

Manual follow-up from the update guide (16.0.x -> 16.1.x): the grid was
displayDensity="cosy", which the migration could not preserve. Restored
as igx-grid { --ig-size: var(--ig-size-medium) } in the component styles,
and dropped the now-unused `density` field.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Angular 19 makes components standalone by default, so its migration
stamped `standalone: false` on the six NgModule-declared components.
Those come out again in the standalone conversion at the end of this
branch.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Angular 20 migrations switched moduleResolution to "bundler" and added
the v20 schematics naming defaults to angular.json.

Also clears every Sass deprecation the build was emitting: slash division
-> math.div(), and the bare custom property after the palette mixin is
now wrapped in `& {}` so it keeps its precedence under the upcoming CSS
ordering semantics.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Ignite UI 21.0 tightened the NgModule re-export graph as part of the
multiple-entry-points restructure: IgxToggleModule no longer re-exports
IgxOverlayOutletDirective, which broke #outlet="overlay-outlet" in the
user nav. Imported directly (it is standalone).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
These are opt-in and are skipped by a plain `ng update`; run by name:
- migration-51: imports rewritten to granular entry points
- migration-52: IgxGridGroupByAreaComponent relocation (no-op here)
- migration-53: --igx-* CSS custom properties renamed to --ig-*
- migration-54: refreshed the bundled Ignite UI agent skills

Two fixes on top:
- migration-51 routed IgxGridTransaction to igniteui-angular/core, where it
  does not exist; it lives in igniteui-angular/grids/core.
- Rather than re-point that import, the deprecated IgxGridTransaction DI
  provider is replaced by [batchEditing]="true" on the grid, which is the
  documented replacement (12.0.x -> 12.1.x update guide).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Manual migration required by the 21.1.x -> 22.0.x update guide: Angular 22
no longer ships HammerModule. Touch gestures now come from the global
hammer.min.js already listed in angular.json "scripts"; Ignite UI picks up
window.Hammer on its own.

Standalone conversion (AppModule and AppRoutingModule deleted):
- main.ts bootstraps with bootstrapApplication + app.config.ts
- RouterModule.forRoot(..., { useHash: true }) -> provideRouter(withHashLocation())
- provideZoneChangeDetection() kept explicitly: Angular 22 bootstraps zoneless
  by default and this app relies on zone-based change detection
- each component declares its own Ignite UI imports via granular entry points

Stale API usage the automatic migrations do not detect:
- igx-buttongroup (onSelect) -> (selected). Unknown outputs bind as DOM
  events, so the dashboard's 1D/1W/1M chart filters were silently dead.
- dialog [rightButtonType]="'raised'" -> 'contained' ('raised' left
  IgxButtonType, which is now fab|flat|contained|outlined)
- <igx-icon igxButton="icon"> -> igxIconButton="flat"
- .igx-button--icon -> .igx-icon-button in the nav drawer styles
- IgxColumnComponent lives in grids/core, not grids/grid

Other:
- TypeScript 6 defaults strict to true; pinned to false to preserve the
  project's existing (non-strict) behaviour
- removed the conflicting extendedDiagnostics/strictTemplates pair the two
  v22 migrations left behind, plus TS7-deprecated baseUrl/downlevelIteration
- dropped igniteui-angular-gauges (imported, never used in any template)
- @igniteui/material-icons-extended 2.4 -> 3.1 (ships types; required by v22)
- ngStyle -> style binding, ngClass -> class binding (AGENTS.md)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- ng add @angular-eslint/schematics restores `npm run lint` (TSLint and
  codelyzer were dropped at the start of this branch)
- ng generate @angular/core:inject moves constructor injection to inject()
  in AppComponent, UserNavigationComponent and ThemeService (AGENTS.md)
- removed dead code the linter surfaced: unused imports, empty constructor
  and empty ngOnInit in MainNavigationComponent, loose == in the products
  template

16 lint findings remain, all pre-existing and none migration-related:
no-explicit-any (10), prefer-on-push (5) and one mouse-events-have-key-events
a11y gap on the grid's hover-driven action strip.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Applies the remaining optional @angular/cli migration
(use-application-builder), retiring the deprecated webpack-based
'browser' builder for '@angular/build:application'.

The migration warned that output moves from docs/ to docs/browser/, which
would have broken the GitHub Pages deployment this project publishes from
docs/. Pinned outputPath.browser to "" so index.html stays at
docs/index.html, matching the previous layout.

Test target moved to @angular/build:karma (the old one is deprecated):
- dropped src/test.ts; the builder initialises the TestBed itself
- polyfills now ["zone.js", "zone.js/testing"]
- karma.conf.js no longer registers the builder's framework/plugin, which
  the migration had left dangling and unresolvable

Added src/app/app.routes.spec.ts so the test pipeline is actually
exercised; the project had no specs at all, and karma exits non-zero on an
empty suite.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Last package named by the update guide. Its legacy-project-type migration
found nothing to change; ignite-ui-cli.json was already on igx-ts.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@viktorkombov
viktorkombov requested a review from ChronosSF August 26, 2026 15:14
@igdmdimitrov

This comment was marked as resolved.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants