Webix 11.4 Released Read More New Features in Core, Kanban & Rich Text Editor, plus a Powerful SpreadSheet Update

Webix 11.4 Release

Today, we are excited to introduce Webix 11.4, bringing a fresh wave of enhancements and upgrades across the library. This release delivers new features in Core, Kanban, and Rich Text Editor – with the SpreadSheet widget as the main highlight, as it comes with major updates to both functionality and APIs. No time to waste – let’s take a detailed look at what’s new.

Webix JS UI Library 11.4 Release

Core Updates

Support for Axis‑Aligned Titles

The Slider widget now supports axis titles – labels that are displayed along its horizontal or vertical axis. Titles are generated automatically and can be customized. This feature was introduced to make sliders more descriptive and visually clear.

To activate the new functionality, set axisTitles:true and define min, max and step values in the Slider’s configuration – the widget will use these range-defining properties to create the titles.

Slider Axis

Check this snippet for more practical examples, including customization options.

End-User Area Multiselect

This time Webix Core was enhanced with end-user multiselect support. The new feature complements the existing capability to apply area multiselect programmatically via the dedicated API. Now, users can select multiple single cells and cell ranges with Ctrl+click and Ctrl+drag. This improvement makes it much easier to manipulate several data segments at once in components that work with complex data, particularly DataTable and SpreadSheet.

Area Multiselect

Live demo >>

Kanban Updates

Markdown Support

This time, we upgraded the Kanban widget with Markdown support, making it much easier to work with content produced by AI assistants. Earlier, this capability was introduced in the Rich Text Editor. Now, you can copy text from your favourite AI tools and paste it into Kanban cards while preserving all formatting.

Markdown in Kanban

Live demo >>

To enable this feature, add the textFormat property to the Kanban configuration and set it to “markdown”. The default value of the property is “text”.

webix.ui({
  view:"kanban",
  textFormat:"markdown",
  /* structure, data, and other settings */
});

Please note that our Markdown parser does not support nested structures (except bold inside italic). In practice, this means that if you insert, for example, bold text inside a link, italic inside a list item, or multi-level lists into the card, they will not be displayed correctly.

Our built-in Markdown parser is intentionally minimal, but we don’t aim to limit you – feel free to swap it if you need an alternative solution. To do so, you can simply redefine the templateBody of the cards:

webix.type(webix.ui.kanbanlist,{
  name: "cards",
  templateBody: function(obj){
    // markdownToHtml can be replaced with any 3rd-party parser of your choise
    return `<div class="webix_kanban_body_markdown">${this.markdownToHtml(obj.text)}</div>`;
  }
});

SpreadSheet Updates

Grouping Rows and Columns

In this release we introduced grouping in SpreadSheet. You can create row and column groups, and then collapse and expand them when needed. This is what makes your work with complex spreadsheets much easier – e.g. you can significantly improve the readability of the table’s content by expanding only the sections related to the current task and collapsing all the rest. You are free to create nested groups that can contain up to eight levels of hierarchy.

To apply grouping you need to select the cells in the rows or columns you want to group or ungroup and use Alt+Shift+Right for grouping and Alt+Shift+Left for ungrouping. These hotkeys open a dialogue window where you can choose which items you want to group or ungroup – rows or columns. You can also do that via the corresponding options in Toolbar, Menubar and context menu.

Grouping rows and columns

Live demo >>

You can also manage grouping programmatically through the API – with detailed documentation available here.

Area Multiselect

Together with the multiselect enhancement in Webix Core, the same capability is now available in SpreadSheet. You can easily select non-adjacent areas and apply formatting, remove values, or fill cells with formulas across multiple separate ranges.

Multiselect in SpreadSheet

Live demo >>

Multiselect in SpreadSheet is also supported at the API level: you can pass multi-range references (e.g., A1:C3;B4:D5) to apply styles, remove values, or get and set cell values programmatically.

Enhanced Sorting

This release brings a major upgrade to the SpreadSheet sorting algorithm. Previously, sorting was applied strictly to the selected area and did not preserve row integrity.

With the new update, each row in the selected range is treated as a single unit. This means that when you sort a range, all cells in each row move together, fully maintaining the logical structure of your data. This enhancement makes sorting intuitive and safe for tables that contain formulas, references, or structured records.

To align the UI with this improvement we introduced a new Sort Range item in the Context menu which contains Ascending, Descending and Custom Sort sup-options. The Menubar now has two items with submenus: Sort Range for the operations on the current selection and Sort Sheet that operates on the entire sheet. Please note that sorting is not supported for multiselect.

Custom sorting in SpreadSheet

Live demo >>

As for the existing sortRange method – it remains fully compatible, but now supports an extended configuration object, allowing to specify the sorting column, direction, and whether the range includes headers.

spreadsheet.sortRange("A3:D13", {
  hasHeaders: true,
  levels: [      
    { column: "C", direction: "desc" },
    { column: "A", direction: "asc" }
  ]
});

Paste Transposed Option: Flip Rows and Columns

Spreadsheet now allows you to flip selected rows and columns when pasting data. This means you can rearrange your dataset preserving the formatting, e.g. converting horizontal headers into vertical lists and vice versa.

The feature is accessible from the Spreadsheet’s Context menu: copy the cells you want to transpose, and then choose Special pastePaste transpose to switch horizontal and vertical values.

Transpose

Live demo >>

Statistics for the Selected Cell Range

Webix SpreadSheet now provides statistics for the area you select on the sheet. If you have ever used Google Sheets or Excel, the feature will feel very intuitive and familiar to you as it follows a similar logic applied in these tools. When you choose a cell range, you can now find Sum, Average, Min, Max, Count and Numerical Count values in the bottom right corner of the widget next to the zoom controls. This new functionality simplifies working with data: users can verify the figures without applying formulas, check calculation results, and analyze data on the fly.

Cell Range Statistics

Live demo >>

Note: SpreadSheet uses the same pattern as Google Sheets for the operations on the selected range: for Sum, Average, Min, and Max it calculates only numeric data and ignores text and empty cells; Count shows the number of cells filled with any data, while Numerical Count – the total of cells with numeric entries.

Column Resize on Touch Devices

In one of our recent releases, we introduced column resize on touch and hybrid devices for Webix Grid*. In this release, Webix engineers added the same option to SpreadSheet. Now users can resize SpreadSheet columns, adjusting them to a comfortable width for viewing and editing data on touch screens.

You can activate this feature in the new tableConfig property by setting icon:true in the resizeColumn object configuration.

webix.ui({
  view:"spreadsheet",
  data:spreadsheet_data,
  tableConfig:{
    resizeColumn:{icon:true}
  }
});

Touch Devices

Live demo >>
Try it on mobile >>

By specifying icon:true, you switch from the original resize mode, when the content is re-rendered after you finish the drag, to live column resizing. This means that now when you move the resize icon the SpreadSheet table refreshes in real time.

Although live resizing is a very handy option, please, mind that it has a higher performance cost. That is why we recommend turning it off if your SpreadSheet handles large numbers of columns. To disable the feature, set live: false in the resizeColumn object configuration.

webix.ui({
  view:"spreadsheet",
  data:spreadsheet_data,
  tableConfig:{
    resizeColumn:{icon:true, live: false}
  }
});

* Webix Grid is a standalone product released independently of the main library. All updates introduced to Grid are also applied to the DataTable component in Webix Core.

Excel‑Style Border Rendering and Types

Excel-style cell border behavior is now available in SpreadSheet. Initially, the widget uses a model where all four borders are rendered for each cell. In this release, we added support for Excel-like shared borders to improve compatibility with Excel files.

The new mode can be enabled with the borderCollapse property set to true. By default, borderCollapse is false,meaning SpreadSheet uses its default behavior and adds all four borders to cells.

webix.ui({
  view:"spreadsheet",
  toolbar:"full",
  borderCollapse:true,
//other settings here
});

This is how your cells will look with the new mode turned on:

Excel Cell Borders

Excel-like borders

Default Cell Borders

Default borders

With this update, we’ve expanded the list of border types supported by SpreadSheet with seven additional options: hair, dashDotDot, dashDot, mediumDashDotDot, slantDashDot, mediumDashDot, mediumDashed. Now, the component provides all border variants available in Excel and preserves them during import and export.

Together with adding new options, we also adjusted several border types to make them look just like Excel’s borders do:

  • hair now looks the way dotted previously did (a 1px dotted line)
  • dotted renders the way dashed used to (a 1px dashed line)
  • dashed now has a new, updated style

Border types are available in the Toolbar via BordersBorder line type:

Default Cell Borders

Check out this live demo to see all the border types you can now use in SpreadSheet.

You can refer to the documentation for more details on how the new border-rendering mode works and how to configure SpreadSheet to apply borders correctly.

Updated API

This release introduces several API improvements that make it easier to configure the SpreadSheet table, run calculations in code, and control how custom formulas are rendered. Below is a short overview of the new capabilities:

  • tableConfig property – gives you direct access to the SpreadSheet table configuration. Now, you can adjust how the table looks and behaves by defining custom CSS, row height, column resizing, etc. See the snippet.
  • calculate(math, page) method – allows you to apply formulas and compute their values programmatically. See the snippet.
  • $mathTemplate method – defines how a formula result is visually rendered in a cell. It works alongside registerMathMethod, which specifies the internal value returned by the formula and used in all further calculations. See the snippet.

Rich Text Editor Updates

Drag-and-drop for Images

Rich Text Editor now supports dragging and dropping images in the content area. Users can place images exactly where they need them without using the Toolbar, Menubar, or context menu. This new capability speeds up image-heavy content editing by making it easier to move and position visual elements.

Drag and Drop in Rich text Editor

Live demo >>

Inserting Text as Markdown

Previously, Rich Text Editor processed the paste operation in the following way: any pasted text was automatically converted to Markdown. In some use cases this led to unexpected results when users wanted to add plain text to the editor or when the pasted content contained Markdown syntax that the editor does not fully support (e.g. some nested structures).

Now, Rich Text Editor pastes content as plain text by default. If you need to insert Markdown, you can use the new Paste from Markdown option in the Menubar or context menu, which lets you explicitly add text as Markdown when needed.

Drag and Drop in Rich text Editor

Live demo >>

Inline Images

Users can now add images to Rich Text Editor even when no upload endpoint is provided. Previously, a valid URL was required, otherwise, attempting to add an image through the Toolbar or Menubar resulted in an error. With this update, the upload URL becomes fully optional.

Now, when no upload value is provided, the editor automatically inserts images inline by encoding them as base64. This means that image insertion works out of the box, and needs no extra setup.

This improvement makes Rich Text Editor more convenient to use in workflows that are designed to operate without dedicated file storage. See this snippet for an example of inline image insertion.

API: insertValue Method

The Rich Text Editor API was upgraded with an insertValue() method that allows adding values at the current cursor position. Unlike the setValue(), which replaces the entire content, the new method lets you update specific parts of the content without resetting the full editor value.

The method supports HTML (default), Markdown, plain text, and raw formats.

const md = "**Inserted** markdown content";
$$("editor").insertValue(md, "markdown");

Here’s an example snippet demonstrating the method in action.

Other Updates

Check out the What’s New page for a detailed breakdown of all recent Webix updates and optimizations. To get the latest version of the library, upgrade via npm, the Client Area, or use the button below. Have questions or ideas? Join the discussion on our forum.

Download Webix 11.4