v0.9.0 - Floating Edges, Custom Port Content & Other Improvements
✨ Added
- API stability and deprecation policy documentation with defined stability levels and Angular version support matrix (#462)
- API Extractor integration for automated breaking change detection with CI validation (#462)
- Landing page diagram example in documentation (#464)
- Floating edges for edges with no ports specified (#465)
- Ports with custom content - ports can now render custom Angular components instead of simple circles (#468)
hideWatermarkconfig option to hide the ngDiagram watermark via diagram configuration (#469)- Expose
computePartsBoundsmethod in API (#477) - Added overload to
getOverlappingNodesto acceptNodeobject in addition to node ID, supporting cases when the node object has newer data than the node in state (e.g., within middlewares) (#486) modelActionTypesproperty onMiddlewareContext- an array containing all action types that triggered the middleware execution. For transactions, this includes the transaction name followed by all action types from commands executed within the transaction. For single commands, this is a single-element array (#489)- Add grab cursor on background when panning (#479)
- Disable diagram panning by config
viewportPanningEnabled(#480) - Async transaction support - transactions now accept async callbacks, allowing asynchronous operations like data fetching before adding or modifying the diagram (#493)
waitForMeasurementstransaction option - ensures the transaction promise resolves only after all DOM measurements (node sizes, port positions, edge labels) are complete. Useful when performing viewport operations likezoomToFit()after adding or modifying elements (#493)
🧩 Changed
- Standardized error messages across the ng-diagram library (#463)
🐛 Fixed
- Fixed misleading error when destroying
NgDiagramModelServiceafter engine is already destroyed. The error incorrectly reported "Library engine not initialized yet". Now the service checks if engine is available and skips listener cleanup if already destroyed. (#466 - thanks for finding this @Filipstrozik 💪) - Fixed keyboard movement of nodes with arrow keys when using large snap step values (#461)
- Fixed drag-snapping issues with different snapping configurations. The issue still occurred when dragging multiple nodes at the same hierarchy level (i.e., nodes without groups) (#470)
- Fixed incorrectly computed measuredBounds for nodes (#486)
- Fixed missing edge arrowheads in Safari. Safari doesn't support
context-strokein SVG markers, so a fallback using inline markers withcurrentColorsubstitution is now used for Safari compatibility (#487) - Fixed copy-paste retaining
groupIdwhen pasting nodes outside their group. NowgroupIdis only preserved when the group is also copied, with the reference updated to the new group's ID (#491) - Fixed zoom to fit not working correctly on diagram initialization (#492)
- Fixed bullet points styles in the documentation (#494)
modelActionTypeproperty onMiddlewareContextis now deprecated. UsemodelActionTypesinstead, which supports multiple actions from transactions. (#489)