Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
94 commits
Select commit Hold shift + click to select a range
3dd5c5a
Initial plan
Copilot Jan 16, 2026
23c3308
Update Angular to v21 and TypeScript to v5.9.3
Copilot Jan 16, 2026
8f051f9
Fix TypeScript configuration for Angular 21 compatibility
Copilot Jan 16, 2026
8ab42cc
Add jest-environment-jsdom for Jest 30 compatibility
Copilot Jan 16, 2026
ffe09c3
Add Angular 21 migration documentation
Copilot Jan 16, 2026
5cc282b
Add Jest configuration for Angular 21 (partial fix for unit tests)
Copilot Jan 16, 2026
b594e87
Add comprehensive test runner migration analysis (Vitest recommended)
Copilot Jan 16, 2026
69eb77e
WIP: Begin Vitest migration - dependencies installed, config created
Copilot Jan 16, 2026
bc1a34b
Install @analogjs/vitest-angular and debug TestBed initialization
Copilot Jan 17, 2026
0a42510
Implement Angular CLI built-in Vitest support (partial - needs more w…
Copilot Jan 17, 2026
f3967dd
Fix Vitest types and add explicit imports - tests now compile but hav…
Copilot Jan 17, 2026
ad500c1
Add @angular/compiler and optimize test config (tests compile but nee…
Copilot Jan 17, 2026
4e1b992
Add FormsModule to test files and document Vitest architectural limit…
Copilot Jan 17, 2026
b73a441
Add comprehensive standalone components migration plan with plugin im…
Copilot Jan 17, 2026
62f1c22
Phase 1: Convert all components to standalone (automated migration)
Copilot Jan 17, 2026
0c7875a
Fix missing MatTooltip import - application builds successfully
Copilot Jan 17, 2026
86f6ff7
Update Vitest config and document standalone migration success
Copilot Jan 17, 2026
9acfd10
Complete standalone migration phases 2 & 3 - full modernization achieved
Copilot Jan 17, 2026
14c14ff
Fix unit tests: revert to Jest, fix configuration and test imports
Copilot Jan 17, 2026
2e6b759
Fix Jest module resolution: change from 'bundler' to 'node'
Copilot Jan 17, 2026
35167b1
Document Jest/Angular 21 incompatibility - tests have pre-existing fa…
Copilot Jan 17, 2026
1d876fe
Recreate tsconfig.spec.json for Jest configuration
Copilot Jan 17, 2026
0c3c9b9
Complete migration from Jest to Vitest - remove all Jest dependencies…
Copilot Jan 17, 2026
0eb3741
Add missing Vitest imports to 6 test files to fix TypeScript compilat…
Copilot Jan 28, 2026
ecbee7c
Merge branch 'master' into copilot/update-angular-to-21
renemadsen Jan 28, 2026
668f49a
Fix vitest/globals type definition error by removing it from tsconfig…
Copilot Jan 28, 2026
3ca35e3
Remove vitest.config.mts to fix Angular CLI builder compatibility issue
Copilot Jan 28, 2026
62d70e3
Upgrade Vitest from 2.0.5 to ^2.1.0 for Angular CLI compatibility
Copilot Jan 28, 2026
2c29b53
Add include pattern to test configuration to fix "No test files found…
Copilot Jan 28, 2026
1e77f52
Upgrade Vitest to 4.0.18 - fix test discovery and execution with Angu…
Copilot Jan 28, 2026
039dbb0
Plan: Remove Zone.js and refactor tests for Vitest compatibility
Copilot Jan 28, 2026
ef146a6
Remove Zone.js and replace waitForAsync with async/await for Vitest c…
Copilot Jan 28, 2026
32ee5ab
Add TranslateService mock provider to 25 test files
Copilot Jan 28, 2026
850cfba
Fix TranslateService mock stream method setup
Copilot Jan 28, 2026
c0a4402
test: remove fixture.detectChanges() from beforeEach in 14 test files
Copilot Jan 28, 2026
c22681e
Add missing AppMenuStateService provider to folders and workers compo…
Copilot Jan 28, 2026
71e877e
Add vitest.config.ts for direct vitest runs and verify test fixes
Copilot Jan 28, 2026
8ecc18c
Fix remaining test failures
Copilot Jan 28, 2026
e5587a5
Fix WDIO e2e test TypeScript configuration for Angular 21 compatibility
Copilot Jan 28, 2026
59a2491
Merge pull request #7457 from microting/copilot/update-angular-to-21
renemadsen Jan 29, 2026
f0d3d47
Fixing pr issue for angular19 branch.
renemadsen Jan 29, 2026
add4ac3
Merge branch 'stable' into angular19
renemadsen Mar 30, 2026
43737b4
Fix SharedTagsComponent build errors by converting to standalone
renemadsen Mar 30, 2026
c3c96e0
Register CMS reducer and effects in app store
renemadsen Mar 30, 2026
ca5218b
Provide CmsService at root level to fix runtime injection error
renemadsen Mar 30, 2026
e7f2b0c
Restore NgModule config that was commented out by standalone migration
renemadsen Mar 30, 2026
57d7e82
Add CMS reducer, effects, and locale init to standalone bootstrap in …
renemadsen Mar 30, 2026
c928456
Fix standalone migration: add @wdio/globals, fix component declarations
renemadsen Mar 30, 2026
dc05d8a
Fix Angular Material 21 pointer event interception on form field subs…
renemadsen Mar 31, 2026
1970939
Fix Angular Material 21 pointer event interception in dialogs and dro…
renemadsen Mar 31, 2026
447fea9
Fix Cypress page objects for mat-menu pattern and auth guard CMS timeout
renemadsen Mar 31, 2026
3917393
Fix duplicate HTML IDs in table templates and update all test selectors
renemadsen Mar 31, 2026
c9ac33b
Fix CDK overlay backdrop and dialog close issues
renemadsen Mar 31, 2026
03c3833
Fix Playwright DeviceUsers page object and mat-form-field stacking
renemadsen Mar 31, 2026
677178a
Fix remaining dialog close issues and expansion panel visibility
renemadsen Mar 31, 2026
5bd3c53
Fix device user button selectors to use indexed IDs
renemadsen Mar 31, 2026
e33571b
Fix duplicate actionMenu IDs in all table templates and update selectors
renemadsen Mar 31, 2026
ad00c74
Fix MyEforms page object: wait for API response and trim eFormName
renemadsen Apr 1, 2026
ca1611a
Fix mat-tree-node visibility in expanded expansion panels
renemadsen Apr 1, 2026
a28689e
Fix mdc-text-field will-change creating stacking context blocking ng-…
renemadsen Apr 1, 2026
774cb61
Disable CDK Popover API to fix ng-select dropdowns in Material dialogs
renemadsen Apr 1, 2026
87c877f
Fix Playwright test failures: missing await, null guards, and asserti…
renemadsen Apr 1, 2026
d49090d
Fix Playwright test stability: proper waits, retry logic, and increas…
renemadsen Apr 1, 2026
28396a5
Add provideZoneChangeDetection and OVERLAY_DEFAULT_CONFIG to standalo…
renemadsen Apr 1, 2026
bbdf61f
Fix remaining Playwright test failures in jobs D, H, J and disable re…
renemadsen Apr 1, 2026
c77bb5f
Add Angular 21 plugin migration guide
renemadsen Apr 1, 2026
42ebf0a
Upgrade @ngrx/* packages from 19.2.1 to 21.1.0
renemadsen Apr 2, 2026
de7460c
Update yarn.lock for @ngrx/* 21.1.0
renemadsen Apr 2, 2026
c9851c8
Merge pull request #7744 from microting/upgrade-ngrx-21
renemadsen Apr 3, 2026
a622190
feat(styles): archive folder tree, document panel and drawer styles
renemadsen Oct 16, 2026
fb37e81
fix(styles): readable archive labels, selected and empty folder rows
renemadsen Oct 16, 2026
21a1309
Merge pull request #8148 from microting/feat/archive-folders-styles
renemadsen Oct 16, 2026
8f7df98
docs: Angular 21 upgrade design (frontend + 14 plugins)
renemadsen Oct 17, 2026
52a3e2d
docs: Angular 21 upgrade implementation plan
renemadsen Oct 17, 2026
0d2247f
Merge origin/master into angular19
renemadsen Oct 17, 2026
f076a5d
refactor: convert components merged from master to standalone
renemadsen Oct 17, 2026
91e1bc8
chore: unit-test script, workflow step name and dead imports after merge
renemadsen Oct 17, 2026
6d1d6fd
fix(archive): the document table scrolls inside its own frame
renemadsen Oct 17, 2026
3495a67
Merge pull request #8153 from microting/fix/1450-archive-table-scroll
renemadsen Oct 17, 2026
5559883
refactor: convert example-pn and spinner-pn to standalone
renemadsen Oct 17, 2026
3b6e120
style: fix lint errors after Angular 21 merge
renemadsen Oct 17, 2026
4977c5a
test(playwright): use indexed site selectors in theme-new-design spec
renemadsen Oct 17, 2026
d434af8
fix(navigation): import RouterLinkActive so the active menu entry is …
renemadsen Oct 18, 2026
4bcd78b
Merge pull request #8155 from microting/ng21/merge-master
renemadsen Oct 18, 2026
86ee77f
style(table): match indexed action-menu ids on highlighted rows
renemadsen Oct 18, 2026
e7479b6
Merge pull request #8157 from microting/ng21/action-menu-scss
renemadsen Oct 18, 2026
c499a7f
Merge origin/stable into angular19 (archive styles)
renemadsen Oct 18, 2026
11de44b
fix(cases): break the EformCasesModule import cycle in case-edit comp…
renemadsen Oct 18, 2026
03fe800
Merge pull request #8158 from microting/ng21/merge-stable
renemadsen Oct 18, 2026
81e49d3
Merge pull request #8159 from microting/ng21/cases-cycle
renemadsen Oct 18, 2026
1e02965
test(visual-editor): wait for the field dialog to close before openin…
renemadsen Oct 18, 2026
e5a5c90
Merge pull request #8160 from microting/ng21/visual-editor-dialog
renemadsen Oct 18, 2026
d2743a3
fix(auth): don't bounce signed-in users to /auth when CMS config is slow
renemadsen Oct 18, 2026
ffa5d56
Merge pull request #8162 from microting/ng21/guard-timeout
renemadsen Oct 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
8 changes: 6 additions & 2 deletions .github/workflows/dotnet-core-master.yml
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,8 @@ jobs:
uses: actions/setup-node@v3
with:
node-version: 22
- name: Enable Corepack
run: corepack enable
- name: yarn install
run: cd eform-client && yarn install
- name: Install Playwright browsers
Expand Down Expand Up @@ -152,9 +154,11 @@ jobs:
uses: actions/setup-node@v3
with:
node-version: 22
- name: Enable Corepack
run: corepack enable
- name: Install dependencies
run: cd eform-client && yarn install --frozen-lockfile
- name: Run Jest unit tests
run: cd eform-client && yarn install --immutable
- name: Run unit tests
run: cd eform-client && npm run test:ci
test-dotnet:
runs-on: ubuntu-latest
Expand Down
8 changes: 6 additions & 2 deletions .github/workflows/dotnet-core-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@ jobs:
uses: actions/setup-node@v3
with:
node-version: 22
- name: Enable Corepack
run: corepack enable
- name: yarn install
run: cd eform-client && yarn install
- name: Install Playwright browsers
Expand Down Expand Up @@ -148,9 +150,11 @@ jobs:
uses: actions/setup-node@v3
with:
node-version: 22
- name: Enable Corepack
run: corepack enable
- name: Install dependencies
run: cd eform-client && yarn install --frozen-lockfile
- name: Run Jest unit tests
run: cd eform-client && yarn install --immutable
- name: Run unit tests
run: cd eform-client && npm run test:ci
test-dotnet:
runs-on: ubuntu-latest
Expand Down
164 changes: 164 additions & 0 deletions ANGULAR_21_MIGRATION_NOTES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
# Angular 21 Migration Notes

## Overview
This document describes the migration from Angular 20 to Angular 21.1.0 completed on January 16, 2026.

## Package Updates

### Core Angular Packages
All Angular packages were updated from version 20.x to 21.1.0:
- `@angular/animations`: 20.1.2 → 21.1.0
- `@angular/cdk`: 20.1.2 → 21.1.0
- `@angular/common`: 20.3.14 → 21.1.0
- `@angular/compiler`: 20.1.2 → 21.1.0
- `@angular/core`: 20.3.16 → 21.1.0
- `@angular/forms`: 20.1.2 → 21.1.0
- `@angular/localize`: 20.1.2 → 21.1.0
- `@angular/material`: 20.1.2 → 21.1.0
- `@angular/platform-browser`: 20.1.2 → 21.1.0
- `@angular/platform-browser-dynamic`: 20.1.2 → 21.1.0
- `@angular/router`: 20.1.2 → 21.1.0

### Angular CLI and Dev Tools
- `@angular/cli`: 20.3.9 → 21.1.0
- `@angular/compiler-cli`: 20.1.2 → 21.1.0
- `@angular/language-service`: 20.3.10 → 21.1.0
- `@angular-devkit/build-angular`: 20.3.9 → 21.1.0
- `@angular-devkit/core`: 20.3.9 → 21.1.0
- `@angular-devkit/schematics`: 21.0.4 → 21.1.0

### Angular ESLint
- `@angular-eslint/builder`: 20.5.1 → 21.1.0
- `@angular-eslint/eslint-plugin`: 21.1.0 (already up to date)
- `@angular-eslint/eslint-plugin-template`: 20.6.0 → 21.1.0
- `@angular-eslint/schematics`: 20.5.1 → 21.1.0
- `@angular-eslint/template-parser`: 20.5.0 → 21.1.0

### Related Dependencies
- `@ng-matero/extensions`: 20.4.2 → 21.1.3
- `@angular-builders/jest`: 20.0.0 → 21.0.3
- `ngx-cookie-service`: 20.1.1 → 21.1.0

### TypeScript
- `typescript`: 5.8.3 → 5.9.3 (required by Angular 21)

### Testing
- Added `jest-environment-jsdom`: ^30.2.0 (required for Jest 30)

## Configuration Changes

### tsconfig.json
The main TypeScript configuration required two critical changes:

1. **Module Resolution**: Changed from `"node"` to `"Bundler"`
```json
{
"compilerOptions": {
"moduleResolution": "Bundler"
}
}
```
This change is **required** for Angular 21's module resolution system to work properly with Angular Material and other scoped packages.

2. **Path Mappings**: Removed wildcard path mapping
```json
// REMOVED (was causing module resolution conflicts):
"*": ["./*"]

// KEPT:
"src/*": ["./src/*"]
```
The wildcard path was interfering with proper resolution of @angular/* packages.

### tsconfig.spec.json
Updated to explicitly set Bundler module resolution:
```json
{
"compilerOptions": {
"module": "ES2022",
"moduleResolution": "Bundler"
}
}
```

## Breaking Changes

### TypeScript Version Requirement
Angular 21 requires TypeScript >= 5.9.0 and < 6.0.0. Projects using TypeScript 5.8.x or earlier must upgrade.

### Module Resolution
The change to `moduleResolution: "Bundler"` is mandatory. Projects cannot use `"node"` module resolution with Angular 21.

## Known Issues and Warnings

### Peer Dependency Warnings
Several third-party packages have not yet updated their peer dependencies for Angular 21:
- `@angular-material-extensions/password-strength` (expects Angular 16)
- `@ngrx/*` packages (expect Angular 19)
- `@sentry/angular` (expects Angular ≤ 20)
- `@swimlane/ngx-charts` (expects Angular 18-20)
- `ng2-dragula` (expects Angular < 20)
- `ng2-file-upload` (expects Angular 20)

These warnings do not prevent the application from building or running. The packages work with Angular 21 despite the peer dependency mismatches.

### Sass Deprecation Warnings
There are deprecation warnings for Sass `if()` function usage in:
- `src/scss/libs/ngx-editor/_ngx-editor.scss`
- `src/scss/libs/theme.scss`

These are non-blocking warnings that should be addressed in a future update.

### Unit Test Module Resolution
Jest unit tests currently have TypeScript module resolution issues with the new `Bundler` module resolution strategy. This is a limitation of the jest-preset-angular transformer and does not affect the application build or runtime. The build works correctly.

## Migration Steps for Other Developers

To apply this upgrade to a fresh clone:

1. **Install dependencies**:
```bash
cd eform-client
rm -rf node_modules
yarn install
```

2. **Build the application**:
```bash
yarn build
```

3. **Verify the build**:
- Check that the build completes successfully
- The initial build may take 30-40 seconds
- Subsequent builds with cache will be faster

## Rollback Procedure

If you need to rollback to Angular 20:

1. Check out the commit before the Angular 21 upgrade
2. Delete `node_modules` and `yarn.lock`
3. Run `yarn install`
4. Build the application

## Performance Notes

- Build time: ~30-35 seconds (similar to Angular 20)
- Bundle sizes: No significant changes observed
- Application startup: No noticeable performance impact

## Compatibility

### Node.js
- Minimum: Node.js 18.x
- Tested: Node.js 20.19.6 ✅

### Browsers
No changes to browser support. Angular 21 maintains the same browser compatibility as Angular 20.

## References

- [Angular 21 Release Notes](https://github.com/angular/angular/releases/tag/21.0.0)
- [Angular Update Guide](https://update.angular.io/)
- [TypeScript 5.9 Release Notes](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-9.html)
1 change: 1 addition & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ ENV PATH /app/node_modules/.bin:$PATH
COPY eform-client ./
RUN apt-get update
RUN apt-get -y -q install ca-certificates
RUN corepack enable
RUN yarn install
RUN yarn build
RUN if [ -n "$SENTRY_AUTH_TOKEN" ] && [ "$DISABLE_SENTRY" != "true" ]; then yarn sentrysourcemap; else echo "Sentry sourcemap upload skipped (DISABLE_SENTRY=$DISABLE_SENTRY)"; fi
Expand Down
Loading
Loading