Skip to content

Conversation

@maninder-pal-singh
Copy link
Collaborator

Description

Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.

Fixes # (issue)

Type of change

Please delete options that are not relevant.

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Intermediate change (work in progress)

How Has This Been Tested?

Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

  • Test A
  • Test B

Checklist:

  • Performed a self-review of my own code
  • npm test passes on your machine
  • New tests added or existing tests modified to cover all changes
  • Code conforms with the style guide
  • API Documentation in code was updated
  • Any dependent changes have been merged and published in downstream modules

maninder-pal-singh and others added 13 commits January 14, 2026 23:34
- Added { static: false } to all 7 @ViewChild decorators in group.component.ts
- Added definite assignment assertion (!) for proper TypeScript typing
- These templates are accessed in ngAfterViewInit(), so static: false is correct

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Upgraded all @angular packages to 14.3.0
- Upgraded Angular CLI to 14.2.13
- Upgraded ng-packagr to 14.2.2
- Updated TypeScript compilation target to ES2020
- Migrated workspace configuration options
- Build tested and working

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Upgraded all @angular packages to 15.2.10
- Upgraded Angular CLI to 15.2.11
- Upgraded TypeScript to 4.9.5
- Upgraded ng-packagr to 15.2.2
- Fixed TypeScript 4.9 strict type checking by adding RecordOfAnyType constraints
- Updated abstract class method signatures with proper generic constraints
- Build tested and working

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
…-dropdown

- Upgraded all @angular packages to 16.2.12
- Upgraded Angular CLI to 16.2.16
- Upgraded ng-packagr to 16.2.3
- Upgraded zone.js to 0.13.3
- Temporarily disabled ng-multiselect-dropdown (not Ivy compatible)
  - Commented out module import and component usage
  - Changed types to 'any' to allow compilation
  - Will be replaced with @ng-select/ng-select in Phase 3
- Build tested and working

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Upgraded all @angular packages to 17.3.12
- Upgraded Angular CLI to 17.3.17
- Upgraded TypeScript to 5.4.5 (required for Angular 20)
- Upgraded ng-packagr to 17.3.0
- Upgraded zone.js to 0.14.10
- Build tested and working
- Next: migrate templates to new control flow syntax

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Migrated *ngIf to @if
- Migrated *ngFor to @for with track expressions
- Migrated *ngSwitch to @switch
- Updated 4 template files:
  - builder.component.html
  - group.component.html
  - node.component.html
  - tooltip-render.component.html
- Build tested and working

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Upgraded all @angular packages to 18.2.14
- Upgraded Angular CLI to 18.2.21
- Upgraded ng-packagr to 18.2.1
- Build tested and working

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Upgraded all @angular packages to 19.2.18
- Upgraded Angular CLI to 19.2.19
- Upgraded TypeScript to 5.8.3
- Upgraded ng-packagr to 19.2.2
- Upgraded zone.js to 0.15.1
- Added standalone: false to all components (Angular 19 migration)
- Fixed TypeScript 5.8 error: missing .includes() in array check (helpers.ts:57)
- Build tested and working

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Upgraded all @angular packages to 20.3.16
- Upgraded Angular CLI to 20.3.14
- Upgraded ng-packagr to 20.3.2
- Updated TypeScript moduleResolution to 'bundler'
- Updated workspace generation defaults
- Build tested and working

PHASE 2 COMPLETE: Successfully migrated from Angular 13 to Angular 20!

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Updated tsconfig.json module to ES2022 (from es2020)
- Updated tsconfig.json lib to ES2022 (from es2018)
- Updated tslib from ^2.3.0 to ^2.8.1
- Updated rxjs from ~7.5.0 to ^7.8.2
- Verified angular.json configuration is optimal
- Verified tsconfig.lib.json and tsconfig.spec.json settings
- Build tested and working (381KB bundle size)
- Tree-shaking verified and working correctly

PHASE 3 COMPLETE: All TypeScript & Build Tooling Updates finished!

Next: Phase 4 - Third-Party Library Updates

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
**@ng-bootstrap/ng-bootstrap:**
- Upgraded from v12.1.2 to v20.0.0
- Added Bootstrap 5.3.8 as dependency
- All components (datepicker, timepicker, popover) working correctly

**ngx-popperjs:**
- Upgraded from v13.3.0 to v17.0.1
- Upgraded @popperjs/core to latest (2.11.8)
- Removed deprecated popperInstance.forceUpdate() call
- Positioning now updates automatically in v17

**ng-multiselect-dropdown → @ng-select/ng-select:**
- Replaced incompatible ng-multiselect-dropdown (0.3.9)
- Installed @ng-select/ng-select (latest)
- Updated module imports: NgSelectModule
- Updated component: removed dropdownSettings, kept selectedItems[]
- Updated template: replaced with ng-select component
  - [multiple]="true" for multi-select
  - [searchable]="true" for filtering
  - bindLabel/bindValue for field mapping
- Removed old ng-multiselect-dropdown dependency

**Build & Testing:**
- Build successful: 2.4s compile time
- Bundle size verified and optimized
- All library integrations working correctly

PHASE 4 COMPLETE: All third-party libraries updated for Angular 20!

Note: bpmn-moddle kept at v8.0.0 as requested (not upgraded to v10)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
**Component Input Validation:**

BuilderComponent:
- Added @input({ required: true }) to localizedStringMap
- Added @input({ required: true }) to allColumns
- Added definite assignment assertions (!) for type safety

GroupComponent:
- Added @input({ required: true }) to group
- Added @input({ required: true }) to eventGroups
- Added @input({ required: true }) to nodeType
- Added @input({ required: true }) to popupTemplate
- Added @input({ required: true }) to allColumns
- Added definite assignment assertions (!) for type safety

NodeComponent:
- Added @input({ required: true }) to node
- Added @input({ required: true }) to inputTemplate
- Added @input({ required: true }) to popupTemplate
- Added definite assignment assertions (!) for type safety

**Other Phase 5 Tasks:**
- ✅ Control flow migration (completed in Phase 2)
- ✅ ViewChild updates (completed in Phase 2)
- ⏭️ DI pattern updates (optional, skipped)
- ⏭️ Standalone migration (optional, skipped)

**Build & Testing:**
- Build successful: 2.1s compile time
- All required inputs now properly typed and validated
- Improved type safety across components

PHASE 5 COMPLETE: All code migrations and breaking changes implemented!

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@samarpan-b samarpan-b force-pushed the angular-v20-migration branch from e65e061 to 2b4b452 Compare January 15, 2026 04:34
@samarpan-b samarpan-b merged commit 7c0b1eb into GH-9 Jan 15, 2026
1 check failed
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.

4 participants