The list below describes recent changes and additions to MvcDiagram:
New in version 4.3
Multi-platform support
Multi-platform System.Drawing support has been deprecated in .NET 8. To allow hosting on non-Windows servers, we have moved server-side diagram code to Microsoft.Maui.Graphics API.
.NET 8 support
Added assemblies and sample projects for .NET 8. Distribution no longer includes assemblies for older .NET versions. If bug fixes are required, we will be patching version 4.2 branch for clients that host on old .NET versions, but no new features will be added to it.
Shape design enhancements
New client-side event system
Event emitter objects are now exposed as properties of Diagram and DiagramView, and you can register handlers by calling their addEventListener method:
JavaScript
Copy Code
|
---|
diagram.nodeCreated.addEventListener( (sender, args) => { if (sender.defaultShape.id == "Rectangle") args.node.anchorPattern = pattern1; else args.node.anchorPattern = pattern2; }); |
Legacy event handling syntax will remain supported for compatibility with old code.
Collapse and expand table rows
Table rows can be assigned to distinct sections of the table. Each section can be collapsed or expanded, hiding or showing all rows in the section except the header one. To define a section, set the header property of a row. A section consists of all rows after a header row and spans to the next header. Each header row displays a [±] button that allows expanding or collapsing the section interactively. Clicking that button raises the tableSectionCollapsed and tableSectionExpanded events. Sections can be collapsed or expanded programmatically by setting the expanded property of their header rows.
New mouse events
- nodePointed event has been replaced by a set of more specific events: nodePointerEnter and nodePointerLeave are raised when the mouse pointer respectively enters or leaves the boundaries of a node. nodeHovered fires if the pointer rests over a node for hoverDelay milliseconds.
- linkPointed event has been replaced by a set of more specific events: linkPointerEnter and linkPointerLeave are raised when the mouse pointer respectively enters or leaves the boundaries of a link. linkHovered fires if the pointer rests over a link for hoverDelay milliseconds.
Miscellaneous
- dividerStroke properties added to ContainerNode, TableNode and TreeViewNode classes. It lets you customize the appearance of the divider line drawn between a node's caption bar and content area.
- Set the autoDeleteLinks property to false to prevent deleting links along with a node they connect, and disconnect the links instead.
- Enable the autoDeleteChildren property to automatically delete child nodes when a container is deleted.
- Removed an eval call used for creating custom components from CompositeNode Json templates, allowing for stricter Content Security Policy rules. Now custom components must be registered by calling registerComponent method to allow instantiating them from a template.
- linkRouted event raised when links are modified by automatic routing.
API changes
- To allow for stricter Content Security Policy rules, the library no longer loads CSS scripts automatically. If you use components from the Diagramming.Controls package, you must now explicitly link the common-ui.css file from distribution's themes folder.
- linkPointed and nodePointed events replaced by linkHovered and nodeHovered.
.NET API changes
- All properties and method parameters of RectangleF, PointF, SizeF and Color types from System.Drawing namespace have been changed to respective Rect, Point, Size and Color from Microsoft.Maui.Graphics namespace.
- Due to BinaryFormatter deprecation and runtime exceptions in non-desktop applications, binary SaveToFile and LoadFromFile methods have been removed. Remaining serialization methods allow storing diagrams in JSON and XML formats.
- SwfExporter (Adobe Flash format) and WmfExporter (Windows Metafile) classes have been removed.