{"id":7363,"date":"2020-06-16T10:01:04","date_gmt":"2020-06-16T07:01:04","guid":{"rendered":"https:\/\/dhtmlx.com\/blog\/?p=7363"},"modified":"2026-06-30T17:22:19","modified_gmt":"2026-06-30T14:22:19","slug":"dhtmlx-suite-6-5","status":"publish","type":"post","link":"https:\/\/dhtmlx.com\/blog\/dhtmlx-suite-6-5\/","title":{"rendered":"DHTMLX Suite 6.5: TypeScript Definitions, Grid and TreeGrid Columns\u2019 Drag-n-Drop, Grouping TreeGrid Data, and New Angular Demo"},"content":{"rendered":"<p>The summer season at DHTMLX opens with a major release of our <a href=\"https:\/\/dhtmlx.com\/docs\/products\/dhtmlxSuite\/\" target=\"_blank\" rel=\"noopener\">JavaScript widget library<\/a> &#8211; Suite 6.5.<\/p>\n<p>The update accommodated some highly demanded features requested by our clients like TypeScript support, grouping TreeGrid data, and drag-n-drop of columns in Grid and TreeGrid. Besides, our development team designed new examples of using Suite UI components with Angular. Other features and improvements cover new configuration options and methods for manipulating content in Grid and TreeGrid, List and DataView, and managing Form controls and Sidebar options.<\/p>\n<p><strong>Jump into <a href=\"https:\/\/dhtmlx.com\/docs\/products\/dhtmlxSuite\/download.shtml?utm_source=blog&amp;utm_medium=link_top&amp;utm_campaign=suite6_5_trial\" target=\"_blank\" rel=\"noopener\">evaluating Suite UI library 6.5<\/a> free of charge for 30 days right now.<\/strong><\/p>\n<p>Or read the release article to take in every detail.<\/p>\n<h5>Built-in TypeScript Definitions<\/h5>\n<p>As TypeScript gained considerable popularity among web developers and its support was particularly demanded by our users, we incorporated <a href=\"https:\/\/docs.dhtmlx.com\/suite\/common_features\/using_typescript\/\" target=\"_blank\" rel=\"noopener\">TypeScript definitions<\/a> into our UI components.<\/p>\n<p>From now on, built-in type definitions will help you save time and write clean and stable code with the help of type suggestions, autocompletion, and type checking. <a href=\"https:\/\/snippet.dhtmlx.com\/basic\" target=\"_blank\" rel=\"noopener\">Check how it works in our code snippet &gt;<\/a><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-7366\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2020\/06\/typescript1.png\" alt=\"TypeScript support for UI components - DHTMLX Suite\" width=\"711\" height=\"528\" srcset=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2020\/06\/typescript1.png 711w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2020\/06\/typescript1-300x223.png 300w\" sizes=\"auto, (max-width: 711px) 100vw, 711px\" \/><\/p>\n<h5>Angular Examples<\/h5>\n<p>Together with the release of Suite 6.5, our dev team prepared examples of all Suite components with <a href=\"https:\/\/github.com\/DHTMLX\/angular-suite-demo\" target=\"_blank\" rel=\"noopener\">Angular<\/a>. The examples cover basic initialization and usage as well as event listening. The full source code of our components used with Angular can be found on <a href=\"https:\/\/github.com\/DHTMLX\/angular-suite-demo\" target=\"_blank\" rel=\"noopener\">GitHub<\/a>.<\/p>\n<p>To get the idea of how it works, have a look at the initialization of <a href=\"https:\/\/github.com\/DHTMLX\/angular-suite-demo\" target=\"_blank\" rel=\"noopener\">DHTMLX Calendar with Angular<\/a>:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\"><span class=\"kw5\">import<\/span> <span class=\"br0\">&#123;<\/span> Output<span class=\"sy0\">,<\/span> Component<span class=\"sy0\">,<\/span> ViewChild<span class=\"sy0\">,<\/span> OnDestroy<span class=\"sy0\">,<\/span> ElementRef<span class=\"sy0\">,<\/span> EventEmitter <span class=\"br0\">&#125;<\/span> from <span class=\"st0\">'@angular\/core'<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw5\">import<\/span> <span class=\"br0\">&#123;<\/span> Calendar as CalendarDHX <span class=\"br0\">&#125;<\/span> from <span class=\"st0\">'dhx-suite'<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p>@Component({<br \/>\nselector: &#8216;app-calendar&#8217;,<br \/>\ntemplate: `<\/p>\n<div><\/div>\n<p>`,<br \/>\n})<br \/>\nexport class CalendarComponent implements OnDestroy {<br \/>\n@ViewChild(&#8216;widget&#8217;, { static: true })<br \/>\ncontainer: ElementRef;<br \/>\ncalendar: CalendarDHX;<br \/>\nwait: Promise;<\/p>\n<p>@Output() ready: EventEmitter = new EventEmitter();<\/p>\n<p>ngOnInit() {<br \/>\nthis.calendar = new CalendarDHX(this.container.nativeElement, {<br \/>\ncss: &#8216;dhx_widget&#8211;bordered&#8217;,<br \/>\nvalue: new Date(),<br \/>\n});<br \/>\n}<\/p>\n<p>ngOnDestroy() {<br \/>\nthis.calendar &amp;&amp; this.calendar.destructor();<br \/>\n}<br \/>\n}<\/p>\n<p><a href=\"https:\/\/github.com\/DHTMLX\/angular-suite-demo\/\" target=\"_blank\" rel=\"noopener\">Check full source code on GitHub &gt;<\/a><\/p>\n<p>Besides, our team revised DHTMLX React examples on GitHub and got down to preparing samples with Vue.js.<\/p>\n<h5>Dragging and Dropping Columns in Grid and TreeGrid [PRO]<\/h5>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-7368\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2020\/06\/Drag-n-drop-of-columns.gif\" alt=\"Drag-n-drop of columns in DHTMLX Grid and TreeGrid\" width=\"800\" height=\"601\" \/><br \/>\n<a href=\"https:\/\/snippet.dhtmlx.com\/dfdlzpqb\" target=\"_blank\" rel=\"noopener\">Check the snippet &gt;<\/a><\/p>\n<p>In addition to reordering rows, starting from v6.5, it became possible to move Grid and TreeGrid columns via drag-n-drop. To enable this functionality, you only need to specify the <strong>dragItem: &#8220;column&#8221;<\/strong> property in the configuration of <a href=\"https:\/\/docs.dhtmlx.com\/suite\/grid\/configuration\/\" target=\"_blank\" rel=\"noopener\">Grid<\/a> or <a href=\"https:\/\/docs.dhtmlx.com\/suite\/grid\/configuration\/\" target=\"_blank\" rel=\"noopener\">TreeGrid<\/a>:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\"><span class=\"kw1\">var<\/span> grid <span class=\"sy0\">=<\/span> <span class=\"kw1\">new<\/span> dhx.<span class=\"me1\">Grid<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;grid_container&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"br0\">&#123;<\/span><br \/>\ncolumns<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><span class=\"co1\">\/\/ columns config],<\/span><br \/>\ndragItem<span class=\"sy0\">:<\/span><span class=\"st0\">&quot;column&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\ndata<span class=\"sy0\">:<\/span> dataset<br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p>If you need to prevent a particular column from being moved, you can add the <strong>draggable: false<\/strong> option to its config:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\"><span class=\"kw1\">var<\/span> grid <span class=\"sy0\">=<\/span> <span class=\"kw1\">new<\/span> dhx.<span class=\"me1\">Grid<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;grid_container&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"br0\">&#123;<\/span><br \/>\ncolumns<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><br \/>\n<span class=\"br0\">&#123;<\/span> width<span class=\"sy0\">:<\/span> <span class=\"nu0\">200<\/span><span class=\"sy0\">,<\/span> id<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;country&quot;<\/span><span class=\"sy0\">,<\/span> header<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><span class=\"br0\">&#123;<\/span> text<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;Country&quot;<\/span> <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span> draggable<span class=\"sy0\">:<\/span> <span class=\"kw2\">false<\/span> <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"br0\">&#123;<\/span> width<span class=\"sy0\">:<\/span> <span class=\"nu0\">150<\/span><span class=\"sy0\">,<\/span> id<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;land&quot;<\/span><span class=\"sy0\">,<\/span> header<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><span class=\"br0\">&#123;<\/span> text<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;Land&quot;<\/span> <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#93;<\/span> <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"br0\">&#123;<\/span> width<span class=\"sy0\">:<\/span> <span class=\"nu0\">150<\/span><span class=\"sy0\">,<\/span> id<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;density&quot;<\/span><span class=\"sy0\">,<\/span> header<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><span class=\"br0\">&#123;<\/span> text<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;Density&quot;<\/span> <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span> draggable<span class=\"sy0\">:<\/span> <span class=\"kw2\">false<\/span> <span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span><br \/>\ndata<span class=\"sy0\">:<\/span> dataset<span class=\"sy0\">,<\/span><br \/>\ndragItem<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;column&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p>To help you customize the user experience, we enlarged the list of events with new ones: <a href=\"https:\/\/docs.dhtmlx.com\/suite\/grid\/api\/grid_beforecolumndrag_event\/\" target=\"_blank\" rel=\"noopener\"><strong>beforeColumnDrag<\/strong><\/a> and <a href=\"https:\/\/docs.dhtmlx.com\/suite\/grid\/api\/grid_beforecolumndrop_event\/\" target=\"_blank\" rel=\"noopener\"><strong>beforeColumnDrop<\/strong><\/a>, which fire before users drag and drop columns.<\/p>\n<h5>Grouping TreeGrid Data<\/h5>\n<p>Another long-awaited feature of Suite 6.5 is the ability to group data in TreeGrid columns according to specific criteria.<\/p>\n<p>A basic example is <a href=\"https:\/\/docs.dhtmlx.com\/suite\/grid\/usage\/\" target=\"_blank\" rel=\"noopener\">grouping TreeGrid data<\/a> by values of a particular column. In order to implement this functionality, you need to make use of the <strong>groupBy()<\/strong> method and pass the id of the column as its parameter:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">treegrid.<span class=\"me1\">groupBy<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;age&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p>However, some use cases presuppose a more advanced approach. For instance, we need to group countries according to their size and split them into three categories: small, medium, and big. TreeGrid enables you to pass a function with a rule as a parameter to the <strong>groupBy()<\/strong> method, which will determine how to group data.<\/p>\n<p>In the example below, we define that all countries with an area less than 25000 square km fall into the &#8220;Small&#8221; group, while the &#8220;Medium&#8221; group includes countries smaller than 60000 square km. If there are countries with values less than 0, they are categorized as N.A. The rest of the countries constitute the &#8220;Big&#8221; group:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-7372\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2020\/06\/Grouping-by-area.png\" alt=\"Grouping TreeGrid data by area\" width=\"504\" height=\"533\" srcset=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2020\/06\/Grouping-by-area.png 504w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2020\/06\/Grouping-by-area-284x300.png 284w\" sizes=\"auto, (max-width: 504px) 100vw, 504px\" \/><a href=\"https:\/\/docs.dhtmlx.com\/suite\/samples\/treegrid\/03_usage\/15_group_by.html\" target=\"_blank\" rel=\"noopener\">Check the sample &gt;<\/a><\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">treegrid.<span class=\"me1\">groupBy<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw1\">function<\/span> <span class=\"br0\">&#40;<\/span>item<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n<span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"sy0\">!<\/span>item.<span class=\"me1\">area<\/span> <span class=\"sy0\">||<\/span> item.<span class=\"me1\">area<\/span> <span class=\"sy0\">&amp;<\/span>lt<span class=\"sy0\">;<\/span> <span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n<span class=\"kw1\">return<\/span> <span class=\"st0\">&quot;N.A.&quot;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>item.<span class=\"me1\">area<\/span> <span class=\"sy0\">&amp;<\/span>lt<span class=\"sy0\">;<\/span> <span class=\"nu0\">25000<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n<span class=\"kw1\">return<\/span> <span class=\"st0\">&quot;Small&quot;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span> <span class=\"kw1\">else<\/span> <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>item.<span class=\"me1\">area<\/span> <span class=\"sy0\">&amp;<\/span>lt<span class=\"sy0\">;<\/span> <span class=\"nu0\">60000<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n<span class=\"kw1\">return<\/span> <span class=\"st0\">&quot;Medium&quot;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"kw1\">return<\/span> <span class=\"st0\">&quot;Big&quot;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p>Moreover, you can modify the title of a group by setting a template with the help of the <a href=\"https:\/\/docs.dhtmlx.com\/suite\/migration\/\" target=\"_blank\" rel=\"noopener\"><strong>groupTitleTemplate<\/strong><\/a> configuration option. Thus, you can include the group name and any other attributes you need there. For instance, in the sample below, group titles include not only their names but also the calculated average density of countries:<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-7373\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2020\/06\/Grouping.gif\" alt=\"Grouping TreeGrid data by density\" width=\"504\" height=\"570\" \/><a href=\"https:\/\/docs.dhtmlx.com\/suite\/samples\/treegrid\/03_usage\/15_group_by.html\" target=\"_blank\" rel=\"noopener\">Check the sample &gt;<\/a><\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">groupTitleTemplate<span class=\"sy0\">:<\/span> <span class=\"kw1\">function<\/span><span class=\"br0\">&#40;<\/span>groupName<span class=\"sy0\">,<\/span> items<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n<span class=\"kw1\">return<\/span> groupName <span class=\"sy0\">+<\/span> <span class=\"st0\">&quot; (Avg. Density: &quot;<\/span> <span class=\"sy0\">+<\/span> <span class=\"kw4\">Math<\/span>.<span class=\"me1\">floor<\/span><span class=\"br0\">&#40;<\/span>items.<span class=\"me1\">reduce<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#40;<\/span>acc<span class=\"sy0\">,<\/span> i<span class=\"br0\">&#41;<\/span> <span class=\"sy0\">=&amp;<\/span>gt<span class=\"sy0\">;<\/span> acc <span class=\"sy0\">+<\/span> <span class=\"kw4\">Number<\/span>.<span class=\"me1\">parseInt<\/span><span class=\"br0\">&#40;<\/span>i.<span class=\"me1\">density<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">\/<\/span>items.<span class=\"me1\">length<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">+<\/span> <span class=\"st0\">&quot;)&quot;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/div>\n<h5>Changing the Alignment of Columns in Grid and TreeGrid<\/h5>\n<p>V6.5 enriched the abilities of Grid and TreeGrid with one more configuration option for <a href=\"https:\/\/docs.dhtmlx.com\/suite\/grid\/configuration\/\" target=\"_blank\" rel=\"noopener\">aligning the content<\/a> of columns and their headers. The new <strong>align<\/strong> config allows you to implement left, right, or center alignment of content:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\"><span class=\"kw1\">var<\/span> grid <span class=\"sy0\">=<\/span> <span class=\"kw1\">new<\/span> dhx.<span class=\"me1\">Grid<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;grid_container&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"br0\">&#123;<\/span><br \/>\ncolumns<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><br \/>\n<span class=\"br0\">&#123;<\/span> id<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;name&quot;<\/span><span class=\"sy0\">,<\/span> header<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><span class=\"br0\">&#123;<\/span> title<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;Name&quot;<\/span><span class=\"sy0\">,<\/span> align<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;center&quot;<\/span> <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span> align<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;left&quot;<\/span><span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"co1\">\/\/ more options<\/span><br \/>\n<span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span><br \/>\ndata<span class=\"sy0\">:<\/span> dataset<br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-7374\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2020\/06\/Alignment.png\" alt=\"Alignment of columns in DHTMLX Grid\" width=\"923\" height=\"602\" srcset=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2020\/06\/Alignment.png 923w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2020\/06\/Alignment-300x196.png 300w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2020\/06\/Alignment-768x501.png 768w\" sizes=\"auto, (max-width: 923px) 100vw, 923px\" \/><a href=\"https:\/\/docs.dhtmlx.com\/suite\/samples\/grid\/02_configuration\/24_align.html\" target=\"_blank\" rel=\"noopener\">Check the sample &gt;<\/a><\/p>\n<h5>Disabling Tooltips in Grid and TreeGrid<\/h5>\n<p>Another enhancement concerns the usage of tooltips in DHTMLX Grid and TreeGrid. From now on, you can <a href=\"https:\/\/docs.dhtmlx.com\/suite\/grid\/configuration\/\" target=\"_blank\" rel=\"noopener\">disable tooltips<\/a> for any chosen element of these components: entire columns or specific cells.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-7375\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2020\/06\/tooltips.gif\" alt=\"Disabling tooltips in DHTMLX TreeGrid\" width=\"760\" height=\"563\" \/><a href=\"https:\/\/docs.dhtmlx.com\/suite\/samples\/treegrid\/02_configuration\/11_hiding_tooltips.html\" target=\"_blank\" rel=\"noopener\">Check the sample &gt;<\/a><\/p>\n<p>It can be done via the <strong>tooltip<\/strong> configuration option like in the example below:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\"><span class=\"kw1\">var<\/span> treeGrid <span class=\"sy0\">=<\/span> <span class=\"kw1\">new<\/span> dhx.<span class=\"me1\">TreeGrid<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;treegrid&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"br0\">&#123;<\/span><br \/>\ncolumns<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><br \/>\n<span class=\"br0\">&#123;<\/span> width<span class=\"sy0\">:<\/span> <span class=\"nu0\">280<\/span><span class=\"sy0\">,<\/span> id<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;name&quot;<\/span><span class=\"sy0\">,<\/span> header<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><span class=\"br0\">&#123;<\/span> text<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;Book Name&quot;<\/span> <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span> tooltip<span class=\"sy0\">:<\/span> <span class=\"kw2\">true<\/span> <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"br0\">&#123;<\/span> width<span class=\"sy0\">:<\/span> <span class=\"nu0\">160<\/span><span class=\"sy0\">,<\/span> id<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;price&quot;<\/span><span class=\"sy0\">,<\/span> type<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;string&quot;<\/span><span class=\"sy0\">,<\/span> header<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><span class=\"br0\">&#123;<\/span> text<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;Terms and conditions&quot;<\/span><span class=\"sy0\">,<\/span> colspan<span class=\"sy0\">:<\/span> <span class=\"nu0\">2<\/span> <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span> <span class=\"br0\">&#123;<\/span> text<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;Price&quot;<\/span> <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#93;<\/span> <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"br0\">&#123;<\/span> width<span class=\"sy0\">:<\/span> <span class=\"nu0\">160<\/span><span class=\"sy0\">,<\/span> id<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;cover&quot;<\/span><span class=\"sy0\">,<\/span> type<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;string&quot;<\/span><span class=\"sy0\">,<\/span> header<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><span class=\"br0\">&#123;<\/span><span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span> <span class=\"br0\">&#123;<\/span> text<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;Cover&quot;<\/span> <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#93;<\/span> <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"br0\">&#123;<\/span> width<span class=\"sy0\">:<\/span> <span class=\"nu0\">160<\/span><span class=\"sy0\">,<\/span> id<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;ships&quot;<\/span><span class=\"sy0\">,<\/span> type<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;string&quot;<\/span><span class=\"sy0\">,<\/span> header<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><span class=\"br0\">&#123;<\/span> text<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;Ships in&quot;<\/span> <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#93;<\/span> <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"br0\">&#123;<\/span> width<span class=\"sy0\">:<\/span> <span class=\"nu0\">160<\/span><span class=\"sy0\">,<\/span> id<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;inStock&quot;<\/span><span class=\"sy0\">,<\/span> type<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;string&quot;<\/span><span class=\"sy0\">,<\/span> header<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><span class=\"br0\">&#123;<\/span> text<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;In stock&quot;<\/span> <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#93;<\/span> <span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span><br \/>\ndata<span class=\"sy0\">:<\/span> dataset<span class=\"sy0\">,<\/span><br \/>\ntooltip<span class=\"sy0\">:<\/span> <span class=\"kw2\">false<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<h5>Adjusting Columns&#8217; Width to Their Footer in Grid and TreeGrid<\/h5>\n<p>As a final touch, we updated the <a href=\"https:\/\/docs.dhtmlx.com\/suite\/grid\/api\/grid_adjust_config\/\" target=\"_blank\" rel=\"noopener\"><strong>adjust<\/strong><\/a> property in the configuration of Grid and TreeGrid components. Now the width of columns (all at once or separate ones) can be adjusted to the width of their footer:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\"><span class=\"kw1\">var<\/span> grid <span class=\"sy0\">=<\/span> <span class=\"kw1\">new<\/span> dhx.<span class=\"me1\">Grid<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;grid_container&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"br0\">&#123;<\/span><br \/>\ncolumns<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><span class=\"co1\">\/\/ columns config],<\/span><br \/>\nadjust<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;footer&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\ndata<span class=\"sy0\">:<\/span> dataset<br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-7376\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2020\/06\/adjust_footer.gif\" alt=\"Adjusting columns' width in Grid\" width=\"800\" height=\"538\" \/><a href=\"https:\/\/docs.dhtmlx.com\/suite\/samples\/grid\/02_configuration\/07_adjust.html\" target=\"_blank\" rel=\"noopener\">Check the sample &gt;<\/a><\/p>\n<h5>Manipulating the Selection of Items in DataView and List<\/h5>\n<p>V6.5 provides you with the ability to manage the selection of <a href=\"https:\/\/docs.dhtmlx.com\/suite\/dataview\/configuration\/\" target=\"_blank\" rel=\"noopener\">DataView<\/a> and <a href=\"https:\/\/docs.dhtmlx.com\/suite\/list\/configuration\/\" target=\"_blank\" rel=\"noopener\">List<\/a> items with the help of the newly introduced configuration options and methods.<\/p>\n<p>Starting with v6.5, the <strong>selection<\/strong> configuration property serves to enable and disable items selection:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\"><span class=\"kw1\">var<\/span> dataview <span class=\"sy0\">=<\/span> <span class=\"kw1\">new<\/span> dhx.<span class=\"me1\">DataView<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;dataview&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"br0\">&#123;<\/span><br \/>\nselection<span class=\"sy0\">:<\/span> <span class=\"kw2\">false<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p>Besides, you can apply the <a href=\"https:\/\/docs.dhtmlx.com\/suite\/selection\/api\/selection_enable_method\/\" target=\"_blank\" rel=\"noopener\"><strong>enableSelection<\/strong><\/a> and <a href=\"https:\/\/docs.dhtmlx.com\/suite\/selection\/api\/selection_disable_method\/\" target=\"_blank\" rel=\"noopener\"><strong>disableSelection<\/strong><\/a> methods for this purpose.<\/p>\n<h5>Manipulating the Visibility of Form and its Controls<\/h5>\n<p>V6.5 delivered plenty of new methods and options for improving your work with DHTMLX Form.<\/p>\n<p>Now it&#8217;s much easier to manage the visibility of the entire Form as well as separate controls. You can make a form hidden via the new <a href=\"https:\/\/docs.dhtmlx.com\/suite\/form\/api\/form_hidden_config\/\" target=\"_blank\" rel=\"noopener\"><strong>hidden<\/strong><\/a> configuration property or using the <a href=\"https:\/\/docs.dhtmlx.com\/suite\/form\/api\/form_hide_method\/\" target=\"_blank\" rel=\"noopener\"><strong>hide<\/strong><\/a> method. The <a href=\"https:\/\/docs.dhtmlx.com\/suite\/form\/api\/form_show_method\/\" target=\"_blank\" rel=\"noopener\"><strong>show<\/strong><\/a> method makes a form visible. The <a href=\"https:\/\/docs.dhtmlx.com\/suite\/form\/api\/form_isvisible_method\/\" target=\"_blank\" rel=\"noopener\"><strong>isVisible<\/strong><\/a> method enables you to check if a form is visible at the moment.<\/p>\n<p>You can apply the same methods to manipulate the visibility of Form controls (buttons, input fields, select boxes, etc.). In order to add interactivity to your form, you can attach new event handlers to Form controls: <a href=\"https:\/\/docs.dhtmlx.com\/suite\/form\/api\/form_afterhide_event\/\" target=\"_blank\" rel=\"noopener\"><strong>afterHide<\/strong><\/a>, <a href=\"https:\/\/docs.dhtmlx.com\/suite\/form\/api\/form_aftershow_event\/\" target=\"_blank\" rel=\"noopener\"><strong>afterShow<\/strong><\/a>, <a href=\"https:\/\/docs.dhtmlx.com\/suite\/form\/api\/form_beforehide_event\/\" target=\"_blank\" rel=\"noopener\"><strong>beforeHide<\/strong><\/a>, and <a href=\"https:\/\/docs.dhtmlx.com\/suite\/form\/api\/form_beforeshow_event\/\" target=\"_blank\" rel=\"noopener\"><strong>beforeShow<\/strong><\/a>.<\/p>\n<p>Besides, we enriched the abilities of the select control and simpleVault control.<\/p>\n<p>Now you can get an array of all options of the <a href=\"https:\/\/docs.dhtmlx.com\/suite\/form\/select\/\" target=\"_blank\" rel=\"noopener\">select control<\/a> via the <strong>getOptions()<\/strong> method. The <strong>setOptions()<\/strong> method enables you to modify select options dynamically.<\/p>\n<p>New methods of the <a href=\"https:\/\/docs.dhtmlx.com\/suite\/form\/simplevault\/\" target=\"_blank\" rel=\"noopener\">simpleVault<\/a> control allow you to open the dialog box and select files for uploading via the <strong>selectFile()<\/strong> method, send a POST request for uploading files to the server via the <strong>send()<\/strong> method and specify the default list of loaded files via the <strong>setValue()<\/strong> method.<\/p>\n<h5>Selecting Sidebar Items<\/h5>\n<p>DHTMLX Sidebar was also updated with new methods for selecting and deselecting Sidebar options as well as checking if an option is selected or not. <a href=\"https:\/\/docs.dhtmlx.com\/suite\/samples\/sidebar\/03_usage\/06_select_unselect.html\" target=\"_blank\" rel=\"noopener\">Check the sample &gt;<\/a><\/p>\n<p>Now that you have learned about the update of our Suite UI library v6.5, we invite you to test all the components during a <a href=\"https:\/\/dhtmlx.com\/docs\/products\/dhtmlxSuite\/download.shtml?utm_source=blog&amp;utm_medium=link_bottom&amp;utm_campaign=suite6_5_trial\" target=\"_blank\" rel=\"noopener\"><strong>free 30-day evaluation period<\/strong><\/a>.<\/p>\n<p>We&#8217;re looking forward to your feedback &#8211; feel free to let us know what you think in the comment section below or via our email: <a href=\"mailto:contact@dhtmlx.com\" target=\"_blank\" rel=\"noopener\">contact@dhtmlx.com<\/a>.<\/p>\n<p>Current clients are invited to download the latest version in their <a href=\"https:\/\/dhtmlx.com\/clients\/\" target=\"_blank\" rel=\"noopener\">Client&#8217;s Area<\/a>.<\/p>\n<p>Stay safe and stay tuned for DHTMLX summer updates!<\/p>\n<p><a style=\"background-color: #2bcd69; color: #fff; font-family: Roboto Medium, Arial, sans-serif; font-size: 17px; line-height: 50px; border-radius: 40px; text-align: center; text-decoration: none; display: block; margin: 0 auto; padding: 0 42px; max-width: 200px; box-shadow: 0 3px 9px 0 rgba(0,0,0,.2); transition: box-shadow .1s ease, background .1s ease;\" href=\"https:\/\/dhtmlx.com\/docs\/products\/dhtmlxSuite\/download.shtml?utm_source=blog&amp;utm_medium=button&amp;utm_campaign=suite6_5_trial\">Get Free Trial v6.5 Now<\/a><\/p>\n<h6>Related Materials:<\/h6>\n<ul>\n<li><a href=\"https:\/\/docs.dhtmlx.com\/suite\/whatsnew\/\" target=\"_blank\" rel=\"noopener\">Full &#8220;What&#8217;s new in v6.5&#8221; list<\/a><\/li>\n<li><a href=\"https:\/\/docs.dhtmlx.com\/suite\/samples\/index.html\" target=\"_blank\" rel=\"noopener\">Suite samples<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>The summer season at DHTMLX opens with a major release of our JavaScript widget library &#8211; Suite 6.5. The update accommodated some highly demanded features requested by our clients &#8230;<\/p>\n","protected":false},"author":101012,"featured_media":7379,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[70,1,38],"tags":[33,59,31,6,10,41,4],"class_list":["post-7363","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-releases","category-uncategorized","category-visible","tag-all-posts","tag-angular","tag-form","tag-dhtmlxgrid","tag-dhtmlxsuite","tag-typescript","tag-dhtmlx-updates"],"_links":{"self":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts\/7363","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=7363"}],"version-history":[{"count":65,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts\/7363\/revisions"}],"predecessor-version":[{"id":15764,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts\/7363\/revisions\/15764"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/media\/7379"}],"wp:attachment":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/media?parent=7363"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/categories?post=7363"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/tags?post=7363"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}