This repository provides an Angular wrapper for the dragula drag-and-drop library. It exposes a directive (`[dragula]`) to mark containers as part of a drag group, and a singleton service (`DragulaService`) to configure groups and subscribe to typed RxJS observables for all dragula events. The library supports two-way model binding (`[(dragulaModel)]`) to synchronize dragged data with component arrays, and offers a plugin system for mock drake objects during testing. The architecture cleanly separates concerns: the directive handles DOM registration and model updates, while the service manages group lifecycle and event relay from native dragula callbacks to Angular Observables. It is built with Nx monorepo tooling and includes a demo application, e2e tests, and CI/CD pipelines for building, testing, and publishing to npm. The codebase demonstrates mature Angular patterns, including proper lifecycle management, subscription handling, and typed event emitters.
ng2-file-upload is an Angular library providing drag-and-drop and file selection directives for file upload. It consists of two directives (ng2FileSelect and ng2FileDrop) and a core FileUploader class that manages a queue of FileItems, handles XHR uploads with multipart or streaming (disableMultipart), and offers filter-based validation (file size, mime type, file type, queue limit). The demo application showcases standard usage with a remote API. The library is actively maintained with support for Angular 21, but its code style predates modern standalone components and uses legacy Angular patterns (non-standalone directives, manual DI via inject()). Tooling uses Nx 22, Jest, and ng-packagr. While functional and battle-tested (1899 stars), the codebase shows medium technical drift due to reliance on deprecated Angular patterns and a monolithic FileUploader class.