Version 22.0 Release Note
Summary
- AdapTable 22 was released in March 2026 and supports AG Grid version 35.0
- It contains many enhancements notably to the Adaptable User Interface
AdapTable 22.0 is a major version release.
The release contains a number of user-requested enhancements and improvements, primarily to:
- AdapTable's User Interface through the introduction of tailwind and css layers
- Layouts which offer improved support for Extended Layouts and Pivot Result Columns
- Action Columns can display Action Commands for frequent row based actions
- AdapTable React which contains 3 new custom hooks
Breaking Change
- There are a few significant Breaking Changes in AdapTable Version 22
- AdapTable types are now imported from a single location
- The name of the root css file has changed from
base.csstoindex.css - A few CSS variables have been added (and many more have been removed)
- AdapTable objects in Initial State now require a
Nameproperty (which AdapTable autogenerates if missing) - The
CellAlignmentproperty has been moved into the Style object (and out of FormatColumn)
Importing AdapTable Types
-
All AdapTable types are now imported from a single location (this was previously 2 separate locations)
Caution
- The file location itself varies, based on which AdapTable framework version is being used
- Each framework version requires different objects to be imported, so please read the relevant integration notes
| Adaptable Variant | File location | Docs |
|---|---|---|
| Vanilla (TypeScript) | @adaptabletools/adaptable | AdapTable Vanilla Integration |
| React | @adaptabletools/adaptable-react-aggrid | AdapTable React Installation |
| Angular | @adaptabletools/adaptable-angular-aggrid | AdapTable Angular Integration |
| Vue | @adaptabletools/adaptable-vue-aggrid | AdapTable Vue Integration |
Angular Version
- The minimum Angular Version now supported is 18
Object Name Property
-
All AdapTable objects stored in Initial Adaptable State now contain a mandatory
Nameproperty -
This allows developers easily to uniquely identify each object created (e.g. Format Column, or Alert etc.)
Hint
- AdapTable's Upgrade Helper will automatically autogenerate a value for the
Nameproperty if one is missing - If required, these can then be adjusted by run-time users in the relevant UI wizard
Note
- Objects like Layouts which already have a
Nameproperty have been left unchanged - Other objects, e.g. Calculated Columns, which have a
FriendlyNameproperty have also not been changed
- AdapTable's Upgrade Helper will automatically autogenerate a value for the
Layout Changes
-
The Layout Editor has been enhanced so its easier to identify and update Column properties
-
The order of (the dynamically created) Pivot Result Columns can now be stored in AdapTable State
-
3 new functions added to Layout API to set, clone and fetch Extended Layouts
-
A new only aggregation has been added, which will display in Grouped Rows
Other Changes
-
Action Column Commands are now available in Action Columns; these are buttons designed to make it very straightforward to display Add or Edit Row Forms or to delete rows
-
Column Filtering performance has been substantially improved
-
Alignment has been added to the Adaptable Style object (was previously only in Format Column)
-
Containers can be provided using a function if required
-
New User Interface API functions to enable toggling visibility of AdapTable UI (i.e. Dashboard, Tool Panel, Status Panels, Status Bar, Menus etc)
-
Highlighting has been extended to include Columns
-
New
manageGridDataGridApi function allows rows to be added, updated and deleted in a single transaction -
Custom Tracks added to the DevTools Chrome Profiler
React Hooks
- AdapTable 22.0 has added 3 custom React hooks for users of AdapTable React:
useAdaptableStateuseCurrentLayoutuseAdaptableApi
UI Changes
-
AdapTable 22.0 contains signficant User Interface related changes, including new css layers, using tailwind internally, and removing many redundant CSS Variables
-
These are designed to improve the look and feel, themability and extensibility of the Adaptable UI
New index.css file
- The key css class which you must import is
index.css(in place ofbase.cssas was required previously) - The location of the
index.cssfile varies, depending on which AdapTable framework version is being used:
| Adaptable Variant | Old file | New file |
|---|---|---|
| Vanilla | @adaptabletools/adaptable/base.css | @adaptabletools/adaptable/index.css |
| React | @adaptabletools/adaptable-react-aggrid/base.css | @adaptabletools/adaptable-react-aggrid/index.css |
| Angular | @adaptabletools/adaptable-angular-aggrid/base.css | @adaptabletools/adaptable-angular-aggrid/index.css |
| Vue | @adaptabletools/adaptable-vue-aggrid/base.css | @adaptabletools/adaptable-vue-aggrid/index.css |
Theme-related css files
- You no longer need to import
themes/light.cssas this is now included inindex.css - However, to use the dark theme, you still need to import
themes/dark.cssCaution
The index.css file is always required if even if you only intend to use the dark theme
CSS layers
-
The AdapTable CSS is now nested into a CSS layer called
adaptableFind Out More
For more insight on CSS layers read this MDN page
-
If you don't use CSS layers, nothing is required, as layers have a lower precedence to global-scoped CSS
-
This will help you more easily to override Adaptable styles (avoiding more nested/complex selectors)
Important
- If you do use CSS layers, please ensure to put adaptable before your app layer
- This will allow your application more easily to override Adaptable styles
@layer adaptable, app, theme;Note
Its now much easier to override default Adaptable styles, since the adaptable layer gives our css lower priority.
Previous to AdapTable 22, this rule didn't have the expected result:
.ab-Dialog__close-button { padding: 6px; }You had to make it stronger, either making the selector more complex:
.ab-Dialog__close-button.ab-Dialog__close-button { padding: 6px; }or by adding
!important:.ab-Dialog__close-button { padding: 6px !important; }Now the rule will work fine without anything else required.
Tailwind
-
Version 22 introduces a prefixed Tailwind build for our internal styling & classes
-
For non Tailwind users, nothing has changed or is different (as its purely for internal use)
-
For existing Tailwind users this won't clash with your current styles or changes made in your tailwind setup
Note
This is because we use the
twa:prefix, to avoid our class names colliding with other classes in your application
New CSS Variables
- 13 new CSS Variables have been added:
| Variable | Default |
|---|---|
--ab-cmp-file-droppable__transition | — |
--ab-cmp-floatingfilter-selected-options-text__font-weight | — |
--ab-cmp-simple-button__box-shadow | Material-style elevation shadow |
--ab-cmp-simple-button__hover-box-shadow | Elevated hover shadow |
--ab-cmp-simple-button__transition | box-shadow 0.28s cubic-bezier(0.4, 0, 0.2, 1) |
--ab-color-accent-foreground | #e2e2e2 |
--ab-color-primary-foreground | var(--ab-color-text-on-primary) |
--ab-color-shadow | rgb(0 0 0 / 0.2) |
--ab-focus-light__box-shadow | accentlight-based focus glow |
--ab-input-height | 36px |
--ab-popover-triangle-size | — |
--ab-shadow-md | Medium depth shadow |
--ab-shadow-sm | Small depth shadow |
CSS Changes to Spacing
- All CSS spacing is now derived from
--ab-base-space: 4pxusingcalc(). - As a result 8 CSS spacing variables have been removed and are replaced with a calculation:
| Old CSS Variable | Replacement | Resulting Value |
|---|---|---|
--ab-space-0 | 0px | |
--ab-space-1 | var(--ab-base-space) | 4px |
--ab-space-2 | calc(var(--ab-base-space) * 2) | 8px |
--ab-space-3 | calc(var(--ab-base-space) * 4) | 16px |
--ab-space-4 | calc(var(--ab-base-space) * 8) | 32px |
--ab-space-5 | calc(var(--ab-base-space) * 16) | 64px |
--ab-space-6 | calc(var(--ab-base-space) * 32) | 128px |
--ab-space-7 | calc(var(--ab-base-space) * 64) | 256px |
Hint
It is simple to provide the new spacing using calc. For example, what was previously:
.mybox {
padding: var(--ab-space-2);
margin: var(--ab-space-3);
}will now be replaced with:
.mybox {
padding: calc(var(--ab-base-space) * 2);
margin: calc(var(--ab-base-space) * 4);
}Removed CSS Variables
- Many CSS Variables (nearly 100) have been removed as they are no longer required
- All the CSS Variables for these components have been removed:
- Dialog
- HelpBox
- ErrorBox
- WarningBox
- CodeBlock
- ListGroup / ListGroupItem
- QuickFilter
- OnePageWizard
- ExpressionEditor
- ModuleSelector
- Misc
Deep Dive
Full list of CSS Variables which have been Removed
Change Log
| Key | Type | Description |
|---|---|---|
| AT-3271 | Bug | ✅ Column Filter Resize handles are gone |
| AT-3263 | Bug | ✅ Percent Column cannot handle negative values |
| AT-3261 | Enhancement | ✅ Provide 'only' as aggregation function for Layouts |
| AT-3253 | Task | ✅ Add new UserInterface section to Adaptable State |
| AT-3242 | Task | ✅ Consolidate how adaptable types are imported |
| AT-3241 | Enhancement | ✅ Allow containers to be provided dynamically |
| AT-3238 | Task | ✅ Add API support to toggle visibility of all AdapTable UI controls |
| AT-3232 | Enhancement | ✅ Extend highlighting to Columns |
| AT-3230 | Bug | ✅ Cannot edit Chart legend and title |
| AT-3229 | Enhancement | ✅ Improve keyboard navigation for Filters |
| AT-3225 | Bug | ✅ Issue when providing comma as decimal separator in Display Format |
| AT-3223 | Enhancement | ✅ Add Alignment to Adaptable Style object |
| AT-3217 | Enhancement | ✅ Add Name property to many Adaptable Objects |
| AT-3214 | Enhancement | ✅ Add GridApi method to manage multiple row changes in one transaction |
| AT-3210 | Enhancement | ✅ Store order of Pivot Result Columns in Layout |
| AT-3209 | Enhancement | ✅ Refactor Layout Editor |
| AT-3204 | Enhancement | ✅ Add functions to clone, share and set Extended Layouts |
| AT-3198 | Study | ✅ Improve Filtering performance |
| AT-3196 | Enhancement | ✅ Add `useAdaptableApi` hook to AdapTable React |
| AT-3195 | Enhancement | ✅ Add `useCurrentLayout` hook to AdapTable React |
| AT-3176 | Bug | ✅ ag-Grid-SelectionColumn [MISSING] appears when Row Grouping with row selection |
| AT-3174 | Task | ✅ Upgrade to Angular v18.x |
| AT-3173 | Task | ✅ Upgrade to AG Grid 35.0 |
| AT-3169 | Enhancement | ✅ Dont display 'Add Note' Context Menu Item if more than one cell selected |
| AT-3167 | Enhancement | ✅ Visually Export also Pinned Columns, Cell Classes & Custom Header Styles |
| AT-3148 | Bug | ✅ Export of grouped columns with colId different than field fails |
| AT-3143 | Task | ✅ AdapTable UI: enhance, simplify and make more extendable |
| AT-3124 | Task | ✅ Add custom tracks in DevTools Chrome Profiler |
| AT-2841 | Task | ✅ Add "Command Buttons" in Action Columns |
| AT-2745 | Enhancement | ✅ Add `useAdaptableState` hook to AdapTable React |