A New Generation of JavaScript Controls

Deliver next-generation HTML5 applications with Wijmo 5, a collection of true JavaScript controls that doesn't make compromises to support legacy browsers. With touch-first design and full Angular support, these highly performant, lightweight controls will blow you away with their power and flexibility.

Download Free Trial (v 5.20161.154)

Already purchased Wijmo? Download it here.

What is Wijmo 5?

Wijmo 5 is a new generation of JavaScript controls. We decided it was time to launch an HTML5/JavaScript product taking full advantage of the latest and greatest technologies, and no longer make compromises in order to support legacy browsers.

“With Wijmo’s extensibility model, the Microsoft Dynamics team was able to quickly customize and incorporate Wijmo 5 controls into our new release.”

—Param Kahlon, General Manager, Microsoft Dynamics CRM Engineering

Read more about Microsoft Dynamics’ use of Wijmo 5 >>

Introducing Wijmo 5

What’s Included

DataGrid

Why Wijmo 5?

Touch-First, Mobile-First

Wijmo 5 was designed with mobile browser support built in from the start. Responsive layouts and touch support were major factors in the design and implementation of every Wijmo 5 control.

Touch-First, Mobile-First

First Class Angular 1 and 2 Support

First Class Angular 1 and 2 Support

Wijmo’s Explorer Fully Supports the Angular 2 Beta. Read more.

AngularJS is one of the most popular and powerful JavaScript application frameworks today. With the development of Angular 2, it continues to set the direction of the next Web. For this reason, we ship and maintain AngularJS directives for all of our controls, and use it in most of our samples. Of course, you can also use Wijmo with other frameworks. We provide official support for KnockoutJS and will consider others in the future.

True JavaScript Controls

The ECMAScript 5 standard adds support for property getters and setters. This may seem like a small change, but it makes a huge difference. It has given us the opportunity to create true JavaScript controls. For example, instead of writing control.value(control.value() + 1) to increment the value of a property, now you can write control.value++.

We wanted to provide a familiar experience for .NET developers migrating to HTML5. For this reason we have also created ICollectionView in JavaScript. All of the Wijmo 5 controls can be bound to CollectionView, giving developers a very easy migration path from the .NET platform.

True JavaScript Controls

Built on TypeScript

Built on TypeScript

Large-scale, client and server side applications are possible with Wijmo 5. We built on TypeScript for a better coding experience, and to give an object-oriented, C#-like feel to working with Wijmo 5. Full support for TypeScript means that you’ll have Intellisense and design-time error checking, making your work easier. Of course, we want to be flexible for you, so if you prefer JavaScript, you can work in Wijmo 5 in its JavaScript form.

Highly Performant and Lightweight

With Wijmo 5 we had an opportunity to completely rethink and rewrite our controls. We have chosen to target modern browsers and this has enabled us to create the fastest and most lightweight controls in the market. Every control is optimized for size and speed. Plus, Wijmo 5 has no dependencies on any external libraries. It does not require jQuery, jQueryUI, or anything else. Create applications that load faster and are easier to deploy!

Highly Performant and Lightweight

Flexible API

Flexible API

It’s in the name! You may remember our famous FlexGrid from any number of platforms, even as far back as VB. We are bringing our “Flex” model and FlexGrid to JavaScript. FlexGrid became incredibly popular because it has a simple and yet very flexible API. The concept is to develop a simple control that has many extensibility points so that developers can extend and enhance it as they need. This is what makes FlexGrid and FlexChart so flexible and powerful.

Demos

wijmo-explorer

Explorer

Shows how to use all the controls in Wijmo 5, as well as the infrastructure shared by all the controls.

wijmo-flexgrid

FlexGrid 101

Shows how to perform common tasks with FlexGrid, our fast and flexible data-bound grid control.

wijmo-flexchart

FlexChart 101

Shows how to perform common tasks with FlexChart, our beautiful and easy-to-use chart control.

wijmo-input

Input 101

Shows how to perform common tasks with all the Input controls in Wijmo 5.

wijmo-gauge

Gauge 101

Shows how to get started with LinearGauge and RadialGauge, our smart and flexible gauge controls.

wijmo-flexpie

FlexPie 101

Shows how to get started with FlexPie, our flexible pie chart control.

wijmo-collectionview

CollectionView 101

Shows how to get started with CollectionView, our .NET-like class that uses regular JavaScript arrays as data sources.

 

Explore even more detailed samples in the Wijmo 5 Sample Explorer.

Launch Sample Explorer

 

What’s New

What’s New in Build 154

What’s New in Build 151:

  • Wijmo Angular 2 components adapted to Beta.15. Learn more about our Angular 2 support
  • More than 20 samples ported to Angular 2.
  • Added Flyout sample that shows how to implement flyout menus on grid columns.
  • Added DragDropTouch sample that shows how to improve touch support in mobile devices, including drag/drop operations like column dragging as well as resizing.
  • Added OlapModal sample to show how to use PivotPanel in a modal dialog.
  • Added FlexGrid CellFactory sample that shows how to override the CellFactory in FlexGrid for custom rendering.
  • Added Chart support in FlexSheet (as a part of ExcelBook sample).
  • Added a wijmo.olap.PivotEngine.totalsBeforeData property that determines whether totals and grand totals should be displayed before or after the data they summarize.
  • Optimized horizontal scrolling on the FlexGrid (especially noticeable in IE, with large numbers of columns).
  • Added an ODataCollectionView.load method to re-fetch the data from the server. (TFS 139722)
  • Added CollectionView.sourceCollectionChanging and CollectionView.sourceCollectionChanged events.
  • Added support for deleting the content of multiple cells on the FlexSheet. (TFS 139728)
  • Added support for exporting borders in xlsx export. (TFS 149656, 147911)
  • Added a ‘wj-header-alt’ class to alternating cell headers (to avoid interference with existing CSS using ‘wj-alt’ class, which is applied only to scrollable cells).
  • Improved keyboard/focus handling in Popup control (TFS 148651)
  • Improved the FlexGridFilter value filters to behave more like Excel (TFS 133354) The values shown for a column include only items that are not excluded by other filters. For example, if you filter a list by ‘name’ and that results in two items being shown, other field filters will only show the values of those two items.
  • Added new settings to AllowResizing enum to allow resizing rows and columns by dragging the edges of scrollable (non-header) cells. This is especially useful when headers are hidden (see headersVisibility). The updated settings are export enum AllowResizing { None, Columns, Rows, Both, ColumnsAllCells, RowsAllCells, BothAllCells }
  • Improved the adding/removing/changing sheet operations of sheets collection for FlexSheet control.

Read more about the Build 151 Release

What’s New in Build 138:

  • Added wijmo.angular2.* modules (Beta version), allowing developers to use Wijmo controls in Angular 2 applications markup. Angular 2 Explorer | Angular 2 Info
  • Added a wijmo.olap module that provides Excel-like pivot tables and charts to Wijmo. (Wijmo Enterprise only) OLAP 101 Sample | OLAP Blog Series
  • Added 288 Material Design themes and Material Design sample. Material Design | Material Design Blog
  • Added a wijmo.chart.animation module with the ChartAnimation main class that provides animations for the FlexChart, FlexPie and FinancialChart controls. The FlexChartAnimation sample demonstrates module’s features. Chart Animation Sample
  • Added ChartGestures to the wijmo.chart.interaction module. The class adds touch zoom and panning functionality to the FlexChart control. The FlexChartZoom sample demonstrates usage of the class. Chart Zoom Sample
  • Added FlexChartBase.exportToImage method that allows exporting charts to PNG, JPEG, and SVG formats. Chart Export Sample
  • Added Axis.labelPadding property that controls padding of axis labels.
  • Added FlexSheetExplorer and FlexSheet 101 samples. FlexSheet Explorer | FlexSheet 101
  • Added a wijmo.pdf module, with the PdfDocument main class that provides client side functionality for creating files in PDF format. The module is based on a modified version of the PDFKit library (http://pdfkit.org/) with a footprint minified up to 375Kb.
  • Added wijmo.grid.pdf module which is an extension of the wijmo.pdf and wijmo.grid modules and provides functionality for exporting FlexGrid to PDF format. PDF Export Sample
  • Added a PrintDocument class to the wijmo module. This class allows you to create documents for printing, which in modern browsers includes the option to export to PDF. PrintDocument Sample
  • Modified FlexGridFilter module to clear value filters when all possible values are selected.
  • Added a FlexGrid.preserveSelectedState property to control whether the grid should preserve the selected state of rows when the data is refreshed.
  • Added a FlexGrid.preserveOutlineState property to control whether the grid should preserve the collapsed/expanded state of group rows when the data is refreshed.
  • Added a Tooltip.showAtMouse property that causes the tooltip position to be computed based on the mouse position rather than on the target element.
  • Made FlexGrid “stickyHeaders” visible to the mouse, so users can interact with columns (sort/move/resize/filter) while in sticky mode.

Read more about the Build 138 Release

What’s New in Build 117:

  • Added Angular 2 Explorer sample with components for core Wijmo controls. The sample uses Beta.1 version of Angular 2. Angular 2 Explorer | Angular 2 blog
  • Added a wijmo.input.DropDown.dropDownCssClass property to make it easier to style the drop-down elements of the controls (this applies to all controls that extend DropDown, including ComboBox, MultiSelect, InputDate, InputTime, etc). MultiColumn DropDowns sample | MultiColumn DropDown blog
  • Added a wijmo.grid.Column.dropDownCssClass property to make it easier to style the drop-down list used to edit cells in columns that have dataMaps.
  • Added a wijmo.collections.CollectionView.useStableSort property that causes the CollectionView class to use a stable sort algorithm which is 30 to 50% slower than the native sort but maintains the relative order of records with equal keys.
  • Added a new InputDateTime control to enter/edit date and time values using a single control (as opposed to using an InputDate and an InputTime). InputDateTime sample | InputDateTime blog
  • Added a new FlexGrid.imeEnabled property to support IME modes while the grid is not in edit mode. This property benefits sites and applications in Japanese, Chinese, Korean and other languages that require IME support. IME Support blog
  • Improved FlexGrid.focus() implementation to prevent the browser from scrolling the grid’s hostElement into view when the grid gets the focus.
  • Improved allowAddNew to work better with childItemsPath.
  • Improved IE9 polyfill to support drag/drop in modal dialogs (TFS 140812)
  • wijmo.xlsx added support for several new functions: Column, Columns, COUNTA, COUNTBLANK, COUNTIF, COUNTIFS, DATE, DATEDIF, DCOUNT, HLOOKUP, HOUR, INDEX, MOD, RANK, RATE, ROUNDDOWN, ROUNDUP, ROW, ROWS, SUBTOTAL, SUMIF, SUMIFS, TIME, TODAY
  • wijmo.xlsx added support for importing shared formulas.
  • wijmo.xlsx improved performance.
  • wijmo.grid.sheet added support for user-provided custom functions, see the FlexSheet.addCustomFunction method.
  • wijmo.grid.sheet added FlexSheet.unknownFunction event that allows to process non-supported functions found in cell expressions.
  • wijmo.grid.sheet added Sheet.itemsSource property that allows to change the items source for data bound sheets.

Read more about Build 117 Release

What’s New in Build 109:

  • Improved Globalize to support formatting of fiscal years and quarters with the following format specifiers:
    • ‘EEEE’: government fiscal year
    • ‘eeee’: corporations fiscal year
    • ‘U’: government fiscal quarter
    • ‘u’: corporations fiscal quarter

    The conversion from calendar to fiscal date is culture-dependent. If you are not using the appropriate culture file (and don’t want to), then you can specify the conversion factor by setting the wijmo.culture.Globalize.calendar.fiscalYearOffset variable to an array containing two integers that represent the offset (in months) of the start of the fiscal year for government and for the private sector.

    For example, the Japanese culture uses a three month offset for the government’s fiscal year and no offset for the private sector: wijmo.culture.Globalize.calendar.fiscalYearOffsets = [3, 0];

  • Added support for Japanese characters (IME, Katakana, Hiragana) in InputMask control.
  • Added automatic label rotation for category x-axis. The labels are rotated to avoid overlapping if axis.labelAngle is not specified.
  • Improved CollectionView.trackChanges to allow tracking of changes made to items that are not the current edit item. The most common scenario is pasting blocks of data into a FlexGrid.
  • Improved FlexGrid.childItemsPath property to accept arrays of strings in case items at different levels use different property names for their child items.
  • Changed the default value of the InputTime.step property to 15 (which seems to be the most common/useful setting). This causes the control to display the drop-down button by default; to remove the button, set the step property to null.
  • Added support for opening FlexGrid.dataMap dropdowns using the keyboard (F4, alt+up/down, like WinForms and WPF/Excel) (TFS 124408)
  • Improved the Control.dispose method to remove all Wijmo event listeners from the control being disposed (dispose also removes all HTML event listeners added with the Control.addEventListener method).
  • Added a DropDown.autoExpandSelection property that determines whether input controls should automatically select whole words/numbers when clicked. This applies to all controls that derive from DropDown, and makes it easier to edit dates, times, colors, etc.
  • Added a ComboBox.headerPath property that allows decoupling the values shown in the combo’s input element from the values shown in the drop-down list.
  • Added five new glyphs to wijmo.css:
    • wj-glyph-step-forward
    • wj-glyph-step-backward
    • wj-glyph-file
    • wj-glyph-calendar
    • wj-glyph-clock
  • The FlexGridXlsxConverter class adds support for row headers export. The behavior is controlled by the IFlexGridXlsxExportOptions.includeRowHeaders property.
  • Improved InputMask handling of delete key with masks that contain numbers in the template (e.g. “99-55-9999”, TFS 136087).
  • Added FlexGrid.selectedRows and selectedItems properties. Both can be used to get a list with the currently selected rows or their associated data items. When the selectionMode property is set to ListBox, they can also be used to set the selected rows or data items.
  • Refactored wijmo.grid.filter.FlexGrid filter by removing the OData-specific getODataFilterDefinition method and replacing it with a call to the collection view’s updateFilterDefinition method; which if present updates the filter definition used on the server-side. This refactoring allows other CollectionView implementations (such as BreezeCollectionView) to support server-side filtering.
  • Improved BreezeCollectionView sample to show server-side filtering (TFS 129832).
  • Added a FlexGrid.showAlternatingRows property to allow disabling alternate row styling without changing any CSS rules.
  • Added a FlexGrid.updatedView that fires when the grid finishes creating/updating the cell elements for the current view (e.g. after binding, refreshing, resizing, scrolling, etc.)
  • Used IntelliSpell to spell-check all the documentation.

Read more about Build 109 Release

What’s New in Build 102:

  • Added wijmo.xlsx module that provides client-side functionality for exporting and importing to/from Excel xlsx file. The ExcelImportExport sample is updated with examples demonstrating its usage.
  • Added wijmo.grid.xlsx module, which is an extension to the wijmo.xlsx module, that provides client-side functionality for exporting and importing FlexGrid to/from Excel xlsx file. The ExcelImportExport sample is updated to use this module.
  • Added wijmo.grid.sheet module, which is an extension to the wijmo.grid and wijmo.grid.xlsx modules. It implements the FlexSheet control that provides an Excel-like functionality. The ExcelBook sample is updated to use this module.
  • New FinancialChart overlays: Bollinger Bands & Moving Average Envelopes.
  • New FinancialChart indicators: Average True Range, Relative Strength Index, Commodity Channel Index, Williams %R, MACD/MACD Histogram, Stochastic Oscillator.
  • New Fibonacci Extensions for FinancialChart: Fans, Arcs, Time zones.
  • Added AngularJS PdfExport sample that implements client-side export of a FlexGrid control to PDF format.
  • Added AngularJS FlexChartAnimation sample. The sample shows chart animation when loading and updating chart data.
  • Added AngularJS FlexChartZoom sample. The sample demonstrates chart interaction using touch gestures or mouse.
  • Added PureJS AggregateSeries sample for FlexChart. The sample shows data aggregation based on selected data range.
  • New RangeSelector.seamless property allows seamless transition between selector handles.
  • New appearance of RangeSelector handles simplifies dragging at smaller ranges.
  • Improved wijmo.grid.filter.FlexGridFilter to allow filtering with merged headers.
  • Improved auto-generated column headers. (we now capitalize first letter, break up camel-case binding strings, so the header for a column bound to the ‘productName’ property becomes ‘Product Name’ be default).
  • Optimized wijmo.closest method to use ‘matches’ method instead of ‘querySelectorAll’.
  • Improved InputNumber control behavior on mobile devices.
  • Added a FlexGrid.stickyHeaders property that keeps column header cells in view even when the top of the grid scrolls off view.
  • Improved CollectionView change tracking to ignore items that are added and subsequently removed in the same session.
  • Improved Globalize to support formatting of date quarters with the ‘q’ or ‘Q’ format specifiers (e.g. format(someDate, ‘yyyy “Q”q’) => ‘2014 Q4’).

Read more about Build 102 Release

What’s New in Build 90:

  • Added a wijmo.odata.ODataVirtualCollectionView class that loads data on demand. See the VirtualData sample for details.
  • ODataCollectionView.filterDefinition property is applied to filter on the server even when filterOnServer is set to false. This allows applications to apply server and client-side filtering to the same collection.
  • Added FlexGrid.pastingCell/pastedCell events. These events fire while the grid is pasting data into individual cells. Previously, the grid would fire editing events in these situations, but that led to some ambiguities that affected the implementation of custom editors.
  • Added support for hexadecimal formatting/parsing; use format ‘xn’ or ‘Xn’ (TFS 131809)
  • Made AutoComplete control honor the “isEditable” property (inherited from ComboBox, TFS 81936)
  • Added a wijmo.grid.CellFactory.disposeCell method to allow better resource cleanup when using custom cell factories.
  • Improved Angular FlexGrid.CellEdit template to use the character that was typed when initiating the edits (as the built-in editors do).
  • Made FlexGrid.cellFactory property get/set.
  • Added a wijmo.grid.DataMap.isEditable property to allow users to enter data that is not on the DataMap (mapped items become non-exclusive options).
  • wj-menu-item directive now supports AngularJS interpolation expressions and directives inside it, and can be used in conjunction with ng-repeat/ng-if directives.
  • Data-bound Menu controls now support wj-item-template directive that allows to define an arbitrary menu item content.
  • ng-class AngularJS directive is now supported on the wj-flex-grid-column and wj-flex-grid-cell-template directives.

Read more about Build 90 Release

What’s New in Build 84:

New FlexGrid features: showMarquee and showSelectedHeaders

FlexChart scaling

The itemValidator property added to Calendar and InputDate

Gauge control with added a thumbSize property.

  • Added a FlexGrid.showMarquee property that determines whether the grid should display an Excel-style marquee around the current selection. The marquee may be styled using the “wj-marquee” class selector. Article: Highlight Cell Selections in FlexGrid
  • Added a FlexGrid.showSelectedHeaders property that determines whether the grid should add a “wj-state-multi-selected” class selector to row and/or column header elements; these can be used in CSS to highlight header cells that correspond to the current selection.
  • Added a new ‘clip’ parameter to the FlexGrid.getMergedRange method; if true (the default), the method clips the merged range to the current view range.
  • Added Calendar.itemValidator and InputDate.itemValidator properties to enable preventing certain days from being selected. Article: Customize and Edit Dates and Times with Wijmo Calendar, InputDate and InputTime
  • Added a Calendar.formatItem event to complement the Calendar.itemFormatter property.
  • Added a new ‘wj-state-focused’ class to controls that contains the focus. This class is toggled automatically to reflect the control’s focus state and can be used in CSS selectors to add focus-related styles to parts of focused controls, such as gauge cursors, chart series, and grid ranges. Article: Apply Special Formatting to Focused Controls
  • Added Angular attributes for chart series axisX and axisY (TFS 122055).
  • Added wijmo.input.DropDown.isDroppedDownChanging event to allow for customization of the drop-down before it is shown.
  • Added wijmo.grid.filter.ValueFiler.uniqueValues property to specify the list of values to be shown on the list, which is more efficient than building the list from the data and works on collections that are filtered on the server.
  • Improved features and performance of Globalize.formatDate and parseDate methods.
  • Added scaling specifiers to Globalization.formatNumber and parseFloat. For example, ‘n0,’ divides the value by one thousand, ‘n0,,’ by one million, and ‘n0,,,’ by one billion. The scaling specifiers are especially useful in charts based on large values so the axis display scaled values which are easier to read and take up less space. Article: Break up Data Clusters in a Chart With a Logarithmic Scale
  • Added a Gauge.thumbSize property that enables displaying a ‘thumb’ element to show the current value at the end of the ‘pointer’ range. This applies to linear and radial gauges.
  • Added mouse wheel support to editable Gauges.
  • Added support for 24 new cultures.

Read more about Build 84 Release

What’s New in Build 70:

  • Added wijmo.chart.finance extension module, contains FinancialChart control. The module is a part of Wijmo Enterprise only.
  • Added StockChart. The sample shows various features of FinancialChart control. StockChart Application
  • Added FinancialChartExplorer sample. The sample shows available financial chart types. FinancialChart Explorer
  • Added FinancialChartIntro. The sample in an introduction to FinancialChart control. FinancialChart 101
  • Added wijmo.chart.finance.analytics module, contains Fibonacci tool.
  • Added ExcelBook sample that implements FlexSheet control that provides Excel-like functionality. The implementation is based on the FlexGrid control. ExcelBook FlexSheet Sample
  • Added wijmo.chart.analytics extension module, containing a set of specialized series classes intended for creating of analytical charts using FlexChart and FinancialChart controls:
    • TrendLine (A calculation of simple linear or growth trend that fits diffrent fitType)
    • MovingAverage (A calculation by creating a series of averages of different subsets)
    • YFunctionSeries (A calculation of y by given function)
    • ParametricFunctionSeries (A calculation of x and y by given xFunc and yFunc)
  • Added wijmo.chart.annotation extension module, implements a possibility to add annotations of different types to FlexChart and FinancialChart controls:
    • AnnotationLayer (A layer that contains a collection of annotations of different types)
    • Annotations: Circle, Ellipse, Image, Line, Polygon, Rectangle, Square, Text
  • Added AxisScrollBar sample. The sample demonstrates axis scroll bars that allow to scroll through and change scale of displayed data. Axis Scrollbar
  • Added FlexChartAnalytics. The sample shows extended chart functionality from wijmo.chart.analytics module. FlexChart Analytics
  • Added FlexChartAnnotation. The sample demonstrates annotations created with wijmo.chart.annotation module. FlexChart Annotation
  • Added a new wijmo.input.MultiSelect control (allows picking multiple items from a drop-down). MultiSelect Control
  • Added a new wijmo.input.Popup control (shows arbitrary elements as popups/popovers/dialogs). Popup Control
  • Improved label generation for time and category axes.
  • Added support of custom data label rendering(DataLabel.rendering event).
  • Added connecting lines for data labels(DataLabel.connectingLine property).
  • Added DataLabel.offset property to specifies offset from date point to the corresponding label.
  • Added Axis.labelAlign property to control alignment of axis labels.
  • Axis properties min, max, actualMin, actualMax support Date objects for time-based data source.
  • Added property SeriesBase.altStyle to specify alternative style for data series.
  • Added Position.Auto option that allows to automatically set chart legend position depending on control’s size.
  • Added a Menu.owner property for use in shared context menus.
  • Added filterChanging and filterChanged events to the FlexGridFilter class.
  • Improved FlexGridFilter to ignore invalid condition filters such as “contains(”)” or “beginswith(”)”.
  • Optimized ODataCollectionView to skip schema/version query in some situations.
  • Prevent browser from trying to scroll the whole grid into view when it gets focus.
  • Added Control.gotFocus and lostFocus events.
  • Added wheel support to Input controls.

What’s New in Build 63:

  • Added a wijmo.odata module with an ODataCollectionView class that extends the CollectionView class to load and update data exposed as OData services. OData Sample
  • Added WjValidationError Angular directive to support validation (HTML5 or Angular forms) based on arbitrary Angular expressions. Validation Sample | Validation Blog
  • Added wijmo.grid.detail extension to add row details to FlexGrid controls. RowDetails Sample
  • Added a wijmo.httpRequest method to perform Ajax requests without dependencies.
  • Added a ValueFilter.maxValues property to limit the number of unique items to display in the value filter list.
  • Added WjItemTemplate directive to support ListBox item templates with arbitrary HTML markup (including Angular bindings and directives). Input 101 Sample
  • Prevent browser from trying to scroll the whole grid into view when it gets focus.
  • First input element in FlexGrid edit cell template now automatically gains focus after editing has started.
  • Added support for binding to array properties (e.g. ‘customer.balance[0]’).
  • Improved FlexGrid numeric editor to right-align and show the full precision of values being edited (like MS-Excel).
  • Added InputMask.rawValue property to get/set the value of the control without mask literals and prompt characters.

What’s New in Build 51:

  • Improved scrolling performance in IE (200x in some cases)
  • Added wijmo.setText method to set or clear the content of HTML elements as efficiently as possible.
  • Added FlexGridFilter.filterDefinitions property to serialize filters to/from JSON.
  • Added ListBox.formatItem event (same semantics as FlexGrid.formatItem)
  • Added support for Excel shortcuts: ctrl+A = select all, shift+Enter: select up.
  • Added two new glyphs: .wj-glyph-plus and .wj-glyph-minus.
  • Improved FlexGrid cell templates for Angular performance.
  • Improved CollectionView grouping and sorting performance.
  • wj-tooltip Angular directive now supports interpolated values.
  • Added disposeAll static method to the Control class to make it easier to dispose of controls when their host elements are removed from the DOM.
  • Added add/removeEventListener methods to the Control class to make it easier to remove event listeners when the control is disposed.

What’s New in Build 48:

  • Added a Control.disabled property (maps to disabled attribute of the host element)
  • Added class names to facilitate custom styling of column headers:
    • wj-sort-asc (column is sorted in ascending order)
    • wj-sort-desc (column is sorted in descending order)
    • wj-filter-on (column has an active filter)
    • wj-filter-off (column has an inactive filter)
  • Improved FlexGrid cell templates for Angular performance.
  • Changed FlexGrid mouse handler to sort/select on left button only (reserving the right button for context menus)
  • Improved grid filter to support value and condition filtering.
  • Added a Menu.isButton property that turns menus into split-buttons.
  • Input and Gauge directives can bind using ng-model directive now, gaining the features specific to ng-model this way.
  • Added WjFlexGridCellTemplate.cell-overflow attribute that allows to change cells’ style.overflow property declaratively.
  • Optimized grid scrolling performance (especially visible in IE).

What’s New in Build 42:

  • Optimized grid scrolling performance.
  • Added markers to indicate the position of rows and columns being dragged.
  • Improved behavior of drop-down grid cells on mobile devices.
  • Added select-all functionality when the user clicks the top-left fixed cell.
  • Changed row and column resize cursors to ‘col-resize’ and ‘row-resize.’
  • Added a FlexGrid.deferResizing property to defer row and column resizing until the user releases the mouse.
  • Added a Column.sortMemberPath property to sort columns based on an alternate binding.
  • Exposed wijmo.showPopup and hidePopup utility methods for positioning popup elements.
  • Added support for multi-item selection in the ListBox control. Set the checkedMemberPath property to the name of a Boolean property in the itemsSource collection and the ListBox adds checkboxes to each item, and fires the itemChecked event when the current item is checked or unchecked.
  • Deprecated and removed the wijmo.isTouchDevice method. The method actually tested the browser, not the device, so it was useless.
  • Added a LineMarker class to the wijmo.chart module that provides FlexChart with a continuous data point information with optional directional lines as mouse pointer moves over a chart surface.
  • Added a wijmo.chart.interaction extension module with a RangeSelector class that allows the user to choose the range of data to display on the specified FlexChart.
  • Added WjFlexGridCellTemplate directive for Angular that allows to definea custom template for any type of a FlexGrid cell (column and row headers, editing cell, and so on).
  • Cell templates now support element level directives.
  • Wijmo child directives for Angular (like WjFlexGridColumn or WjFlexChartSeries),when used in conjunction with ng-repeat directive, now support full-functional synchronization with ng-repeat’s source array, including items order.

What’s New in Build 39:

  • Added FlexGrid.sortRowIndex property. This property determines the index of the row in the column headers panel that displays the sort icon and can be clicked to sort the column. By default, it is set to null, causing the last row in the panel to be the ‘sort row’.
  • Raise editing events when pasting data into the FlexGrid (this allows users to prevent overwriting specific cells when pasting).
  • Improved column filters to work with complex properties (e.g. ‘state.name’, ‘state.pop’).
  • Exposed wijmo.Binding class used to work with complex properties.
  • New wijmo.grid.grouppanel module with the GroupPanel control that adds a drag&drop grouping functionality to the FlexGrid control.
  • Improved the CollectionView sorting logic to place nulls at the bottom of the list, regardless of sort direction (Excel behavior).
  • Allow initialization of ObservableArray in constructor.
  • Improved formatting of values in GroupRow node cells.
  • Improved the grouping logic of paged CollectionViews to avoid splitting groups between pages and to include all items in aggregates (as opposed to items in the current page which was the previous behavior).
  • Added a CollectionView.sortConverter property. The property specifies a function that can be used to customize the sorting behavior of the CollectionView.
  • Improved FlexGrid sorting to take dataMaps into account. Now the grid sorts based on display value (as opposed to raw data values which was the previous behavior).
  • Expanded grid keyboard handling: now ctrl+home and ctrl+end navigate to the first and last cells on the grid (as opposed to home/end, which navigate to the first and last cells on the current row).
  • Added Gauge.origin property. This property determines the starting point used for painting the pointer range. Setting it to null causes the gauge to use the min property or zero if the range extends from negative to positive values.
  • Clamp InputNumber value between min/max as the user types the value in.
  • Improved behavior of input controls on touch devices.

What’s New in Build 32:

  • Added support of chart data labels(new properties FlexChart.dataLabel and
  • FlexPie.dataLabel).
  • Added FlexGrid.getCellBoundingRect and GridPanel.getCellBoundingRect methods
  • to retrieve the bounds of a given cell.
  • Added FlexGrid.formatItem event to allow multiple subscribers to customize cells
  • (itemFormatter allows only one).
  • Added FlexGrid.AutoSizeMode property to customize auto-sizing behavior, as
  • well as new events autoSizingColumn, autoSizedColumn, autoSizingRow, autoSizedRow.
  • Improved DropDown control behavior in clipping containers.
  • Added two new glyphs: .wj-glyph-check and .wj-glyph-filter
  • Child Angular directives for Wijmo (like wj-flex-grid-column) can now be defined using
  • the ng-repeat directive.

What’s New in Build 27:

  • Fixed problem in chart series x-binding.

What’s New in Build 26:

  • Added initialization options to wijmo.grid.Column constructor
  • Changed default color in InputColor and ColorPicker to white
  • Added support of logarithmic axes(new Axis logBase property).

What’s New in Build 25:

  • Added frozenRows and frozenColumns properties to the FlexGrid. Frozen cells are non-scrollable (like header cells) but can be selected and edited (like regular cells).
  • Added Axis properties itemsSource, binding, itemFormatter. The properties provide axis label customization.
  • Added Axis overlappingLabels property that controls appearance overlapped labels on axis. By default the overlapped labels are hidden.
  • Added event Axis.rangeChanged.

What’s New in Build 24:

  • Added InputColor and ColorPicker controls to wijmo.input module.
  • Added toHsb, toHsl, fromHsb, fromHsl methods to Color class.
  • Improved Globalize.formatNumber to honor the ‘d’ format as per the .NET spec.
    (e.g. Globalize.formatNumber(-1234, ‘D6’) == ‘-001234’)
  • Added chart axis minor ticks and grid lines
    (‘minorTickMarks’, ‘minorGrid’ props in Axis class).
  • Added wijmo.chart.Axis.origin property
    This property allows to specify axis position inside plot area.
  • Added ‘initialized’ event and ‘isInitialized’ boolean property to Angular directives
    and Knockout Bindings. The property gets a true value and event is triggered after
    the directive has finished initialization of the control with values defined in
    its attributes and child directives.

What’s New in Build 23:

  • Removed dependency on jQuery
  • FlexGrid:
    • Added wijmo.grid.Column.showDropDown property
  • New samples:
    • Column Picker, Custom Headers, AngularEvents, more…

What’s New in Build 22:

  • KnockoutJS support
  • InputMask control
  • FlexGrid:
    • Clipboard support
    • Column: mask, required, inputType properties
  • FlexChart:
    • Multi-axis support
    • Label angle
  • InputDate, InputTime:
    • Added mask property
  • On-line help:
    • Collapse/expand topics
    • Show/hide inherited members
  • New samples
  • Shopping Cart, Dashboard, more…