{"id":807,"date":"2023-03-15T21:47:00","date_gmt":"2023-03-15T21:47:00","guid":{"rendered":"https:\/\/staging.infragistics.com\/blogs\/?p=807"},"modified":"2025-03-07T14:46:47","modified_gmt":"2025-03-07T14:46:47","slug":"ignite-ui-dock-manager","status":"publish","type":"post","link":"https:\/\/www.infragistics.com\/blogs\/ignite-ui-dock-manager","title":{"rendered":"Ignite UI Dock Manager: For Web Layouts &amp; Better Usability"},"content":{"rendered":"\n<p>At Infragistics, we know that development processes and needs are constantly evolving. To keep up with the market and customer expectations, you must improve usability, while adding new features and functionality at the same time.<\/p>\n\n\n\n<p>That\u2019s why we never stop enhancing our <a href=\"\/products\/ignite-ui\">Ignite UI toolkit<\/a>, bringing new components and more functionalities. And just now we are excited to announce the new release of <a href=\"\/products\/ignite-ui-web-components\/web-components\/components\/layouts\/dock-manager\">Ignite UI&nbsp;Dock Manager<\/a> component. This powerful new tool makes it easier for you to build multi-window, multi-screen web apps in any framework.<\/p>\n\n\n\n<p>But more about this in a bit.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-is-a-dock-manage\">What Is a Dock Manager?<\/h2>\n\n\n\n<p>The Dock Manager is a standard, user-friendly web component for building complex layouts, splitting the view into smaller ones. This can be done recursively in order to create arbitrary layouts that can be manipulated and adjusted at runtime. You can manage the layout plus the positioning of several windows, panels, and other UI elements in a flexible way, docking them to different locations within an app.<\/p>\n\n\n\n<p>For end-users, the Dock Manager means having the ability to customize the created layout further through features like pinning, resizing, moving, floating, and hiding panes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"dock-manager-benefits\">What Are the Benefits of Using a Dock Manager?<\/h2>\n\n\n\n<p>In general, using Dock Manager saves you time and effort when building dynamic and complex UI, ensuring better UX for the end-users of your web application. Here are some of the benefits:<\/p>\n\n\n\n<p><strong>Cross-platform:<\/strong> One of the best things about it is the multiple platforms support for desktop and mobile. Then, there is its compatibility with modern web browsers, meaning you can use the Dock Manager component to develop responsive layout software solutions for any platform you want.<\/p>\n\n\n\n<p><strong>Built-in drag-and-drop:<\/strong> If you want to reorder the tabs in a pane from one destination to another, you can quickly do it with the drag-and-drop functionality that the component provides.<\/p>\n\n\n\n<p><strong>Seamless integration:<\/strong> No matter if you develop apps in Angular, Blazor, Web Components or other frameworks, Dock Manager always relies on the given framework architecture to integrate dockable UI elements within the app logic and data.<\/p>\n\n\n\n<p><strong>Flexibility and custom tweaks:<\/strong> Managing layouts, customizing all buttons using slots and parts, docking things like panels and windows in different positions, changing the behavior of UI elements to match app requirements, this is all pretty straightforward.<\/p>\n\n\n\n<p><strong>Better UX:<\/strong> Providing the ability to end-users to further manipulate, rearrange, and resize the available UI elements, the Dock Manager component in fact improves the overall experience with the app.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"how-is-ignite-ui-dock-manager-different\">What Makes Ignite UI Dock Manager Different?<\/h2>\n\n\n\n<p>One of the biggest differentiators is that Ignite UI Dock Manager component is a dependency-free, pure web component that is available for Angular, Blazor, React, and Web Components. It allows you to not only build a desktop, Visual Studio-like experience, but it also helps you create better web applications for any industry and business.<\/p>\n\n\n\n<p>For instance, Financial companies deal with a lot of data and quite often they require complex dashboards to display and understand this data. The question here is, how financial companies can benefit from using Ignite UI Dock Manager? With it, they can do several things:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Build customizable dashboards that are easy to arrange and resize with the company&#8217;s purposes and the needs of individual users in mind.<\/li>\n\n\n\n<li>Efficiently resize UI elements on the screen to maximize the financial data volume that is visualized at once.<\/li>\n\n\n\n<li>Quickly display super accessible information that is suited to end-users.<\/li>\n\n\n\n<li>Provide a consistent UX across devices thanks to the cross-platform compatibility of Ignite UI Dock Manager.<\/li>\n<\/ul>\n\n\n\n<p>To better illustrate this, I&#8217;ll share a real-life issue that we encountered during our \u201cData Analysis Tool\u201d design meetings. To use the&nbsp;<a href=\"\/products\/ignite-ui-angular\/angular\/components\/general\/data-analysis\">Data Analysis Tool<\/a>, you first have to select data, choose an appropriate chart, select it and then\u2014 there it is, the first snake in the grass\u2014you are in a browser application, not in a desktop one.<\/p>\n\n\n\n<p>But where do you visualize this chart? It is a static dialog that you cannot move. It hides your grid view and you are stuck there. If you need to scroll to search for something else, you need to close the chart dialog, check what you need and start from scratch. It is as clumsy as it sounds. You are just limited by the browser. This is where&nbsp;Dock Manager&nbsp;becomes invaluable. With it, you can easily build a multi-screen layout, without sacrificing usability and limiting the end user.<\/p>\n\n\n\n<p>Here&#8217;s a simple Dock Manager example and visual comparison:<\/p>\n\n\n\n<div>\n<p><span style=\"font-size: 150%;\"><strong>Data Analysis Tool without Dock Manager:<\/strong><\/span><\/p>\n<figure><img decoding=\"async\" src=\"http:\/\/static.infragistics.com\/marketing\/Blogs\/Migration\/00\/00\/00\/09\/43\/2158.DATwithout.gif\" alt=\" data analysis tool without dock manager\"><\/figure><p><\/p>\n<p><span style=\"font-size: 150%;\"><strong>Data Analysis Tool with Dock Manager:<\/strong><\/span><\/p>\n<figure><img decoding=\"async\" src=\"http:\/\/static.infragistics.com\/marketing\/Blogs\/Migration\/00\/00\/00\/09\/43\/3730.DockDATv1.gif\" alt=\"  data analysis tool with dock manager\"><\/figure><p><\/p>\n<p>I guess that\u2019s why many people, including professional developers, feel nostalgic about desktop applications. Nowadays it is not uncommon to see ten or more tabs open in a browser window. If you need to use data from n-number of pages, then you need n-number of windows. That freedom to rearrange your layout as you need is why the Dock Manager component matters. This is not to downplay the importance of single page applications (SPA), but to share another point of view.<\/p>\n<p>So, now that we know what it is and why it is important, let&#8217;s take a look at the basic parts and features of the Ignite UI Dock Manager:<\/p>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"how-to-use-ignite-ui-dock-manager\">How To Use Ignite UI Dock Manager?<\/h2>\n\n\n\n<p>You can include the Ignite UI Dock Manager Web Component in your project as a dependency using the NPM package. To install the Dock Manager package execute the following command:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">npm install --save igniteui-dockmanager<\/pre>\n\n\n\n<p>Then it is necessary to import and call the&nbsp;<strong>defineCustomElements()<\/strong>&nbsp;function:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import { defineCustomElements } from 'igniteui-dockmanager\/loader';\ndefineCustomElements();<\/pre>\n\n\n\n<p><strong>TS<\/strong><\/p>\n\n\n\n<p>Once the Dock Manager is imported, you can add it on the page:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;igc-dockmanager id=\"dockManager\">\n&lt;\/igc-dockmanager><\/pre>\n\n\n\n<p>We\u2019ve added quick how-to steps and additional info in our <a href=\"https:\/\/github.com\/IgniteUI\/igniteui-dockmanager\" rel=\"noopener\">GitHub Ignite UI Dock Manager repo<\/a>.<\/p>\n\n\n\n<p>Some important things to know about the main building blocks in the Dock Manager is that they are called <a href=\"\/products\/ignite-ui\/dock-manager\/docs\/typescript\/latest\/enums\/igcdockmanagerpanetype.html\">panes<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"using-panes-in-dock-manager\">Using Panes in Dock Manager\u00a0<\/h2>\n\n\n\n<p>The main building blocks in the Dock Manager are the&nbsp;panes:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/infragistics.com\/products\/ignite-ui\/dock-manager\/docs\/typescript\/latest\/interfaces\/igccontentpane.html\">Content pane<\/a>\u00a0<\/li>\n<\/ul>\n\n\n\n<p>The&nbsp;content pane&nbsp;represents a pane with header and content. It can be hosted inside a Split Pane or a Tab Group Pane.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/infragistics.com\/products\/ignite-ui\/dock-manager\/docs\/typescript\/latest\/interfaces\/igcsplitpane.html\">Split pane<\/a>\u00a0<\/li>\n<\/ul>\n\n\n\n<p>The&nbsp;split pane&nbsp;is a container pane which stacks&nbsp;all of&nbsp;its child&nbsp;<a href=\"https:\/\/infragistics.com\/products\/ignite-ui\/dock-manager\/docs\/typescript\/latest\/interfaces\/igcsplitpane.html#panes\">panes<\/a>&nbsp;horizontally or vertically based on its&nbsp;<a href=\"https:\/\/infragistics.com\/products\/ignite-ui\/dock-manager\/docs\/typescript\/latest\/interfaces\/igcsplitpane.html#orientation\">orientation<\/a>&nbsp;property.&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/infragistics.com\/products\/ignite-ui\/dock-manager\/docs\/typescript\/latest\/interfaces\/igctabgrouppane.html\">Tab group pane<\/a>\u00a0<\/li>\n<\/ul>\n\n\n\n<p>The&nbsp;tab group pane&nbsp;displays its child content&nbsp;<a href=\"https:\/\/infragistics.com\/products\/ignite-ui\/dock-manager\/docs\/typescript\/latest\/interfaces\/igctabgrouppane.html#panes\">panes<\/a>&nbsp;as the tabs of a tab component.&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/infragistics.com\/products\/ignite-ui\/dock-manager\/docs\/typescript\/latest\/interfaces\/igcdockmanagerlayout.html#floatingpanes\">Floating pane<\/a>\u00a0<\/li>\n<\/ul>\n\n\n\n<p>The floating pane is a split pane rendered above all other ones in a floating window.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/infragistics.com\/products\/ignite-ui\/dock-manager\/docs\/typescript\/latest\/interfaces\/igcdocumenthost.html\">Document host<\/a>\u00a0<\/li>\n<\/ul>\n\n\n\n<p>The&nbsp;document host&nbsp;is an area of tabs for documents,&nbsp;similar to&nbsp;the one in Visual Studio for code editing and design&nbsp;view.&nbsp;<\/p>\n\n\n\n<p>Here\u2019s another Dock Manager demo that we built using Ignite UI:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/static.infragistics.com\/marketing\/Blogs\/Migration\/00\/00\/00\/09\/43\/1212.PanesType1-0.png\" alt=\" using panes in dock manager demo\" title=\" using panes in dock manager demo\"\/><\/figure>\n\n\n\n<p>&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"theming-customization\">Theming Customization in Ignite UI for Dock Manager Component<\/h2>\n\n\n\n<p>Dock Manager comes with both a light and a dark theme built-in themes. Using themes out-of-the-box can be handy but is not enough to shape the look and feel that you need for you application, so we give you more options to customize the Ignite UI Dock Manager&nbsp;by using <a href=\"\/products\/ignite-ui-web-components\/web-components\/components\/layouts\/dock-manager#css-variables\">CSS variables<\/a>&nbsp;and <a href=\"\/products\/ignite-ui-web-components\/web-components\/components\/layouts\/dock-manager#css-parts\">CSS parts<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/static.infragistics.com\/marketing\/Blogs\/Migration\/00\/00\/00\/09\/43\/3312.Dock-Manager-Theming.gif\" alt=\"Example of web Dock Manager with pre-defined themes\" title=\"Example of web Dock Manager with pre-defined themes\"\/><\/figure>\n\n\n\n<p>Firstly, provide your own icons, using the\u202fcloseButton,\u202fmaximizeButton,\u202fminimizeButton,\u202fpinButton, and\u202funpinButton\u202fslots.<\/p>\n\n\n\n<p>After that, use the exposed parts in the stylesheet. This way you have full control of the component&#8217;s styling.<\/p>\n\n\n\n<p>There you go. You now have a DockManager with customized icons and tab area.<\/p>\n\n\n\n<p>If you want you can try it with this <a href=\"https:\/\/stackblitz.com\/edit\/angular-sq4vux-dh1hez?file=src%2Fapp%2Fdock-manager-sample%2Fdock-manager.component.html\" rel=\"noopener\">stackblitz live example<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/static.infragistics.com\/marketing\/Blogs\/Migration\/00\/00\/00\/09\/43\/5556.Dock-Manager-css-customizations.gif\" alt=\"Example Dock Manager button and pane area customization\" title=\"Example Dock Manager button and pane area customization\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"customizing-layouts\">Customizing Layouts\u00a0<\/h2>\n\n\n\n<p>End-users can perform the following actions to customize the layout at runtime:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Pin\u00a0a pane\u00a0<\/li>\n<\/ul>\n\n\n\n<p>&nbsp;You can stash all the content and tab panes you don\u2019t need at the moment in a tray by unpinning them. When you need them in their last docked position \u2013 just pin them.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/static.infragistics.com\/marketing\/Blogs\/Migration\/00\/00\/00\/09\/43\/3377.PinUnpin.gif\" alt=\" customizing layouts\" title=\" customizing layouts\"\/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Resize a pane\u00a0<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/static.infragistics.com\/marketing\/Blogs\/Migration\/00\/00\/00\/09\/43\/6082.Resize.gif\" alt=\" resizing pane dock manager example\" title=\" resizing pane dock manager example\"\/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Close a pane\u00a0<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/static.infragistics.com\/marketing\/Blogs\/Migration\/00\/00\/00\/09\/43\/8168.Close.gif\" alt=\" demo of closing a pane \" title=\" demo of closing a pane \"\/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Float a pane<\/li>\n<\/ul>\n\n\n\n<p>You can make a floating pane by dragging the header of any pane. The floating pane is a split pane rendered above all other ones in a floating window.&nbsp;It&nbsp;moves above all other panes and it is not limited by the Dock Manager window. It can be resized and docked or hosted inside a split pane or tab group.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/static.infragistics.com\/marketing\/Blogs\/Migration\/00\/00\/00\/09\/43\/8168.DragFloatDock.gif\" alt=\" floating pane demo\" title=\" floating pane demo\"\/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Pane Navigator\u00a0<\/li>\n<\/ul>\n\n\n\n<p>Visual indication (joystick) about the available positions to dock or host pane that is contextual to the pane over which cursor is currently positioned. You can:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Dock a pane to the left, right, top, or bottom to any level of nesting including the global\/root one.<\/li>\n\n\n\n<li>Dock a real-time log pane at the bottom of your window.<\/li>\n\n\n\n<li>Dock a pane with commands and operations to the top of my window like the MS Office Ribbon.<\/li>\n\n\n\n<li>Dock a pane as a tab of another view without splitting the content area.<\/li>\n\n\n\n<li>Open the tray and drag an item to a destination pane and dock it to a certain position.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/static.infragistics.com\/marketing\/Blogs\/Migration\/00\/00\/00\/09\/43\/1234.PaneNav.gif\" alt=\" pane navigator demo\" title=\" pane navigator demo\"\/><\/figure>\n\n\n\n<p>&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"\/products\/ignite-ui-web-components\/web-components\/components\/dock-manager.html#saveload-layout\">Save\/Load Layout\u00a0<\/a><\/li>\n<\/ul>\n\n\n\n<p>Creating custom and complex layouts can be tricky and extremely annoying if you need to re-create them constantly. That is why we have included an option to save and load layouts. Now you can customize your layout, specifically to meet your current needs, and save it as a default, reducing iterations and saving you time.<\/p>\n\n\n\n<p>If you want to&nbsp;try it yourself, you just need an Angular project, for example, and you can follow the instructions <a href=\"\/products\/ignite-ui-web-components\/web-components\/components\/layouts\/dock-manager#web-components-dock-manager-example\">here<\/a>.<\/p>\n\n\n\n<p>In the end, Dock Manager provides web developers with the ability to improve the usability of complex web apps, offering a complete windowing experience on the web. It does this quickly and easily, enabling you to be a hero and satisfy your users&#8217; needs in the time it takes to get your next caffeinated beverage.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>See how easy it is to build multi-window, multi-screen apps in any framework with Infragistics&#39; new Dock Manager in Angular, Blazor, React, and Web Components. Try it now!<\/p>\n","protected":false},"author":20,"featured_media":2622,"comment_status":"publish","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[],"class_list":["post-807","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ultimate"],"_links":{"self":[{"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/posts\/807","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/users\/20"}],"replies":[{"embeddable":true,"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/comments?post=807"}],"version-history":[{"count":5,"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/posts\/807\/revisions"}],"predecessor-version":[{"id":1915,"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/posts\/807\/revisions\/1915"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/media\/2622"}],"wp:attachment":[{"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/media?parent=807"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/categories?post=807"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/tags?post=807"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}