{"id":11846,"date":"2023-10-23T14:22:39","date_gmt":"2023-10-23T11:22:39","guid":{"rendered":"https:\/\/dhtmlx.com\/blog\/?p=11846"},"modified":"2025-03-18T17:25:36","modified_gmt":"2025-03-18T14:25:36","slug":"dhtmlx-suite-8-3","status":"publish","type":"post","link":"https:\/\/dhtmlx.com\/blog\/dhtmlx-suite-8-3\/","title":{"rendered":"DHTMLX Suite 8.3: Colorpicker Transparency Scale, Extended Functionality of Columns&#8217; Header and Footer in Grid\/TreeGrid, and More"},"content":{"rendered":"<p>We are thrilled to announce the release of DHTMLX Suite v8.3! This minor update is shipped with a pack of new features and improvements designed to facilitate your experience with our <a href=\"https:\/\/dhtmlx.com\/docs\/products\/dhtmlxSuite\/\" rel=\"noopener\" target=\"_blank\">JavaScript UI widget library<\/a>. <\/p>\n<p>For instance, we added the ability to set the color transparency level in the Colorpicker widget. In v8.3, popular Grid\/TreeGrid features such as auto height mode, HTML content in cells, and event handlers can be specifically applied in the header and footer. Now when Grid and TreeGrid configurations include a column with the &#8220;number&#8221; type, only numeric values can be entered in the cells of this column. The Form container control became more informative thanks to a new label option. We also added new events to APIs of Suite navigation widgets and a range of useful fixes.<\/p>\n\n\t\t<div class='post-banner'>\n\t\t    <div class='post-banner__inside'>\n\t\t        <div>\n\t\t            <div class=\"post-banner__title\">Download DHTMLX Suite v8.3<\/div>\n\t\t            <div class=\"post-banner__text\">Estimate the updated functionality for building modern data-intensive apps<\/div>\n                <\/div>\n\t\t            \n                \n            <div class='post-banner__btn'>\n                <a href='https:\/\/dhtmlx.com\/docs\/products\/dhtmlxSuite\/download.shtml' title='' class='button-secondary'>Get free trial<\/a>\n            <\/div>\n        \n            <\/div>\n\t\t<\/div>\n\t\n<p>Let us review all the novelties included in the release in more detail.<\/p>\n<h5>Colorpicker: Color Transparency Option<\/h5>\n<p>DHTMLX Colorpicker is a handy tool when it comes to implementing color selection functionality in various UI elements such as a form or popup window. In v8.3, we complemented a rich color palette of this widget with the ability to <a href=\"https:\/\/docs.dhtmlx.com\/suite\/colorpicker\/configuration\/#color-transparency\" rel=\"noopener\" target=\"_blank\">specify the transparency of the selected color<\/a>.<\/p>\n<p>You don\u2019t have to add anything to the code to allow end-users to play around with color transparency since this feature is enabled by default with the new <strong><a href=\"https:\/\/docs.dhtmlx.com\/suite\/colorpicker\/api\/colorpicker_transparency_config\/\" rel=\"noopener\" target=\"_blank\">transparency<\/a><\/strong> property. This property is responsible for displaying the transparency scale on a web page.<\/p>\n<p>To set the required color transparency level via the UI, end-users just need to drag the slider knob on the transparency scale as shown in the example below.<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2023\/10\/V2_Colorpicker-1.gif\" alt=\"Suite v8.3 - Transparency option in Colorpicker\" width=\"556\" height=\"420\" class=\"alignnone size-full wp-image-11847\" \/><br \/>\n<a href=\"https:\/\/snippet.dhtmlx.com\/ezk8rk4m?tag=colorpicker&#038;mode=wide\" rel=\"noopener\" target=\"_blank\">Check the sample ><\/a><\/p>\n<p>If needed, the color transparency feature can be disabled by setting the value of the <strong><a href=\"https:\/\/docs.dhtmlx.com\/suite\/colorpicker\/api\/colorpicker_transparency_config\/\" rel=\"noopener\" target=\"_blank\">transparency<\/a><\/strong> property to <em>false<\/em>.<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\"><span class=\"kw1\">const<\/span> colorpicker <span class=\"sy0\">=<\/span> <span class=\"kw1\">new<\/span> dhx.<span class=\"me1\">Colorpicker<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;colorpicker&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; transparency<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><a href=\"https:\/\/snippet.dhtmlx.com\/ewgu0aps?tag=colorpicker&#038;mode=wide\" rel=\"noopener\" target=\"_blank\">Check the sample ><\/a><\/p>\n<h5>Grid and TreeGrid: New Features for Columns&#8217; Header and Footer<\/h5>\n<h6>Auto Height Mode (PRO)<\/h6>\n<p>Back in version 8.1, we introduced the auto height mode for rows in tables built with Grid and TreeGrid widgets. The new Suite version extends this feature to headers and footers in table columns. Thus, Grid\/TreeGrid will <a href=\"https:\/\/docs.dhtmlx.com\/suite\/grid\/configuration\/#headerfooter-height\" rel=\"noopener\" target=\"_blank\">dynamically adjust the header\/footer height to its content<\/a>. As a result, headers and footers can contain text of various lengths and still be fully visible to end-users.<\/p>\n<p>Programmatically, the auto height mode for the header\/footer is activated by adding the new <strong><a href=\"https:\/\/docs.dhtmlx.com\/suite\/grid\/api\/grid_headerautoheight_config\/\" rel=\"noopener\" target=\"_blank\">headerAutoHeight<\/a><\/strong> and <strong><a href=\"https:\/\/docs.dhtmlx.com\/suite\/grid\/api\/grid_footerautoheight_config\/\" rel=\"noopener\" target=\"_blank\">footerAutoHeight<\/a><\/strong> parameters in the Grid\/TreeGrid configuration object. They allow switching on the autoheight mode for the header or the footer independently of the common <strong><a href=\"https:\/\/docs.dhtmlx.com\/suite\/grid\/api\/grid_autoheight_config\/\" rel=\"noopener\" target=\"_blank\">autoHeight<\/a><\/strong> property. <\/p>\n<p>Here is how it is done in the Grid widget:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\"><span class=\"kw1\">const<\/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&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; columns<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><br \/>\n&nbsp; &nbsp; ...<br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; ...<br \/>\n&nbsp; &nbsp; <span class=\"me1\">autoHeight<\/span><span class=\"sy0\">:<\/span> <span class=\"kw2\">false<\/span><span class=\"sy0\">,<\/span> <span class=\"co1\">\/\/ enables autoHeight in data (content)<\/span><br \/>\n&nbsp; &nbsp; headerAutoHeight<span class=\"sy0\">:<\/span> <span class=\"kw2\">true<\/span><span class=\"sy0\">,<\/span> <span class=\"co1\">\/\/ enables autoHeight in header<\/span><br \/>\n&nbsp; &nbsp; footerAutoHeight<span class=\"sy0\">:<\/span> <span class=\"kw2\">true<\/span><span class=\"sy0\">,<\/span> <span class=\"co1\">\/\/ enables autoHeight in footer <\/span><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\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2023\/10\/bandicam-2023-10-23-13-30-03-918.png\" alt=\"Suite 8.3 - auto height mode in header and footer\" width=\"744\" height=\"766\" class=\"alignnone size-full wp-image-11855\" srcset=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2023\/10\/bandicam-2023-10-23-13-30-03-918.png 744w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2023\/10\/bandicam-2023-10-23-13-30-03-918-291x300.png 291w\" sizes=\"auto, (max-width: 744px) 100vw, 744px\" \/><br \/>\n<a href=\"https:\/\/snippet.dhtmlx.com\/jwz9k66d?tag=grid&#038;mode=wide\" rel=\"noopener\" target=\"_blank\">Check the sample ><\/a><br \/>\n<em>Note that this feature is available only in the PRO edition of DHTMLX Grid.<\/em><\/p>\n<p>Bear in mind that if your table should have the header and footer of a particular fixed height, you can also specify them via the already existing <strong><a href=\"https:\/\/docs.dhtmlx.com\/suite\/grid\/api\/grid_headerrowheight_config\/\" rel=\"noopener\" target=\"_blank\">headerRowHeight<\/a><\/strong> and <strong><a href=\"https:\/\/docs.dhtmlx.com\/suite\/grid\/api\/grid_footerrowheight_config\/\" rel=\"noopener\" target=\"_blank\">footerRowHeight<\/a><\/strong> properties.<\/p>\n<h6>Event Handlers<\/h6>\n<p>DHTMLX Suite 8.3 provides you with a new convenient way to add event handlers to the columns\u2019 header and footer in Grid\/TreeGrid. Instead of attaching event handlers to the header\/footer by yourself, now you can rely on the <strong><a href=\"https:\/\/docs.dhtmlx.com\/suite\/grid\/api\/grid_eventhandlers_config\/\" rel=\"noopener\" target=\"_blank\">eventHandlers<\/a><\/strong> property to complete this task much faster. If previously this property allowed adding event handlers only to HTML elements defined in the data set or custom templates in column cells, now it is also available for the header\/footer cells.<\/p>\n<p>For instance, here is how you can add the <strong>onclick<\/strong> event to the master checkbox in the header. This event should fire when the checkbox is marked as checked\/unchecked and update all slave checkboxes in the column:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\"><span class=\"kw1\">const<\/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&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; columns<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; width<span class=\"sy0\">:<\/span> <span class=\"nu0\">60<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; id<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;paid&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; header<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; text<span class=\"sy0\">:<\/span> `<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">&lt;<\/span>label <span class=\"kw5\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;dhx_checkbox dhx_cell-editor__checkbox &quot;<\/span><span class=\"sy0\">&gt;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">&lt;<\/span>input type<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;checkbox&quot;<\/span> <span class=\"kw5\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;dhx_checkbox__input dhx_checkbox--check-all&quot;<\/span><span class=\"sy0\">&gt;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">&lt;<\/span>span <span class=\"kw5\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;dhx_checkbox__visual-input &quot;<\/span><span class=\"sy0\">&gt;&lt;\/<\/span>span<span class=\"sy0\">&gt;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">&lt;\/<\/span>label<span class=\"sy0\">&gt;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; `<span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; ...<span class=\"co1\">\/\/ more options<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; ...<span class=\"co1\">\/\/ more options<\/span><br \/>\n&nbsp; &nbsp; eventHandlers<span class=\"sy0\">:<\/span> <span class=\"br0\">&#123;<\/span> <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; onclick<span class=\"sy0\">:<\/span> <span class=\"br0\">&#123;<\/span> <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;dhx_checkbox--check-all&quot;<\/span><span class=\"sy0\">:<\/span> <span class=\"kw1\">function<\/span><span class=\"br0\">&#40;<\/span>event<span class=\"sy0\">,<\/span> data<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; grid.<span class=\"me1\">data<\/span>.<span class=\"me1\">forEach<\/span><span class=\"br0\">&#40;<\/span>row <span class=\"sy0\">=&gt;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; grid.<span class=\"me1\">data<\/span>.<span class=\"me1\">update<\/span><span class=\"br0\">&#40;<\/span>row.<span class=\"me1\">id<\/span><span class=\"sy0\">,<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#91;<\/span>data.<span class=\"me1\">col<\/span>.<span class=\"me1\">id<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">:<\/span> event.<span class=\"me1\">target<\/span>.<span class=\"me1\">checked<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/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><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2023\/10\/image2.gif\" alt=\"Suite 8.3 - event handlers in the header\" width=\"856\" height=\"352\" class=\"alignnone size-full wp-image-11856\" \/><a href=\"https:\/\/snippet.dhtmlx.com\/4fdki698?tag=grid&#038;mode=wide\" rel=\"noopener\" target=\"_blank\">Check the sample ><\/a><br \/>\nThis novelty expands your opportunities to deliver dynamic and interactive data tables with DHTMLX.<\/p>\n<h6>HTML Content in Header\/Footer Cells<\/h6>\n<p>Apart from the auto height mode and event handlers, there is one more Grid\/TreeGrid capability added specifically for the columns\u2019 header\/footer in version 8.3. Now you are able to <a href=\"https:\/\/docs.dhtmlx.com\/suite\/grid\/configuration\/#html-content-of-grid-columns\" rel=\"noopener\" target=\"_blank\">complement these table elements with any HTML content<\/a> using the <strong><a href=\"https:\/\/docs.dhtmlx.com\/suite\/grid\/api\/grid_htmlenable_config\/\" rel=\"noopener\" target=\"_blank\">htmlEnable<\/a><\/strong> property. <\/p>\n<p>For example, you can apply the <strong><a href=\"https:\/\/docs.dhtmlx.com\/suite\/grid\/api\/grid_htmlenable_config\/\" rel=\"noopener\" target=\"_blank\">htmlEnable<\/a><\/strong> property to change styling in header cells as follows:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\"><span class=\"kw1\">const<\/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&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; columns<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <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><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; text<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;&lt;span style='font-size:16px; color: steelblue'&gt;Country&lt;\/span&gt;&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; htmlEnable<span class=\"sy0\">:<\/span> <span class=\"kw2\">true<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#93;<\/span><span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <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;population&quot;<\/span><span class=\"sy0\">,<\/span> htmlEnable<span class=\"sy0\">:<\/span> <span class=\"kw2\">true<\/span><span class=\"sy0\">,<\/span> header<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#123;<\/span> text<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;&lt;span class='header-title'&gt;Population&lt;\/span&gt;&quot;<\/span> <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; ...<span class=\"co1\">\/\/ other columns' configs<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; data<span class=\"sy0\">:<\/span> dataset<span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; htmlEnable<span class=\"sy0\">:<\/span> <span class=\"kw2\">false<\/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><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2023\/10\/image4.png\" alt=\"Suite 8.3 - HTMLX content in header cells\" width=\"806\" height=\"325\" class=\"alignnone size-full wp-image-11851\" srcset=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2023\/10\/image4.png 806w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2023\/10\/image4-300x121.png 300w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2023\/10\/image4-768x310.png 768w\" sizes=\"auto, (max-width: 806px) 100vw, 806px\" \/><br \/>\n<a href=\"https:\/\/snippet.dhtmlx.com\/7o4elf48?tag=grid&#038;mode=wide\" rel=\"noopener\" target=\"_blank\">Check the sample ><\/a><\/p>\n<p>When applied for the column&#8217;s header (or footer), the <strong><a href=\"https:\/\/docs.dhtmlx.com\/suite\/grid\/api\/grid_htmlenable_config\/\" rel=\"noopener\" target=\"_blank\">htmlEnable<\/a><\/strong> property redefines the value of the same config already specified for the parent column or for the whole table.<\/p>\n<h5>Grid and TreeGrid: Only Numeric Values in Columns with Number Type<\/h5>\n<p>Data tables based on Grid and TreeGrid widgets are frequently used only for working with numeric data.  Therefore, we always try to find new ways to optimize this process in line with the needs of our customers. In v8.3, we ensured that grid columns with specified <strong>type:number<\/strong> allow only numeric entries in cells. If <strong>type:number<\/strong> is specified, you can use two new <strong>min<\/strong> and <strong>max<\/strong> properties in the <strong><a href=\"https:\/\/docs.dhtmlx.com\/suite\/grid\/api\/api_gridcolumn_properties\/#editorconfig\" rel=\"noopener\" target=\"_blank\">editorConfig<\/a><\/strong> object for setting minimum and maximum allowed values respectively.<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\"><span class=\"kw1\">const<\/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&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; columns<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;...<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; width<span class=\"sy0\">:<\/span> <span class=\"nu0\">150<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; id<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;density&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 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 (P\/Km\u00b2)&quot;<\/span> <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; type<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;number&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; editorConfig<span class=\"sy0\">:<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; min<span class=\"sy0\">:<\/span> <span class=\"nu0\">5<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; max<span class=\"sy0\">:<\/span> <span class=\"nu0\">600<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; editable<span class=\"sy0\">:<\/span> <span class=\"kw2\">true<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; ...<span class=\"co1\">\/\/ other columns' configs<\/span><br \/>\n&nbsp; &nbsp; data<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\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2023\/10\/image5.gif\" alt=\"Suite 8.3 - min and max values in number column types\" width=\"751\" height=\"316\" class=\"alignnone size-full wp-image-11852\" \/><br \/>\n<a href=\"https:\/\/snippet.dhtmlx.com\/w2cdossn?tag=grid&#038;mode=wide\" rel=\"noopener\" target=\"_blank\">Check the sample ><\/a><br \/>\nAs you can see in the example above, when entering values that fall outside the specified min-max range from 5 to 600, they are highlighted in red. After closing the editor, the nearest valid number is displayed i.e. 5 or 600.<\/p>\n<p>All new functional capabilities  related to DHTMLX Grid and TreeGrid are described above using the examples of the Grid widget. If you are specifically interested in how the same features can be implemented in the TreeGrid widget, visit the <a href=\"https:\/\/docs.dhtmlx.com\/suite\/category\/grid-properties\/\" rel=\"noopener\" target=\"_blank\">TreeGrid properties<\/a> section in our documentation.<\/p>\n<h5>Form: Label in Container Control (PRO)<\/h5>\n<p>The container control of our Form widget allows enriching JavaScript forms with custom HTML content and other UI widgets. This release includes one feature related to this control, namely the ability to <a href=\"https:\/\/docs.dhtmlx.com\/suite\/form\/api\/container\/api_container_properties\/\" rel=\"noopener\" target=\"_blank\">add a label<\/a> to it via the corresponding <strong>label<\/strong> property. In addition, we also expanded the container\u2019s API with a number of properties for manipulating the label (<strong>labelWidth<\/strong>, <strong>labelPosition<\/strong>, <strong>hiddenLabel<\/strong>, <strong>helpMessage<\/strong>). All these additions will help to improve the usability of this control. This <a href=\"https:\/\/snippet.dhtmlx.com\/cnxi9eqq?tag=form&#038;mode=wide\" rel=\"noopener\" target=\"_blank\">sample<\/a> shows this new feature can be applied to the container control in practice.<\/p>\n<p><em>Please note that the container control of the Form widget is available in the PRO edition of the DHTMLX library only.<\/em><\/p>\n<h5>Other Improvements<\/h5>\n<p>Now it is time to go through some minor but still useful API updates provided in DHTMLX Suite 8.3. <\/p>\n<p>Navigation widgets (Menu, Ribbon, Sidebar, and Toolbar) of the Suite library received useful additions to their APIs:<\/p>\n<ul>\n<li>Menu &#8211; <strong><a href=\"https:\/\/docs.dhtmlx.com\/suite\/menu\/api\/menu_keydown_event\/\" rel=\"noopener\" target=\"_blank\">keydown<\/a><\/strong> event<\/li>\n<li>Ribbon &#8211; <strong><a href=\"https:\/\/docs.dhtmlx.com\/suite\/ribbon\/api\/ribbon_input_event\/\" rel=\"noopener\" target=\"_blank\">input<\/a><\/strong>, <strong><a href=\"https:\/\/docs.dhtmlx.com\/suite\/ribbon\/api\/ribbon_inputchange_event\/\" rel=\"noopener\" target=\"_blank\">inputChange<\/a><\/strong>, and <strong><a href=\"https:\/\/docs.dhtmlx.com\/suite\/ribbon\/api\/ribbon_keydown_event\/\" rel=\"noopener\" target=\"_blank\">keydown<\/a><\/strong> events<\/li>\n<li>Sidebar &#8211; <strong><a href=\"https:\/\/docs.dhtmlx.com\/suite\/sidebar\/api\/sidebar_keydown_event\/\" rel=\"noopener\" target=\"_blank\">keydown<\/a><\/strong> event<\/li>\n<li>Toolbar &#8211; <strong><a href=\"https:\/\/docs.dhtmlx.com\/suite\/toolbar\/api\/toolbar_input_event\/\" rel=\"noopener\" target=\"_blank\">input<\/a><\/strong> and <strong><a href=\"https:\/\/docs.dhtmlx.com\/suite\/toolbar\/api\/toolbar_keydown_event\/\" rel=\"noopener\" target=\"_blank\">keydown<\/a><\/strong> events<\/li>\n<\/ul>\n<p>On top of that, we also added the <strong><a href=\"https:\/\/docs.dhtmlx.com\/suite\/ribbon\/datepicker\/\" rel=\"noopener\" target=\"_blank\">Datepicker<\/a><\/strong> control for the Ribbon widget and a number of useful bug fixes.<\/p>\n<p>The &#8220;What\u2019s new&#8221; section will help you to make a quick revision of all new features delivered in this minor update.<\/p>\n<p>To test all the novelties provided in DHTMLX Suite v8.3 on a practical level, you can download a free <a href=\"https:\/\/dhtmlx.com\/docs\/products\/dhtmlxSuite\/download.shtml\" rel=\"noopener\" target=\"_blank\">30-day trial version<\/a>. Our current clients can access the latest version of the Suite library via their <a href=\"https:\/\/dhtmlx.com\/clients\/\" rel=\"noopener\" target=\"_blank\">Client\u2019s Area<\/a>.<\/p>\n<h5>Related Materials:<\/h5>\n<ul>\n<li><a href=\"https:\/\/docs.dhtmlx.com\/suite\/whatsnew\/#version-83\" rel=\"noopener\" target=\"_blank\">What\u2019s new in v8.3<\/a><\/li>\n<li><a href=\"https:\/\/docs.dhtmlx.com\/suite\/\" rel=\"noopener\" target=\"_blank\">DHTMLX Suite documentation<\/a><\/li>\n<li><a href=\"https:\/\/snippet.dhtmlx.com\/ezk8rk4m?tag=colorpicker&#038;mode=wide\" rel=\"noopener\" target=\"_blank\">DHTMLX Suite code snippets<\/a><\/li>\n<li><a href=\"https:\/\/dhtmlx.com\/docs\/products\/dhtmlxSuite\/download.shtml\" rel=\"noopener\" target=\"_blank\">Free 30-day trial version<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>We are thrilled to announce the release of DHTMLX Suite v8.3! This minor update is shipped with a pack of new features and improvements designed to facilitate your experience &#8230;<\/p>\n","protected":false},"author":101014,"featured_media":11853,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[70],"tags":[33,6,10],"class_list":["post-11846","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-releases","tag-all-posts","tag-dhtmlxgrid","tag-dhtmlxsuite"],"_links":{"self":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts\/11846","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\/101014"}],"replies":[{"embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/comments?post=11846"}],"version-history":[{"count":16,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts\/11846\/revisions"}],"predecessor-version":[{"id":13604,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts\/11846\/revisions\/13604"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/media\/11853"}],"wp:attachment":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/media?parent=11846"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/categories?post=11846"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/tags?post=11846"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}