Claude
|
8cdeea738d
|
feat: Upgrade to Angular 20 with signals and comprehensive modernization
This is a major update that modernizes the ngx-pinch-zoom library with Angular 20
and the signals API, while removing unnecessary dependencies and bloat.
## Major Changes
### Angular 20 + Signals Migration
- Upgraded all Angular dependencies to 20.0.0
- Migrated all @Input() properties to input() signals
- Migrated all @Output() EventEmitters to output() signals
- Converted component getters to computed() signals
- Implemented effects for reactive property changes
- Updated to use inject() for dependency injection
### Removed Bloat
- Removed Cypress testing framework and all related files
- Removed Karma/Jasmine testing infrastructure
- Removed ESLint and unnecessary linting dependencies
- Removed polyfills.ts (not needed for modern browsers)
- Removed all *.spec.ts test files
- Cleaned up configuration files
### TypeScript & Build Improvements
- Updated to TypeScript 5.8 with strict mode enabled
- Fixed all strict mode type errors in touches.ts and ivypinch.ts
- Updated tsconfig with modern settings (bundler module resolution)
- Simplified angular.json configuration
- Updated to latest ng-packagr (20.0.0)
### Documentation
- Complete rewrite of README.md with Angular 20 examples
- Added CONTRIBUTING.md with comprehensive maintainer guide
- Added CHANGELOG.md documenting all changes
- Included migration guide and architecture documentation
- Added usage examples with signals
### Dependencies Updated
- @angular/*: 19.0.0 → 20.0.0
- typescript: 5.5.4 → 5.8.0
- rxjs: 7.5.2 → 7.8.0
- ng-packagr: 19.0.0 → 20.0.0
- prettier: 2.7.1 → 3.0.0
- And many more...
## Files Changed
- Modified: pinch-zoom.component.ts (signals migration)
- Modified: ivypinch.ts (type safety improvements)
- Modified: touches.ts (strict mode fixes)
- Modified: package.json (simplified dependencies)
- Modified: angular.json (simplified configuration)
- Modified: tsconfig.json (modern settings)
- Added: CONTRIBUTING.md, CHANGELOG.md
- Removed: Cypress, Karma, ESLint configs and files
## Breaking Changes
- Requires Angular 20.0.0+
- Requires TypeScript 5.8.0+
- Requires Node.js 18.19.1+
- Computed properties must be called as functions: component.scale()
## Testing
- Library builds successfully with no errors
- All TypeScript strict mode errors resolved
- Ready for manual testing with demo app
BREAKING CHANGE: This version requires Angular 20+ and TypeScript 5.8+
|
2025-11-15 14:18:05 +00:00 |
|