{"id":9224,"date":"2021-09-07T12:28:45","date_gmt":"2021-09-07T09:28:45","guid":{"rendered":"https:\/\/dhtmlx.com\/blog\/?p=9224"},"modified":"2026-01-23T13:30:30","modified_gmt":"2026-01-23T10:30:30","slug":"dhtmlx-diagram-4-0-groups-swimlanes-angular-react-vue-demos","status":"publish","type":"post","link":"https:\/\/dhtmlx.com\/blog\/dhtmlx-diagram-4-0-groups-swimlanes-angular-react-vue-demos\/","title":{"rendered":"DHTMLX Diagram 4.0 with Swimlanes, Groups, and Angular, React, and Vue.js Integration Demos"},"content":{"rendered":"<p>We are delighted to announce the release of the DHTMLX <a href=\"https:\/\/dhtmlx.com\/docs\/products\/dhtmlxDiagram\/\" target=\"_blank\" rel=\"noopener\">JavaScript diagram library<\/a> 4.0. The major version brings out such sought-after elements as swimlanes and groups of items as well as integration demos with Angular, React, and Vue.js. Diagram editors become more flexible. The API is enriched with new events, methods, and configuration options.<\/p>\n<p><strong><a href=\"https:\/\/dhtmlx.com\/docs\/products\/dhtmlxDiagram\/download.shtml\" target=\"_blank\" rel=\"noopener\">Download the brand-new version 4.0 of DHTMLX Diagram &gt;<\/a><\/strong><\/p>\n<p>Let&#8217;s uncover all the release features now!<\/p>\n<h5>Groups<\/h5>\n<p>V4.0 delivers the ability to set up a group of Diagram elements. Groups can comprise shapes as well as other groups. They serve to organize objects and visually separate them from each other according to some criteria. A group also enables users to manipulate elements included in it as one unit.<\/p>\n<p>Groups are available for end-users in the left panel of the Diagram editor. However, they can also be created manually in the process of preparing a dataset by setting up a group object with the <em>&#8220;$group&#8221;<\/em> value of the <strong>type<\/strong> attribute. There is a <a href=\"https:\/\/docs.dhtmlx.com\/diagram\/groups\/\" target=\"_blank\" rel=\"noopener\">wide range of configuration options<\/a> that you can use to specify the appearance and behavior of a group.<\/p>\n<p>For instance, you can hide a group&#8217;s header, make it closable, editable, and position it at the top or bottom, on the left or right side of the group, as shown in the example below.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9225\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2021\/09\/Group-headers.jpg\" alt=\"DHTMLX Diagram - Group Headers\" width=\"889\" height=\"703\" srcset=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2021\/09\/Group-headers.jpg 889w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2021\/09\/Group-headers-300x237.jpg 300w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2021\/09\/Group-headers-768x607.jpg 768w\" sizes=\"auto, (max-width: 889px) 100vw, 889px\" \/><a href=\"https:\/\/snippet.dhtmlx.com\/6hunrja8\" target=\"_blank\" rel=\"noopener\">Check the code snippet &gt;<\/a><\/p>\n<p>In the following example, there is a group containing two shapes. It has specific width and height as well as a closable header. <a href=\"https:\/\/snippet.dhtmlx.com\/0hf8ahrb\" target=\"_blank\" rel=\"noopener\">Check the code snippet with a live preview &gt;<\/a><\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\"><span class=\"br0\">&#123;<\/span><br \/>\ntype<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;$group&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\nid<span class=\"sy0\">:<\/span> <span class=\"nu0\">1<\/span><span class=\"sy0\">,<\/span><br \/>\nwidth<span class=\"sy0\">:<\/span> <span class=\"nu0\">400<\/span><span class=\"sy0\">,<\/span><br \/>\nheight<span class=\"sy0\">:<\/span> <span class=\"nu0\">200<\/span><span class=\"sy0\">,<\/span><br \/>\nx<span class=\"sy0\">:<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">,<\/span><br \/>\ny<span class=\"sy0\">:<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">,<\/span><br \/>\nheader<span class=\"sy0\">:<\/span> <span class=\"br0\">&#123;<\/span><br \/>\ntext<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;User Access&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\ngroupChildren<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><span class=\"st0\">&quot;1.1&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;1.2&quot;<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"br0\">&#123;<\/span><br \/>\ntype<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;it&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\nid<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;1.1&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\nx<span class=\"sy0\">:<\/span> <span class=\"nu0\">50<\/span><span class=\"sy0\">,<\/span><br \/>\ny<span class=\"sy0\">:<\/span> <span class=\"nu0\">75<\/span><span class=\"sy0\">,<\/span><br \/>\ntext<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;Remote Desktop&quot;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"br0\">&#123;<\/span><br \/>\ntype<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;it&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\nid<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;1.2&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\nx<span class=\"sy0\">:<\/span> <span class=\"nu0\">200<\/span><span class=\"sy0\">,<\/span><br \/>\ny<span class=\"sy0\">:<\/span> <span class=\"nu0\">75<\/span><span class=\"sy0\">,<\/span><br \/>\ntext<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;Login Server&quot;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><\/div><\/div>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9229\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2021\/09\/Group-of-shapes.gif\" alt=\"DHTMLX Diagram Group\" width=\"700\" height=\"268\" \/><a href=\"https:\/\/snippet.dhtmlx.com\/0hf8ahrb\" target=\"_blank\" rel=\"noopener\">Check the code snippet &gt;<\/a><\/p>\n<p>Additionally, you can configure the behavior of group items when a user is dragging them outside of the group via the <strong>groupBehavior<\/strong> and <strong>padding<\/strong> attributes of the <strong>exitArea<\/strong> object. Thus, you can allow an item to be moved in and out of the group, make the group borders expand when a user is dragging an item outside, or disable the drag-and-drop of items out of the group, as well as set the padding between an item and the edge of the group.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9230\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2021\/09\/Group-behavior.gif\" alt=\"DHTMLX Diagram group behavior\" width=\"900\" height=\"588\" \/><a href=\"https:\/\/snippet.dhtmlx.com\/4gxy38ek\" target=\"_blank\" rel=\"noopener\">Check the code snippet &gt;<\/a><\/p>\n<h5>Swimlanes<\/h5>\n<p>The most wanted feature delivered in v4.0 is swimlanes. Swimlanes are rectangles divided into vertical or horizontal lanes or cells similar to a matrix. They can include shapes and groups of shapes. Swimlanes help to distinguish between different parts of a process or system.<\/p>\n<p>To create a swimlane, you just need to set the <em>&#8220;$swimlane&#8221;<\/em> type of the swimlane configuration object and define its structure via the <strong>layout<\/strong> configuration property.<\/p>\n<p>By default, DHTMLX Diagram swimlanes have no header and subheader. However, you can choose from a <a href=\"https:\/\/docs.dhtmlx.com\/diagram\/swimlanes\/\" target=\"_blank\" rel=\"noopener\">variety of configuration options<\/a> to fine-tune your swimlane.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9231\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2021\/09\/Swimlanes.jpg\" alt=\"DHTMLX Swimlane Diagram\" width=\"1077\" height=\"695\" srcset=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2021\/09\/Swimlanes.jpg 1077w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2021\/09\/Swimlanes-300x194.jpg 300w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2021\/09\/Swimlanes-768x496.jpg 768w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2021\/09\/Swimlanes-1024x661.jpg 1024w\" sizes=\"auto, (max-width: 1077px) 100vw, 1077px\" \/><a href=\"https:\/\/snippet.dhtmlx.com\/z6x5m3gb\" target=\"_blank\" rel=\"noopener\">Check the code snippet &gt;<\/a><\/p>\n<p>For example, the swimlane diagram shown in the picture above has the following configuration:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;height:600px;\"><div class=\"javascript codecolorer\"><span class=\"br0\">&#123;<\/span><br \/>\n<span class=\"st0\">&quot;id&quot;<\/span><span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;main&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"st0\">&quot;type&quot;<\/span><span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;$swimlane&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"st0\">&quot;height&quot;<\/span><span class=\"sy0\">:<\/span> <span class=\"nu0\">680<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"st0\">&quot;width&quot;<\/span><span class=\"sy0\">:<\/span> <span class=\"nu0\">1060<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"st0\">&quot;header&quot;<\/span><span class=\"sy0\">:<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n<span class=\"st0\">&quot;closable&quot;<\/span><span class=\"sy0\">:<\/span> <span class=\"kw2\">true<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"st0\">&quot;text&quot;<\/span><span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;Swimlane diagram template&quot;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"st0\">&quot;layout&quot;<\/span><span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><br \/>\n<span class=\"br0\">&#91;<\/span><span class=\"nu0\">1<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">2<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">3<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"br0\">&#91;<\/span><span class=\"nu0\">4<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">5<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">6<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"br0\">&#91;<\/span><span class=\"nu0\">7<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">8<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">9<\/span><span class=\"br0\">&#93;<\/span><br \/>\n<span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"st0\">&quot;subHeaderRows&quot;<\/span><span class=\"sy0\">:<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n<span class=\"st0\">&quot;headers&quot;<\/span><span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><br \/>\n<span class=\"br0\">&#123;<\/span><br \/>\n<span class=\"st0\">&quot;text&quot;<\/span><span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;Sprint 1&quot;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"br0\">&#123;<\/span><br \/>\n<span class=\"st0\">&quot;text&quot;<\/span><span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;Sprint 2&quot;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"br0\">&#123;<\/span><br \/>\n<span class=\"st0\">&quot;text&quot;<\/span><span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;Sprint 3&quot;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#93;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"st0\">&quot;subHeaderCols&quot;<\/span><span class=\"sy0\">:<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n<span class=\"st0\">&quot;headers&quot;<\/span><span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><br \/>\n<span class=\"br0\">&#123;<\/span><br \/>\n<span class=\"st0\">&quot;text&quot;<\/span><span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;Venus team&quot;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"br0\">&#123;<\/span><br \/>\n<span class=\"st0\">&quot;text&quot;<\/span><span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;Saturn team&quot;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"br0\">&#123;<\/span><br \/>\n<span class=\"st0\">&quot;text&quot;<\/span><span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;Mars team&quot;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#93;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><\/div><\/div>\n<p>It has three rows and columns with six cells altogether. Its header is closable. Besides, the swimlane is equipped with subheaders for each column and row.<\/p>\n<p>In addition to these options, it is possible to disable the resizing and moving of a swimlane, make a header not editable, or even implement a new configuration property following your own logic. <a href=\"https:\/\/docs.dhtmlx.com\/diagram\/swimlanes\/\" target=\"_blank\" rel=\"noopener\">Learn more in the documentation &gt;<\/a><\/p>\n<p>Swimlanes are extremely flexible. The <strong>layout<\/strong> property allows you to merge cells by removing borders between them. Thus, you can create a swimlane structure with any possible combination of cells.<\/p>\n<p>The following example shows how to merge cells vertically in the first column in the first and second rows, in the third column in the first, second and third rows, and horizontally in the fourth row:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\"><span class=\"br0\">&#123;<\/span><br \/>\ntype<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;$swimlane&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\nid<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;e&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\nheight<span class=\"sy0\">:<\/span> <span class=\"nu0\">500<\/span><span class=\"sy0\">,<\/span><br \/>\nwidth<span class=\"sy0\">:<\/span> <span class=\"nu0\">850<\/span><span class=\"sy0\">,<\/span><br \/>\ny<span class=\"sy0\">:<\/span> <span class=\"nu0\">2400<\/span><span class=\"sy0\">,<\/span><br \/>\nlayout<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><br \/>\n<span class=\"br0\">&#91;<\/span><span class=\"st0\">&quot;e1&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;e2&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;e3&quot;<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"br0\">&#91;<\/span><span class=\"st0\">&quot;e1&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;e5&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;e3&quot;<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"br0\">&#91;<\/span><span class=\"st0\">&quot;e7&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;e8&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;e3&quot;<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"br0\">&#91;<\/span><span class=\"st0\">&quot;e6&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;e6&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;e6&quot;<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span><br \/>\nsubHeaderRows<span class=\"sy0\">:<\/span> <span class=\"br0\">&#123;<\/span><br \/>\nenable<span class=\"sy0\">:<\/span> <span class=\"kw2\">true<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\nsubHeaderCols<span class=\"sy0\">:<\/span> <span class=\"br0\">&#123;<\/span><br \/>\nenable<span class=\"sy0\">:<\/span> <span class=\"kw2\">true<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/div>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9233\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2021\/09\/bandicam-2021-09-07-11-17-49-316.jpg\" alt=\"DHTMLX Diagram Swimlane with Merged Cells\" width=\"900\" height=\"565\" srcset=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2021\/09\/bandicam-2021-09-07-11-17-49-316.jpg 900w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2021\/09\/bandicam-2021-09-07-11-17-49-316-300x188.jpg 300w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2021\/09\/bandicam-2021-09-07-11-17-49-316-768x482.jpg 768w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><a href=\"https:\/\/snippet.dhtmlx.com\/uzx5ulal\" target=\"_blank\" rel=\"noopener\">Check the code snippet &gt;<\/a><\/p>\n<p>Additionally, you can redefine the configuration of particular swimlane cells. To do so, you need to create an object of the cell with the <strong>type:<\/strong> <em>&#8220;$group&#8221;<\/em> and <strong>id<\/strong> attribute and then set the desired configuration options. For example, here we redefine the background color of the cell with the value <em>3<\/em> of the <strong>id<\/strong> attribute:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\"><span class=\"kw1\">const<\/span> data <span class=\"sy0\">=<\/span> <span class=\"br0\">&#91;<\/span><br \/>\n<span class=\"co1\">\/\/ configuring a swimlane<\/span><br \/>\n<span class=\"br0\">&#123;<\/span><br \/>\ntype<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;$swimlane&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\nid<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;main&quot;<\/span><br \/>\nheight<span class=\"sy0\">:<\/span> <span class=\"nu0\">500<\/span><span class=\"sy0\">,<\/span><br \/>\nwidth<span class=\"sy0\">:<\/span> <span class=\"nu0\">850<\/span><span class=\"sy0\">,<\/span><br \/>\nlayout<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><br \/>\n<span class=\"br0\">&#91;<\/span><span class=\"nu0\">1<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">2<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">3<\/span><span class=\"br0\">&#93;<\/span><br \/>\n<span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"co1\">\/\/ configuring a swimlane cell<\/span><br \/>\n<span class=\"br0\">&#123;<\/span><br \/>\ntype<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;$sgroup&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\nid<span class=\"sy0\">:<\/span> <span class=\"nu0\">3<\/span><span class=\"sy0\">,<\/span><br \/>\nstyle<span class=\"sy0\">:<\/span> <span class=\"br0\">&#123;<\/span><br \/>\nfill<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;grey&quot;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#93;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<h5>Manipulating Groups and Swimlanes from the UI<\/h5>\n<p>Both <a href=\"https:\/\/docs.dhtmlx.com\/diagram\/#groups\" target=\"_blank\" rel=\"noopener\">groups<\/a> and <a href=\"https:\/\/docs.dhtmlx.com\/diagram\/#swimlanes\" target=\"_blank\" rel=\"noopener\">swimlanes<\/a> give you the opportunity to manage Diagram elements included in them as a whole. You can move, copy, and delete groups and swimlanes together with all their elements in the editor mode. You can also collapse a swimlane, add a new lane, move particular lanes to another position and delete any of them via a context menu.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9234\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2021\/09\/Swimlanes-in-the-editor.gif\" alt=\"DHTMLX Diagram Swimlanes\" width=\"948\" height=\"828\" \/><a href=\"https:\/\/snippet.dhtmlx.com\/k5vlvj8i\" target=\"_blank\" rel=\"noopener\">Check the code snippet &gt;<\/a><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9235\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2021\/09\/Work-with-swimlanes.gif\" alt=\"DHTMLX Swimlanes Context Menu\" width=\"1040\" height=\"836\" \/><a href=\"https:\/\/snippet.dhtmlx.com\/1h4j9gb3\" target=\"_blank\" rel=\"noopener\">Check the code snippet &gt;<\/a><\/p>\n<p>DHTMLX Diagram editor contains sections with built-in groups and swimlanes in the left panel based on which you can build a diagram from scratch.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9236\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2021\/09\/Groups-in-left-panel.gif\" alt=\"DHTMLX Diagram Groups in Editor\" width=\"940\" height=\"844\" \/><\/p>\n<p>The right panel provides numerous styling options to adjust Diagram elements to your requirements, for example, change the header&#8217;s position, hide subheaders, and modify their styles.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9237\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2021\/09\/Swimlane-styling.gif\" alt=\"DHTMLX Swimlane Styling\" width=\"900\" height=\"844\" \/><a href=\"https:\/\/snippet.dhtmlx.com\/z6x5m3gb\" target=\"_blank\" rel=\"noopener\">Check the code snippet &gt;<\/a><\/p>\n<h5>Inline Editing<\/h5>\n<p>Starting with v4.0, you can benefit from inline editing and edit the text by simply double-clicking on it. Now, this feature is available in DHTMLX Diagram by default, not only in the editor mode.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9238\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2021\/09\/Scenery-library.gif\" alt=\"DHTMLX Diagram Inline Editing\" width=\"900\" height=\"444\" \/><\/p>\n<h5>Identical Elements with Different Settings in the Left Panel of the Editor<\/h5>\n<p>From now on, it is possible to add the same Diagram elements but with different settings to the left panel of the editor. Thus, for instance, end-users will be able to choose from similar predefined flowchart shapes differing only in color.<\/p>\n<p>You can also redefine attributes of any shape and create brand new configurations of such elements as groups and swimlanes situated in the left panel. <a href=\"https:\/\/docs.dhtmlx.com\/diagram\/guides\/diagram_editor\/shapebar\/\" target=\"_blank\" rel=\"noopener\">Learn more in the documentation &gt;<\/a><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9239\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2021\/09\/Left-panel-with-different-shapes.gif\" alt=\"Left panel with different shapes\" width=\"896\" height=\"764\" \/><\/p>\n<h5>DHTMLX Diagram with Angular, React, and Vue.js<\/h5>\n<p>In addition to all the novelties, we are glad to release demos of how to integrate the DHTMLX Diagram library with the top JavaScript frameworks: Angular, React, and Vue.js. Follow the links on GitHub, clone or download the repositories, and try out in your projects:<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/DHTMLX\/angular-diagram-demo\" target=\"_blank\" rel=\"noopener\">DHTMLX Diagram with Angular<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/DHTMLX\/react-diagram-demo\" target=\"_blank\" rel=\"noopener\">DHTMLX Diagram with React<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/DHTMLX\/vue-diagram-demo\" target=\"_blank\" rel=\"noopener\">DHTMLX Diagram with Vue.js<\/a><\/li>\n<\/ul>\n<h5>What&#8217;s New in the API<\/h5>\n<p>V4.0 empowers you to manage swimlanes programmatically with the help of the <a href=\"https:\/\/docs.dhtmlx.com\/diagram\/api\/cell_manager\/\" target=\"_blank\" rel=\"noopener\">CellManager API<\/a>. It provides methods for adding, moving, removing cells as rows or columns, validating cells, and much more. The CellManager API also includes new events intended to make the work with swimlanes fully interactive.<\/p>\n<p>Apart from that, there appear new methods of the Shape collection: <a href=\"https:\/\/docs.dhtmlx.com\/diagram\/api\/data_collection\/eachchild_method\/\" target=\"_blank\" rel=\"noopener\"><strong>eachChild()<\/strong><\/a>, <a href=\"https:\/\/docs.dhtmlx.com\/diagram\/api\/data_collection\/eachparent_method\/\" target=\"_blank\" rel=\"noopener\"><strong>eachParent()<\/strong><\/a>, <a href=\"https:\/\/docs.dhtmlx.com\/diagram\/api\/data_collection\/getroot_method\/\" target=\"_blank\" rel=\"noopener\"><strong>getRoot()<\/strong><\/a>, <a href=\"https:\/\/docs.dhtmlx.com\/diagram\/api\/data_collection\/getroots_method\/\" target=\"_blank\" rel=\"noopener\"><strong>getRoots()<\/strong><\/a>. The list of events is greatly enlarged with events of the diagram and editor objects as well as with events related to the newly introduced inline editing feature.<\/p>\n<p>Moreover, v4.0 introduces the <strong>editable<\/strong> and <strong>fixed<\/strong> configuration properties, which enable and disable the editing of Diagram elements.<\/p>\n<h5>Other Enhancements<\/h5>\n<p>Among other improvements, we have enhanced keyboard navigation and redesigned Diagram shapes. We have also updated the structure of the Shape Collection API and the <a href=\"https:\/\/docs.dhtmlx.com\/diagram\/api\/diagram_editor\/editor\/events\/beforeshapemove_event\/\" target=\"_blank\" rel=\"noopener\"><strong>beforeShapeMove<\/strong><\/a> and <a href=\"https:\/\/docs.dhtmlx.com\/diagram\/api\/diagram_editor\/editor\/events\/aftershapemove_event\/\" target=\"_blank\" rel=\"noopener\"><strong>afterShapeMove<\/strong><\/a> events of the editor object. Moreover, we have extended the list of available <a href=\"https:\/\/docs.dhtmlx.com\/diagram\/guides\/localization\/\" target=\"_blank\" rel=\"noopener\">locale options<\/a> due to the introduction of groups and swimlanes. We have also considerably optimized Diagram styles.<\/p>\n<p>We are looking forward to your feedback about the new DHTMLX Diagram features released in v4.0. Leave your comments below and share your thoughts with our tech support team.<\/p>\n<p>Want to try out DHTMLX Diagram with swimlanes, groups, and interactive editors? Download a <a href=\"https:\/\/dhtmlx.com\/docs\/products\/dhtmlxDiagram\/download.shtml\" target=\"_blank\" rel=\"noopener\"><strong>free 30-day evaluation version<\/strong><\/a> now.<\/p>\n<p>We invite our existing clients to get the latest version in their <a href=\"https:\/\/dhtmlx.com\/clients\/\" target=\"_blank\" rel=\"noopener\">Client&#8217;s Area<\/a>.<\/p>\n<p>Stay tuned!<\/p>\n<h6>Related Materials:<\/h6>\n<ul>\n<li><a href=\"https:\/\/docs.dhtmlx.com\/diagram\/whats_new\/\" target=\"_blank\" rel=\"noopener\">What&#8217;s new in v4.0<\/a><\/li>\n<li><a href=\"https:\/\/snippet.dhtmlx.com\/z6x5m3gb?text=Diagram\" target=\"_blank\" rel=\"noopener\">DHTMLX Diagram code snippets<\/a><\/li>\n<li><a href=\"https:\/\/docs.dhtmlx.com\/diagram\/\" target=\"_blank\" rel=\"noopener\">DHTMLX Diagram documentation<\/a><\/li>\n<li><a href=\"https:\/\/dhtmlx.com\/docs\/products\/dhtmlxDiagram\/download.shtml\" target=\"_blank\" rel=\"noopener\">Free 30-day trial version<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>We are delighted to announce the release of the DHTMLX JavaScript diagram library 4.0. The major version brings out such sought-after elements as swimlanes and groups of items as &#8230;<\/p>\n","protected":false},"author":101012,"featured_media":9242,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[70],"tags":[33,59,58,56,55],"class_list":["post-9224","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-releases","tag-all-posts","tag-angular","tag-diagram","tag-react","tag-vue-js"],"_links":{"self":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts\/9224","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/users\/101012"}],"replies":[{"embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/comments?post=9224"}],"version-history":[{"count":19,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts\/9224\/revisions"}],"predecessor-version":[{"id":14934,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts\/9224\/revisions\/14934"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/media\/9242"}],"wp:attachment":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/media?parent=9224"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/categories?post=9224"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/tags?post=9224"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}