Changelog
cx@26.7.5
Fixes
Cxnow survives deep re-entrant synchronous update bursts. Large renders that write to the store while rendering (e.g. a several-hundred-page report) could re-render the root hundreds of times in one synchronous burst, exceeding React’s nested-update limit and crashing the render. Updates are now issued synchronously at first and escalate to microtasks once a burst grows deep — letting React’s nested-update counter reset — and finally to timeouts, so even a store that never converges degrades to a responsive page instead of a frozen tab. Every store notification is tracked individually, sobatchUpdatesAndNotifycallbacks fire only after the DOM reflects the change — including updates that land while a previous one is still converging. On by default. If you suspect it causes trouble, opt out at startup withdisableSyncUpdateCoalescing()and please report the issue so it can be fixed. The sync burst threshold can be tuned withenableSyncUpdateCoalescing(limit)(#1310)Cxerror handling now usesgetDerivedStateFromError: while an error is dispatched to theonErrorcallback the failed subtree renders nothing, and rendering resumes once the callback repairs the state. Instances withoutonErrorrethrow, so errors keep propagating to the nearest ancestor boundary- Added the missing
arrowIconprop toTreeNodeConfig, so setting the expand/collapse glyph from JSX no longer raises a type error (#1309)
cx@26.7.0
Features
- Group sorting can now target aggregates and keys declaratively: grouping levels accept
sortField/sortDirectionor asortersarray, resolved against the group’s key fields, aggregate aliases and$name. Added asortGroupsflag toGridthat reorders groups when a column whose field is a group key or aggregate is sorted (#1303) - Pressing
Escduring a drag & drop operation now cancels it — nothing is dropped, drop zones reset, and the drag clone is removed.onDragEndnow receives aDragEndEventwith acancelledflag so handlers can tell a cancel apart from a drop (#1301)
Fixes
- Reserved right padding on
NumberFieldfor the clear button whenshowClearis enabled, so the value no longer sits underneath the clear icon ExposedValueViewnow deletes the exposed record by its slot key (#1302)
cx@26.6.0
Features
- Added a
resetRowNumbersflag toGridgrouping levels. When set on a grouping level (which must render a caption), the automaticcxe-grid-row-numbercolumn restarts numbering from 1 at the beginning of each group instead of counting continuously across the grid - Added
validateOptionExistsflag toLookupField. When enabled andoptionsis an array, the field reports a validation error (invalidOptionText) if the stored selection is not present in the options list. Useful for surfacing stale ids preserved across sessions (#1271)
cx@26.5.1
Features
- Added a
daybeforedate format that renders a date shifted back by one calendar day, using the same pattern argument asdatetime— handy for displaying the exclusive end of a date range as an inclusive value. Also added thedayBeforedate utility (#1290) - Added a
quarterdate format that renders the calendar quarter of a date from a string-template pattern ({q},{yyyy},{yy}), with anexclusiveflag for displaying the end of a half-open range. Also added thedateQuarterdate utility - Added a
hideClippedLabelsoption to chart axes that drops a first/last label, and its tick, when it would be clipped at the chart edge — enabled by default onTimeAxis(#1291) DateTimePickerdate and time wheels now scroll endlessly, so picking values across large ranges no longer hits hard list boundaries
Fixes
Grid’sonCreateFiltercallback may now returnnullto apply no filter- Fixed the
ValidationGroupvisitedflag not propagating to nested fields when a field’s own bound data was unchanged (#1276) - Added the missing SCSS import for the
RangeMarkerchart component — its styles were not being generated - Added missing
@usedeclarations inRangeMarker.scssforbesm,include, andvariables
cx@26.4.4
Fixes
- Restored text ellipsis on single-selection
LookupFieldwhen the selected value overflows the field width. Baseline alignment with adjacent fields and buttons is preserved (#1287)
cx@26.4.3
Fixes
- Added missing
FragmentandJSXnamespace exports tojsx-dev-runtimeso<>...</>syntax and intrinsic element typings work under"jsx": "react-jsxdev"
cx@26.4.2
Features
- Added
alignArrowoption toDropdownthat shifts the dropdown so the arrow tip lines up with the target point. Enabled by default onContextMenu, so right-click menus with arrows point at the cursor. - Added
arrowOffsetoption toDropdownfor overriding the theme’s arrow offset per instance.
cx@26.4.1
Fixes
- Fixed
innerTextTrimto remove newline whitespace without inserting extra spaces - Bumped
route-parser-tsdependency to^1.1.2 - Exposed
package.jsonvia theexportsmap
cx@26.4.0
Fixes
-
Added missing SCSS imports for
SwimlaneandSwimlaneschart components — styles were not being generated -
Added missing
@usedeclarations inSwimlane.scssandSwimlanes.scssforbesm,include, andvariables -
Added dark mode chart colors (swimlane, gridlines, axes, shapes, ranges, legend) to the docs theme
-
Added
topmod toLabelsTopLayoutthat removes top padding from labels in the first row, useful inside Windows and dialogs
cx@26.3.9
Fixes
- Replaced wheel scrollbar-hiding hack (
width: calc(100% + 20px)) withscrollbar-width: none - Fixed wheel clip overflow by using
width: fit-contentandbox-sizing: content-box
Features
- Added dedicated CSS variables for switch styling (
--cx-switch-axis-background-color,--cx-switch-range-background-color,--cx-switch-handle-background-color,--cx-switch-handle-border-color,--cx-switch-handle-box-shadow) - Added CSS variables for DateTimePicker (
--cx-datetimepicker-background-color,--cx-datetimepicker-border-width,--cx-datetimepicker-padding) - Added CSS variables for wheel styling (
--cx-wheel-border-width,--cx-wheel-border-color,--cx-wheel-option-padding-x,--cx-wheel-option-padding-y)
cx@26.3.7
Fixes
- Fixed infinite grid not displaying fetched records when
emptyTextis set - Fixed
onLoadingErrorcallback receiving arguments in wrong order - Fixed false-positive sort change detection on initial render of infinite grids with sort bindings
cx@26.3.5
Fixes
- Fixed left icon positioning for fields with asymmetric horizontal and vertical padding
cx@26.3.4
Fixes
- Fixed
AccessorChaintype to restore Go-to-Definition and Rename Symbol support in IDEs createFunctionalComponentnow preserves generic type parameters- Fixed some
Windowinstances not updating - Added missing types for
Listsort fields - Tweaked scss files to work with manifest files
cx@26.3.1
Breaking Changes
- Migrated all SCSS files from
@importto@use/@forward(modern Sass modules) - All theme packages have been restructured to use the new module system
- Projects must update their SCSS entry points — see Breaking Changes for migration instructions
Features
- New
cx-theme-variablestheme based entirely on CSS custom properties, enabling runtime theme switching. Try it out in the Theme Editor. - Three-layer theming with
@forward...with()for clean variable configuration through app, theme, and framework layers - CSS variable-aware utility functions (
cx-lighten,cx-darken,cx-calc)
cx@26.2.1
Fixes
- Relaxed
LookupFieldConfigtype constraints to improve subclass extensibility - Changed generic type defaults from
unknowntoanyfor better compatibility with existing code - Added
LookupFieldUniversalConfigexport for extending LookupField in subclasses
cx@26.1.0
Features
- Complete TypeScript rewrite with full type safety
- New typed model system with
createModel - Improved JSX syntax -
<cx>wrapper no longer required - Modern build tooling support (Vite, esbuild, SWC)
- Split HTML and React elements for better type inference
See Breaking Changes for migration details.
cx@25.1.0
Features
- Date only (2025-01-01) strings are now parsed as local time, instead of UTC.
encodeDatefunction can be used to format date objects as date only strings, i.e. 2025-01-01. This function can be set asencodingfor theDateField,MonthField,Calendar, andMonthPickercomponents.MonthFieldandMonthPickernow include a flaginclusiveTowhich allows month ranges to end with the last day of the month, instead of the first day of the next month.
cx@24.6.2
Features
- Add SnapPointFinder convertX and convertY functions
cx@24.6.1
Fixes
- Fix onValidate arguments for multiple lookups
cx@24.5.2
Features
- New formats:
capitalizeandtitleCase.
cx@24.5.1
Features
Window.padoption. See Breaking changes.
cx@24.4.9
Features
- Swimlane component
cx@24.4.8
Features
- Set caption style and class even when caption is defined as items/children.
Fixes
- Fix grid grouping text property description.
cx@24.4.7
Features
- Improve selection of dropzone based on distance to the center.
- Allow grid column caption to be specified as false.
- Support dynamic chart height based on the number of categories.
Fixes
- Avoid rendering shape prop.
- Fix grid rendering when column caption is defined via items only.
cx@24.4.6
Features
- Allow grid column caption to be specified as false.
- Support dynamic chart height based on the number of categories.
Fixes
- Fix grid rendering when column caption is defined via items only.
cx@24.4.5
Features
- Introduce new feature for grid: merging cells.
cx@24.4.4
Features
- Introducing the new
zeropadformat.
cx@24.4.3
Fixes
- Corrected distortion in pie-chart shapes caused by mathematical errors.
- Resolved grid resize issues by implementing element existence checks prior to resizing.
cx@24.4.2
Fixes
- Addressed a bug where RangeMarkers were not functioning correctly when used alongside SWC.
cx@24.4.1
Features
- Enhanced dropInsertionIndex positioning within the grid
- Introduced CultureScope widget
- Introduced RangeMarker widget
- Added functionality for adjusting pie chart gaps
Fixes
- Types for ColumnGraph and LineGraph
cx@24.3.3
Features
- Swimlanes widget
- Allow aggregates via aggregateAlias inside Grid
Fixes
- Fix getCursorPos to properly resolve position within iframes in Firefox
- Fix drag and drop within iframes
cx@24.3.0
Features
- Support specifying
borderRadiusonPieChartslices.
cx@24.2.0
Features
- Documentation updates and additions
- Currency formatting features
- Field configurations and enhancements
- Localization examples and updates
- Row reordering, drag-and-drop for CodeSnippet
- Configuration props for data views
- Copy button tooltip and display enhancements
cx@24.1.3
Features
- Support tooltips and additional configuration on field icons
cx@24.1.0
Features
- Allow using the
fmtfunction inside expressions and string templates. For example, this template works:{[fmt({amount}, "currency;${currency};0;2")]} - Add number formatting flags, i.e.
n;0;2;+ca;-+to show sign for positive number,cfor compact number formatting,afor accounting mode (brackets for negative numbers) - Add
Culture.setNumberCultureandCulture.setDateTimeCulturemethods which enable using different cultures for numbers and date formatting.
cx@23.4.1
Features
- Allow Validator to render children, i.e. ValidationError
cx@23.4.0
Fixes
- Expose SimpleSelection
cx@23.3.1
Fixes
- Allow up to eight typed parameters in triggers and computables
- Allow entering negative decimal numbers in NumberFields with reactOn=“change”
cx@23.3.0
Fixes
- Fix
quoteStrhandling of special characters (used for multiline string templates)
cx@23.2.1
Features
- Allow Grid to render children, i.e. loading mask
Fixes
- Make AccessorChain<T> assignable to AccessorChain<any>
cx@23.2.0
Features
- Dart Sass compatibility (see Breaking Changes)
- Dropping IE support
cx@22.11.3
Fixes
- Typing for
Dropdown.relatedElement - Typing for
List.keyField
cx@22.11.2
Features
- Add the
constrainproperty to limit NumberField inputs
Fixes
- Typing for Url.setBaseFromScript
- Typing for the
bindfunction - Typing for the LineGraph
- Propagate colSpan to grid column footers
cx@22.11.1
Features
- Add the
dayDataproperty for calendar day styling
Fixes
- Add typing for LookupField bindings
- Improve typing for openContextMenu
cx@22.10.3
Features
- Add LookupField onCreateVisibleOptionsFilter callback docs and example
cx@22.10.2
Fixes
- Properly sort by the second column if the values in the first column are null
cx@22.10.1
Features
- Add the onTrackMappedRecords callback for easier manipulation of sorted and filtered grid data
- Document onGetGrouping
Fixes
- Recalculate the widget on store change to correctly propagate the new store to widget’s children
cx@22.10.0
Fixes
- Prevent late autofocus for touch devices
cx@22.9.0
Fixes
- Add text ellipsis to all form fields
- Fix problems with datetime field dropdowns
cx@22.8.2
Fixes
- Various typing improvements
cx@22.8.0
Fixes
- Allow onContextMenu on all HTML elements in TypeScript
- Properly handle context menus within windows and dropdowns
- Allow get/set props in TypeScript
- Allow accessor chains for the Sandbox.storage prop
- Orient vertical Sliders to be bottom up, instead of top to bottom with the invert flag to control the behavior
cx@22.7.1
Fixes
- Render overlay backdrop before the body and allow propagation of
mousedownevent to allow integration of other libraries (i.e. prosemirror) which catch events on the document level.
cx@22.7.0
Features
- TreeAdapter now supports preserving expanded state through a flag
restoreExpandedNodesOnLoad - Added an example for stateful tree grids
cx@22.6.3
Features
- TreeAdapter now supports the flag
hideRootNodes - Added the function
findTreePathtocx/data.
Fixes
- Typings for MenuItem
- Typings for PieSlice
- Skip focusing disabled LookupField options
- Typings for Window
cx@22.6.0
Fixes
- Fix for onCellEdited firing twice
- Fix for grid cell editing not working in the first column
- Allow accessor chains for
valueandtextprops in lookup fields
cx@22.5.3
Features
- Allow tooltips in grid headers
cx@22.5.2
Fixes
- Fix MenuItem typing
cx@22.5.1
Fixes
- Fix typings for the
Repeaterwidget
cx@22.5.0
Fixes
- Fix bugs related to
startWithMondayinCalendarwidgets - Typing improvements
- Fix detection of touch events inside modal windows