Back to jointjs.com.
In addition to base CSS (which takes care of the layout of plugins) JointJS provides four built-in CSS themes (which provide visual styling). However, there was previously no way to unbundle these themes from the base CSS if they were not needed by your application.
We recognized this as an opportunity for optimization - if your application does not use any of the themes, for example, this change provides a way to reduce the footprint of JointJS in your application with very little effort. That being said, the existing
rappid.cssfile (which contains the base CSS and all themes) has been left unchanged too, so you can continue using it if you wish.
Separate bundled files were added for the base CSS of JointJS, and for each built-in theme. You can find the new files in the
distfolder of your JointJS+ package -
_stands for the names of JointJS built-in themes:
modern), along with their minified versions.
For example, if you are currently using the
build/package/rappid.min.cssfile as follows…
<link rel="stylesheet" type="text/css" href="./JointJSPlus/build/package/rappid.min.css">
…you can switch to the a combination of base CSS +
moderntheme like this:
<link rel="stylesheet" type="text/css" href="./JointJSPlus/dist/rappid.base.min.css"> <link rel="stylesheet" type="text/css" href="./JointJSPlus/dist/rappid.theme.modern.min.css">
The dataObject BPMN shape was added to the stencil of the BPMNEditor application:
Additionally, using touchpad for zooming and panning was enabled for the application (by adding listeners for the
cellViewNamespaceproperties weren’t properly configured in the application. We have fixed the code to be in line with JointJS best practices.
This change fixes an issue in CommandManager when embedded Elements were added to the Graph in a certain order (parents first, then children).
In that case, the undo action explicitly removed the parent first (which caused its children to be removed implicitly), and then it tried to explicitly remove the children, which threw an error - because the children have already been removed.
This fix removes a bug stemming from duplicate code - the
Cell.removeProp()function is a newer function which provides the same functionality at a more logical location, and which properly re-renders the CellView for
It is possible to define custom operators for use in Inspector expressions. Crucially, all of these extra operators must be defined in the
operatorsobject during the instantiation of the Inspector.
Previously, if an unknown operator were encountered by the expression-evaluation algorithm, it would fail with a difficult-to-debug error. Instead, the algorithm now explicitly checks the list of built-in primitive and composite operators and the list of registered custom operators (as defined in the
operatorsobject) for each expression encountered. If an operator cannot be found in either of these lists, an error providing its name is thrown.
Previously, scrolling a PaperScroller while having a Navigator component defined - but not rendered - caused an error to be thrown. The issue has been resolved for this version by fixing the Navigator component’s PaperScroller listener.
There was an error in our implementation of inertia for the PaperScroller component - on drag start, a nonzero inertia velocity was introduced, which was a problem if drag end was then triggered immediately afterward without any intervening drag movement (e.g. when using the tap gesture). This caused the incorrect value of inertia velocity to be used, introducing movement when none was expected. The inertia implementation was fixed in this version to prevent this issue.
This fix ensures that
selection-boxevents are triggered even when there are no allowed interactions with Selection box or active elements. In addition, the fix prevents triggering solo
action:pointerupevent when selecting and translating in this situation.
This fix prevents an issue where starting to drag a non-selected Element when a Selection is present on a Paper caused the Selection to be dragged (instead of the Element).
This is a collection of fixes for making the behavior of Stencil groups more consistent:
- The Graph sent to the
layoutcallback function always has the
groupproperty set. This was previously only the case at initialization, but now it is also done when filtering the Graph.
- Each group’s specific
paperOptionsare taken into account during Graph creation (as is the case for all other attributes).
filter()function no longer throws an error when no search is defined (
''). Instead, it hides all Elements (equivalent to setting the search to
- The Graph sent to the
There was a bug in the implementation of several PortLabel functions (
'radialOriented'), which caused them to ignore values provided in
label.position.args.attrs. This change makes sure that these values are correctly propagated for all PortLabel layout functions, such that all calculated attributes can be overridden manually.
jumpoverconnector was treating overlapping links as having an intersection, which caused it to draw jumps where they were not expected. We have added additional logic to the algorithm to prevent this behavior.
Before fix After fix
When breaking down text, occasionally, an extra NO_SPACE character (
'0') was added by the
breakText()function. This was a bug - the character is internally used to separate lines, and in certain edge cases (when moving the last character from the previous line to the new line), it was not removed as expected. The function has been fixed to prevent this issue.