- Added a new markdown file outlining a structured migration plan for upgrading Angular projects.
- The plan includes input requirements, document structure, style requirements, and success criteria.
- Emphasizes clarity and actionable steps for a smooth migration process.
- Updated migration plan status to 'COMPLETED' after successful upgrade from Angular 19 to Angular 20.
- Completed tasks include core Angular migration, ESLint updates, and fixing breaking changes.
- Added details on package updates and migration accomplishments.
- Documented the final commit hash and migration date for reference.
- Update Angular from 19.2.18 to 20.3.9
- Update Angular Material/CDK from 19.2.19 to 20.2.14
- Update TypeScript from 5.8.3 to 5.9.3
- Update @typescript-eslint from 6.21.0 to 8.18.2
- Update @angular-eslint from 19.8.1 to 20.0.0
- Update ng-packagr from 19.2.2 to 20.3.2
- Update @mat-datetimepicker/core from 15.0.2 to 16.0.1 (Angular 20 compatible)
Angular Migrations Applied:
- Convert templates to new control flow syntax (@if, @for, @switch)
- Migrate DOCUMENT imports from @angular/common to @angular/core
- Update Router.getCurrentNavigation() to currentNavigation signal
- Replace deprecated InjectFlags enum usage
- Replace TestBed.get with TestBed.inject
Breaking Changes Fixed:
- Remove deprecated Directionality.value setter (read-only in Angular 20)
- Update ESLint config: replace @typescript-eslint/no-var-requires with no-require-imports
- Remove @typescript-eslint/brace-style rule (deprecated in v8)
Configuration:
- Add .npmrc with legacy-peer-deps for CI/CD compatibility
- Update ESLint rules for @typescript-eslint v8 compatibility
BREAKING CHANGE: Requires Angular 20+ and @mat-datetimepicker/core@16.0.1
Note: Nx build system currently has plugin worker issues. TypeScript compilation
verified successfully. Full builds and tests pending Nx worker resolution.
See MIGRATION_SUMMARY.md for complete details.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit introduces a new migration plan for upgrading the Alfresco Nx monorepo from Angular 19 to Angular 20. The plan includes a structured approach with phases for pre-migration analysis, core migration, ESLint updates, and verification steps, ensuring a smooth transition with full testing and documentation.
* refactor: improve context menu overlay service implementation
- Introduced a new interface for overlay references with backdrop handling.
- Updated event listener for backdrop clicks to use the new interface, enhancing type safety.
- Refactored the injector creation method to utilize the Injector.create method for better clarity and maintainability.
- Improved the fake element's type definition in the getOverlayConfig method for better type inference.
These changes enhance the overall robustness and readability of the context menu overlay service.
* refactor: enhance type safety in context menu components
- Introduced the ContextMenuItem interface to improve type definitions for context menu items.
- Updated the ContextMenuListComponent to use ContextMenuItem for links and menu item parameters, enhancing clarity and maintainability.
- Modified CONTEXT_MENU_DATA injection token to specify ContextMenuItem[] for better type safety.
- Adjusted the ContextMenuOverlayConfig interface to accept an array of ContextMenuItem, ensuring consistent data handling.
These changes improve the overall robustness and readability of the context menu implementation.
[ci:force]
* refactor: remove unnecessary eslint-disable comments in category management and search components
- Eliminated eslint-disable comments related to no-underscore-dangle in the CategoriesManagementComponent and SearchControlComponent tests, improving code clarity and adherence to linting rules.
- This change enhances the overall readability of the test files by ensuring consistent coding standards.
* refactor: simplify backdrop click handling in context menu overlay service
- Removed the unnecessary backdrop click handling logic, replacing it with a direct call to close the overlay reference. This change enhances code clarity and reduces complexity in the event listener implementation.
* refactor: streamline backdrop handling in context menu overlay service
- Removed the custom interface for overlay references with backdrop handling, simplifying the code.
- Updated the event listener for backdrop clicks to directly use the overlay's backdropElement, enhancing clarity and maintainability.
- This change improves the overall robustness of the context menu overlay service.
* refactor: clean up code in SuperagentHttpClient and upload.spec
- Removed unnecessary eslint-disable comment in SuperagentHttpClient for improved code clarity.
- Refactored promise handling in upload.spec to utilize an array for better management of multiple promises during file upload error handling.
* chore: update cspell and ESLint configurations
- Added "webscript" to the cspell dictionary for improved spell checking.
- Updated ESLint configuration to disable the "@typescript-eslint/no-explicit-any" rule, allowing more flexibility in type definitions.
* fix: enhance ImgViewerComponent to handle cleanup and prevent errors after destruction
- Added a `destroyed` flag to manage component lifecycle and prevent operations on a destroyed instance.
- Implemented `afterEach` hooks in tests to ensure proper fixture cleanup.
- Updated key event handlers and methods to check for the `destroyed` state before executing actions, improving stability and preventing errors.
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix: add aria-hidden attribute to notification history button for accessibility
- Updated the notification history button to include the `aria-hidden` attribute, improving accessibility for screen readers and enhancing user experience.
* fix: improve key event handling in ImgViewerComponent
- Updated key event handlers to check for the presence of the cropper before executing actions, enhancing stability and preventing errors when the component is destroyed.
- Removed redundant checks from individual arrow key handlers, streamlining the code.
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
- Modified several components to use optional chaining for safer property access, enhancing code robustness.
- Updated ESLint configuration to enforce stricter rules on the use of optional chaining.
- Adjusted tests to reflect changes in property access patterns.
* Refactor enums to const objects and update ESLint rules
- Converted several TypeScript enums to const objects for better type inference and immutability.
- Updated ESLint configuration to disable 'no-redeclare' rule and added new restrictions on schema usage.
- Adjusted package-lock.json to mark several dependencies as peer dependencies.
* Refactor enums to const objects in site-dropdown and new-version-uploader models
- Converted TypeScript enums to const objects for improved type safety and immutability in `sites-dropdown.component.ts` and `new-version-uploader.model.ts`.
- Updated related types to reflect the changes in both files.
- Enhanced error handling in the `DropdownSitesComponent` by using the `subscribe` method with an object for better readability.
* Refactor TypeScript types and improve error handling in component tests
- Updated type annotations in `upload.service.ts` and `node-actions.service.ts` for better type safety.
- Enhanced error handling in various component tests by using more descriptive error messages in `task-attachment-list.component.spec.ts`, `attach-file-widget-dialog.component.spec.ts`, and `task-form.component.spec.ts`.
- Removed unnecessary schemas from test configurations in several component spec files to streamline the testing setup.
* Refactor TypeScript enums to const objects for improved type safety
- Converted multiple TypeScript enums to const objects across various models, including `AppConfigValues`, `Status`, `ShowHeaderMode`, `WidgetTypeEnum`, and others.
- Updated related type definitions to enhance type inference and immutability.
- Adjusted ESLint configurations by removing the 'no-redeclare' rule to streamline code quality checks.
* Refactor TypeScript types for improved type safety and consistency
- Updated type annotations in `document-list.component.ts`, `document-actions.service.ts`, and `node-actions.service.ts` to use `Observable` instead of `Subject` for better reactive programming practices.
- Enhanced type definitions in `search-date-range.component.ts` and related spec files to allow `inLastValue` to be either a string or a number, improving flexibility in handling date range inputs.
- Adjusted test cases to reflect these type changes, ensuring consistency across the application.
* Enhance type safety in ViewerComponent by specifying type for closeButtonPosition
- Updated the type annotation for `closeButtonPosition` in `viewer.component.ts` to explicitly define it as `CloseButtonPosition`, improving type safety and clarity.
* Enhance type safety in DataTableComponent by specifying type for showHeader
- Updated the type annotation for `showHeader` in `datatable.component.ts` to explicitly define it as `ShowHeaderMode`, improving type safety and clarity.
* Update PDF viewer test to accommodate varying date formats
- Modified the test for the annotation popup in `pdf-viewer.component.spec.ts` to check for the presence of date components instead of a specific date format, enhancing test robustness across different locales.
* AAE-40748 Various i18n and storage bug fixes
* refactor: update NoopTranslateModule to use provideHttpClient and provideHttpClientTesting
Replaced HttpClientTestingModule with provideHttpClient and provideHttpClientTesting for improved dependency injection in the NoopTranslateModule.
* refactor: update FileUploadErrorPipe tests to use TestBed for dependency injection
Replaced direct instantiation of FileUploadErrorPipe with TestBed configuration, utilizing NoopTranslateModule for improved testing practices.
* test: enhance StorageService and UserPreferencesService tests for improved initialization logic
Added tests for UserPreferencesService to verify locale and pagination initialization from storage and config. Updated StorageService tests to restore original localStorage after each test for better isolation.
* refactor: simplify TranslationService by removing direct StorageService dependency
* Replace shelljs with native node api
* Refactor command execution in audit and changelog scripts to use spawnSync for improved security and error handling
* cleanup deprecated AppConfigModule
* migrate factory to initializer
* add provideAppExtensions() api to allow deprecating ExtensionsModule in apps
* fix viewer render import
* use Angular control flow instead of NgIf
* use Angular control flow instead of NgSwitch
* update api docs and clean dead code
* update api docs and clean dead code
rebasing onto develop branch
* [ACS-8770] fix unit test after auth refactor
* [ACS-8770] fix sonarcube issues
* [ACS-8770] update auth service doc file
* [ACS-8770] clean up demo-shell artifacts
---------
Co-authored-by: Anton Ramanovich <Anton.Ramanovich@hyland.com>