Change log
Grid
Release history for Bryntum Grid
Version 4.0.6, 2020-12-29
FEATURES / ENHANCEMENTS
- The Grid can now remove filtered out records from its row selection using the new
selectionMode.deselectFilteredOutRecords
flag (Fixed #2112) - ActionColumn is now usable when its Grid is readOnly, and its actions are optionally disabled based on the
new
disableIfGridReadOnly
config value (defaults to false).
BUG FIXES
- Fixed #1894 - Click on chapter works only first time
- Fixed #1990 - Grid subclasses can now configure its store (e.g.,
modelClass
) in itsstatic get configurable()
- Fixed #2039 - ordinalSuffix yields incorrect result for numbers ending with 11, 12, and 13
- Fixed #2107 - Excel export fails to export while using groupSummary
- Fixed #2115 - DurationField should respect useAbbreviation config
- Fixed #2155 - Cell tooltip shows up empty sometimes
- Fixed #2156 - ActionColumn crashes if Grid#hideHeaders is true
- Fixed #2161 - Docs should handle URI encoding
- Fixed #2168 - Grid title header misstyled like a column header
- Fixed #2169 - Properties missing type in docs
Version 4.0.5, 2020-12-15
FEATURES / ENHANCEMENTS
- Added specific CSS class for ColumnPicker submenu -
b-column-picker-menu
(Fixed #2057)
API CHANGES
- ContextMenu features now accept a
menu
config to merge into their default configuration for their Menus. ThemenuConfig
property is deprecated in keeping with slimming our API footprint.
BUG FIXES
- Fixed #2049 - Allow overriding fields for filter feature on column basis
- Fixed #2553 - Column.resizeToFitContent has poor performance with multiple columns
Version 4.0.4, 2020-12-09
FEATURES / ENHANCEMENTS
- A new config
discardPortals
on the React wrapper, that controls the behaviour of cell renderers using React components. Set tofalse
(default) to enhance performance. Set totrue
to limit memory consumption. - Added new Vue Export to Excel demo
- Added new React TreeGrid demo
- Custom sorting functions defined on columns (see
Column#sortable
) can now be applied when programmatically sorting the store by that columns field, see the newSort#prioritizeColumns
config (Fixed #1303) - Custom filtering functions defined on columns (see
Column#filterable
) can now be applied when programmatically filtering the store by that columns field, see the newFilter#prioritizeColumns
andFilterBar#prioritizeColumns
configs (Fixed #1925) - DurationField now offers
min
/max
configs (Fixed #1997)
API CHANGES
- CellEdit#doAddNewAtEnd method was made public by mistake, it is now private.
BUG FIXES
- Fixed #1754 - Click on Action Column items not triggering anything when cellEdit feature is disabled
- Fixed #1812 - Make tables look better in docs
- Fixed #1857 - Subgrid cannot be expanded after applying collapsed state
- Fixed #1869 - Very low performance of React cell renderers
- Fixed #1896 - Revise column state attributes
- Fixed #1902 - Combo filter should use exact match for string values
- Fixed #1917 - Field error tooltip contains wrong information
- Fixed #1922 - Make public some API used by
destroy
- Fixed #1928 - Aligned Popups can lose their configurations on drag
- Fixed #1936 - ENTER key on last row cell should add a new row if
addNewAtEnd
is enabled - Fixed #1946 - Multi sort UI is broken for Duration column (any column with
sortable
function) - Fixed #1957 - Date filter is applied incorrectly when restoring from state
- Fixed #1988 - Docs left panel shrinks when filtered
- Fixed #2026 - Row reorder broken when header menu is disabled
Version 4.0.3, 2020-11-17
FEATURES / ENHANCEMENTS
- A new config,
collapseToHeader
on theGroupSummary
feature makes the headers row of a collapsed group contain the summary data for the group. Be aware that the group title is limited in width in a collapsed group header with this set so that it does not overflow into summary cells. (Fixed #1355) - Added supported for reverting model changes (Fixed #1874)
BUG FIXES
- Fixed #1719 - No scrollbar if all data filtered
- Fixed #1811 - Number field
changeOnSpin
flag doesn't work as expected - Fixed #1831 - Null entries should not swap positions when sorting
- Fixed #1836 - Combo's picker loses anchoring after typing.
- Fixed #1850 - Column sortable function not called when sorting from context menu
- Fixed #1858 - Pressing space on a CheckColumn should not trigger scroll
- Fixed #1878 - initClass method should be public
- Fixed #1884 - Load mask not hidden after loading fails
Version 4.0.2, 2020-11-04
BUG FIXES
- Fixed #1350 - Excel export turns numbers into text
- Fixed #1511 - DatePicker selects wrong month
- Fixed #1563 - Editor class fires "complete" event twice
Version 4.0.1, 2020-11-03
FEATURES / ENHANCEMENTS
- Improved API Docs with a new fiddle panel for live demos, you can now update the code of any live demo and instantly see the result. Also added TOC to guides and a class hierarchy.
- Columns can now supply a custom
filterField
to control which widget handles the filtering. Makes it possible to have list based filtering, where you pick a value from a Combo to filter (Fixed #1772)
API CHANGES
- Store#query and Store#find no longer calls the supplied filtering method for special group header records.
- Renamed and documented events
columnShow
/columnHide
for Grid.data.ColumnStore.
BUG FIXES
- Fixed #124 - Pressed button border overlaps badge
- Fixed #913 - Docs: Navigating back after visiting bad link has no effect
- Fixed #405 - Crash when typing *foo* into grid column filter
- Fixed #890 - Tooltip / container with text content should not use display flex
- Fixed #1322 - Extra rows appearing when stop grouping
- Fixed #1323 - Not possible to escape out of invalid or empty number field editor
- Fixed #1408 - Promise rejection when an example tooltip load is aborted
- Fixed #1672 - Right click a grid cell when another window is active on Mac and then removing the record fails with exception
- Fixed #1705 - Wrong region size on export
- Fixed #1706 - Toolbar should not be exported
- Fixed #1712 - Skip non-exportable columns in export dialog window
- Fixed #1777 - List always focuses first item when clicking unfocused list
- Fixed #1782 - Incorrect group size displayed
Version 4.0.0, 2020-10-19
FEATURES / ENHANCEMENTS
- [BREAKING] Dropped Support for Edge 18 and older. Our Edge <=18 fixes are still in place and active, but we will not be adding more fixes. Existing fixes will be removed in a later version.
- Context menu features refactoring: simplified naming by removing the word "Context" in feature names and in event names, introduced named objects for menu items, split context menu features by area of responsibility. Please check out the upgrade guide for details (Fixed #128).
- ContextMenu feature has been split into CellMenu and HeaderMenu (Fixed #8440).
- Added "Customize context menus" and "Replace context menus" guides (Fixed #1312).
- Added a new Grid Feature
StickyCells
. When using highly structured cell content, this allows row content identified by a selector to be pinned to the grid top while the row is scrolling off the top but is still visible:features : { stickyCells : { contentSelector : '.myClass' } }
- Field widgets now support a
hint
(andhintHtml
) config to display non-interactive text overlaying the input element. - The RowReorder feature was updated to allow dragging multiple rows at once (Fixed #1402).
- Added a
precision
config to Model fields of typenumber
, to control the number of digits they hold. Input is rounded to the specified precision. Makes it easier to match up with a backend using floating numbers of a certain precision (Fixed #1320). - Grid now extends
Panel
instead ofContainer
. This allows you to easily add toolbars to it (Fixed #1417) - Added XSS protection functions:
StringHelper.encodeHtml
andStringHelper.xss
. - Added
grid.lite.umd.js
module that does not includePromise
polyfill. This module is primarily intended to be used with Angular to preventzone.js
polyfills overwrite. - Added experimental support for Salesforce Locking Service (Fixed #359). The distributed bundle only supports modern browsers (no IE11 or non-chromium based Edge), since Salesforce drops support for these in January 1st 2021 too.
- Added Lightning Web Component demo, see
examples/salesforce/src/lwc
API CHANGES
- [BREAKING] The
Core/adapter
directory has been removed. There are no Widget adapters. All Widget classes register themselves with theWidget
class, and theWidget
class is the source of Widgettype
mapping and Widget registration and lookup byid
. - [BREAKING] GridState now stores subGrid state in a new format so end users might observe their width/collapsed states not being restored.
- [BREAKING] The
Default
,Light
andDark
themes were renamed toClassic
,Classic-Light
andClassic-Dark
. This change highlights the fact that they are variations of the same theme, and that it is not the default theme (Stockholm is our default theme since version 2.0). - [DEPRECATED]
ContextMenu
feature was deprecated. Instead 2 new features were introduced:CellMenu
andHeaderMenu
- [DEPRECATED]
showRemoveRowInContextMenu
config was deprecated in favour ofCellMenu
configuration. - [DEPRECATED] Providing
cellMenuItems
andheaderMenuItems
column configs as an array was deprecated. It has to be a named object now. - [DEPRECATED] The
capitalizeFirsLetter()
andlowerCaseFirstLetter()
functions inStringHelper
was deprecated in favor ofcapitalize()
anduncapitalize()
. - [DEPRECATED] The
record
property of RowReorder events is now deprecated in favor ofrecords
since the feature now supports dragging multiple rows. - Model fields in derived classes are now merged with corresponding model fields (by name) in super classes. This allows
serialization and other attributes to be inherited when a derived class only wants to change the
defaultValue
or other attribute of the field. - The
dateFormat
config fortype='date'
model fields has been simplified toformat
. - Arrow down from column header now navigates to first fully visible cell in that column, instead of the previous behavior of opening the column menu
- Stores
json
accessor (which returns a JSON string) andtoJSON()
function (an array of objects) was both documented and made public. Useful if you need access to the data of all records to serialize yourself. Output oftoJSON()
can be directly plugged intostore.data
, and the output ofjson
can be consumed by setting the same property. - Widget reference moved from
reference
attribute todata-reference
. Change only affects CSS selectors, JS API remain intact. - The following previously deprecated members/classes where removed:
-
StateTrackingManager.getStoreById()
-Store.isVisible()
-Rectangle.round()
-InstancePlugin.pluggedInto
-Editor.allowInvalid
-FlagField
-Widget.visible
-startCellEdit
eventsgrid
param -cancelCellEdit
eventsgrid
param
BUG FIXES
- Fixed #963 - Double clicking other cell during async finalizeCellEdit causes crash
- Fixed #1268 - Exception when editing date cell
- Fixed #1324 - Grouping demo should use combo to pick colors
- Fixed #1325 - Crash after menu hidden
- Fixed #1400 - DateHelper typo
- Fixed #1405 - Crash when dragging row up to grid header
- Fixed #1414 - Checkbox tooltip is not localized in the demo
- Fixed #1425 - Strange Swedish date format
- Fixed #1479 - Examples thumbnails are missing
- Fixed #1484 - Step triggers not horizontally centered
- Fixed #1488 - b-masked CSS class still found after removing mask
- Fixed #1504 - Arrow down from column header should jump to first fully visible cell in that column
- Fixed #1512 - Typing text into inferred number data field in demos produce NaN
- Fixed #1514 - NumberColumn outputs 0 for null/undefined field value
- Fixed #1540 - Unquoted column.id in selectors
- Fixed #1544 - Classic-dark theme white background in example browser
- Fixed #1545 - Mini demo in example browser fails to load for classic themes in IE11
- Fixed #1548 - [ANGULAR] Investigate zone.js loading order and set it to Angular default
- Fixed #1600 - Down key in TextAreaField does not respect inline config
- Fixed #1637 - Number field triggers reset value
- Fixed #1645 - Angular example throws an error on expired trial version
- Fixed #1676 - Vuestic demo issues
- Fixed #1684 - MessageDialog yesButton missing from docs
Version 3.1.9, 2020-08-26
BUG FIXES
- Fixed #1424 - Date picker next button leads to wrong year
- Fixed 1352 - Filters removed on data load
Version 3.1.8, 2020-08-11
API CHANGES
- Mask
progress
andmaxProgress
are now public properties (Fixed #1060).
BUG FIXES
- Fixed #967 - ActionColumn icon is not centered
- Fixed #975 - STM doesn't update store changes properly
- Fixed #1244 - Initial export options are shown incorrectly in the export dialog
- Fixed #1301 - Prevent using filterBar and filter features together
Version 3.1.7, 2020-07-24
FEATURES/ENHANCEMENTS
- Added new exporter: MultiPageVertical. It fits content horizontally and then generates vertical pages to fit vertical content. (Fixed #1092)
BUG FIXES
- Fixed #953 - Load mask appearing on top of export progress
- Fixed #973 - Export feature does not respect left grid section width
- Fixed #1172 - Wrapper should not relay store events to the instance
- Fixed #1176 - Destroying scheduler on touchstart fails
- Fixed #1180 - Exported grid should end with the last row
- Fixed #1211 - Badge example in docs not working
- Fixed #1215 - PdfExport should not rely on loadMask of the grid
Version 3.1.6, 2020-07-10
FEATURES/ENHANCEMENTS
- Added Docker image of the PDF Export Server. See server README for details. (Fixed #905)
API CHANGES
- [DEPRECATED] To avoid risk of confusing the Grid instance with the calculation engine,
gridEngine
has been deprecated in favor ofgridInstance
in all framework wrappers (Angular, React, Vue). Fixed #776
BUG FIXES
- Fixed #842 - Column renderer should return a value to update cell content
- Fixed #881 - Tooltip is blinking in Firefox when hoverDelay is specified
- Fixed #884 - Slider crops its marker
- Fixed #907 - Error when combining Grid rowCheckboxSelection and summary feature
- Fixed #944 - ExportDialog should respect PdfExport feature configuration
- Fixed #964 - Sorting and filter parameters not URL encoded
- Fixed #1086 - Sort triggered after column resize
- Fixed #1100 - Widgets having show animation does not get the b-animating CSS class
- Fixed #1135 - Incorrect Sorting behaviour for Duration column
- Fixed #1137 - eventColor should not apply background to dashed eventStyle
Version 3.1.5, 2020-06-09
FEATURES/ENHANCEMENTS
- Added a new
beforeGridRowDropFinalize
event to RowReorderFeature to allow a single event to set validity (Fixed #808) - Removed React and Vue CDN demos in favor of existing framework examples (Fixed #840)
- Updated Font Awesome Free to v5.13.0
- ScrollManager class was made public, allowing control of how drag-scroll gestures behave (Fixed #870)
- Updated Vue Integration Guide (Fixed #672)
- Added
indentSize
config toGrid.column.TreeColumn
(Fixed #775) - Tooltip#beforeShow event now includes access to the event that triggered it to show (via
source.triggeredByEvent
) (Fixed #799)
API CHANGES
- To fix locale inheritance problems some Grid locale strings were moved from the
Grid
section to theGridBase
section in localization files. Any custom localizations for Grid should be updated accordingly. (Fixed #780) - Column renderers can now request a lower height than the configured
rowHeight
. To allow this, they are now called withsize : { height : null }
instead ofsize : { height : rowHeight }
. As before, set your desired height there. The largest requested height for a row will be used. If none is requested it will use the configured row height. - Removed not used localizations
GridBase.serverResponseLabel
,Tree.noTreeColumn
,Grid.featureNotFound
,Grid.invalidFeatureNameFormat
,ColumnStore.columnTypeNotFound
,TemplateColumn.noTemplate
,TemplateColumn.noFunction
- Renamed localization
PdfExport.Waiting for response from server...
toPdfExport.Waiting for response from server
BUG FIXES
- Fixed #653 - Grouped schedule grid corrupted after group collapse / expand
- Fixed #742 - Not persistable data change may initiate a commit with an empty object
- Fixed #780 - removeRow text missing
- Fixed #781 - Grouping breaks when removing last record in group
- Fixed #828 - Tree node with link does not cover cell fully
- Fixed #831 - Clicking parent node (with href set) expander should not trigger the link
- Fixed #844 - Drag drop does not finalize properly if mouse up happens above an iframe
- Fixed #854 - Allow renderers to set lower row height
- Fixed #861 - Crash if calling refreshColumn on a hidden column
- Fixed #885 - Page scrolls when expanding date picker with keyboard
Version 3.1.4, 2020-05-19
BUG FIXES
- Fixed #521 - Blank records added on stop grouping of filtered grid
- Fixed #761 - Tooltip does not show first time when loadingMsg is empty and loading remote content
- Fixed #769 - Popup is not aligned to target properly with constrainTo
- Fixed #777 - Show / hide filter bar is not working when after removing a column
- Fixed #782 - Crash after collapse all with empty tree
- Fixed #785 - Code editor not working reliably
Version 3.1.3, 2020-05-14
FEATURES/ENHANCEMENTS
- Added Vue.js and Vuetify.js integrated examples (Fixed #374)
- Added
triggerEvent
config toGrid.feature.CellEdit
(Fixed #496) - Added new
ActionColumn
component (Fixed #504) - Added new Vue demos
BUG FIXES
- Fixed #493 - Export file name is not configurable
- Fixed #581 - Example label text cannot be selected
- Fixed #594 - gridRowDrop reorder event fires before row has been moved
- Fixed #595 - Crash when double clicking example image in examples browser
- Fixed #596 - Font Awesome should be bound to font-weight 900
- Fixed #670 - Editor Sass syntax error
- Fixed #680 - Crash if collapsing parent node with left section collapsed
- Fixed #759 - Cell editor not aligned after window resizing
Version 3.1.2, 2020-04-17
FEATURES/ENHANCEMENTS
- The grid.module.js bundle is now lightly transpiled to ECMAScript 2015 using Babel to work with more browsers out of the box.
Version 3.1.1, 2020-03-27
FEATURES/ENHANCEMENTS
- Buttons now support having a link via the new
href
andtarget
config options. - parentIndex is now a public field of TreeNode (Fixed #358)
API CHANGES
- NumberField now reports
undefined
if the input field is empty. - ObjectHelper#setPath method became chainable and returns the passed object instance
BUG FIXES
- Fixed #030 - Region resize splitter problems on touch devices
- Fixed #330 - Id collision happens when you add or move records after filters are cleared
- Fixed #411 - Setting icon classes on TreeColumn doesn't work properly
- Fixed #420 - Fixed Store sort does not respect ascending flag
- Fixed #422 - Theme switching leaks elements and crashes if changing multiple times with slow network
- Fixed #434 - Cell tooltip not working reliably
- Fixed #437 - removeAll on chained store clears master store
- Fixed #439 - required attribute has no effect on NumberField
- Fixed #445 - React: Scheduler crashes when features object passed as prop
- Fixed #451 - collapseAll does not update selection bug
- Fixed #453 - NaN seen in grid group summary demo bug
Version 3.1.0, 2020-03-10
FEATURES/ENHANCEMENTS
- Added
httpVerbs
anduseRestMethods
to AjaxStore to be able to use GET, POST, PUT, DELETE verbs for Store crud actions (Fixed #387) - Font Awesome 5 Pro was replaced with Font Awesome 5 Free as the default icon font (MIT / SIL OFL license)
parentIndex
is now a public field of TreeNode (Fixed #358)CheckColumn
+ selection model now supports a check-all checkbox in the column header
BUG FIXES
- Fixed #340 - Crash when selecting row if checkbox column is hidden
- Fixed #341 - Crash when removing multiple rows fast
- Fixed #342 - Crash if groupsummary is enabled without grid being grouped #342
- Fixed #344 - Crash after Enter keydown in filter bar
- Fixed #379 - STM manager doesn't undo row reordering
- Fixed #401 - Filtering a large, sorted dataset, when scrolled to the end, throws an error
Version 3.0.4, 2020-02-24
FEATURES/ENHANCEMENTS
- Added new Angular 9 example that shows how to use Angular Component as grid cell renderer (Fixed #304)
BUG FIXES
- Fixed #293 - Multiselect setting not honored in check box column
- Fixed #305 - 'b-text' class is not applied for widget column with button config for zero value
- Fixed #306 - Wrong row selection on click after Grid loses focus
- Fixed #327 - Export generates empty pages
- Fixed #332 - Setting rowHeight to 0 crashes the grid
- Fixed #348 - Tooltip misaligned after clicking add in tasks demo
Version 3.0.3, 2020-02-13
FEATURES/ENHANCEMENTS
- Tab panel now supports hiding tabs (Fixed #78)
- ScrollManager now has a
startScrollDelay
and waits before scrolling is started when mouse is moved close to an edge of an element monitored by the ScrollManager (Fixed #252).
BUG FIXES
- Fixed #202 - Columns sub-menu does not scroll for many columns
- Fixed #228 - iPad vertical scroll not working
- Fixed #246 - Dragging splitter should cancel cell editing
Version 3.0.2, 2020-01-29
FEATURES/ENHANCEMENTS
- PDF export server was refactored. Removed websocket support until it is implemented on a client side.
Added logging. Added configuration file (see
app.config.js
) which can be overridden by CLI options. Multipage export performance was increased substantially (seemax-workers
config in server readme). (Fixed #112)
Version 3.0.1, 2020-01-16
FEATURES/ENHANCEMENTS
- Added to the documentation what editor types columns support (Fixed #55)
- PDF Export feature uses "Grid" as the default file name (Fixed #117)
- Store can now remove individual filters by filter id or Filter instance using
store.removeFilter
(Fixed #462)
API CHANGES
- To show async content in a tooltip, you can now either return a
Promise
from theTooltip#getHtml
method or you can now set aPromise
yielding a string as the value theTooltip#html
property. See the What's new guide in the docs or more information. - [DEPRECATED] Setting
Tooltip#html
to false to show loading message is deprecated. UseTooltip#showAsyncMessage
instead, see the What's new guide in the docs for more information.
BUG FIXES
- Fixed #2 - Not possible to enter 00:00 into time field
- Fixed #27 - Crash when clicking time picker forward
- Fixed #28 - Crash after changing locale in celledit demo
- Fixed #55 - Add to the documentation what editor types columns support
- Fixed #88 - Crash after reordering column in grouping demo
- Fixed #113 - Cannot right click demo header
- Fixed #122 - Showing async tooltips is broken
- Fixed #133 - Not possible to set activeTab in 'beforeshow' listener of Card layout
- Fixed #158 - Pasting code into demo code editor keeps styling/formatting from IDE
- Fixed #170 - Grid Ext JS demo broken online
- Fixed #171 - Grid Ext JS demo broken
- Fixed #189 - DOCS: Public configs should not link to private configs/classes
Version 3.0.0, 2019-12-20
FEATURES/ENHANCEMENTS
- New Ionic Themes demo which shows using and changing included themes. (Fixed #9394)
- Grids styling for its horizontally scrolling elements was updated with
overscroll-behaviour: contain auto
. This prevents accidental history navigation while scrolling horizontally using trackpads/on touch devices. - Grid
Column
s may be configured with afinalizeCellEdit
method which validates cell edits in that column. It must returntrue
orfalse
. It may also be anasync
function whose resolution yieldstrue
orfalse
. - Added support for exporting the Grid to PDF and PNG. It is showcased in the new
export
demo. The feature requires a special export server, which you can find in the examples/_shared/server folder. You will find more instructions in the README.md file in the new demo. (Fixed #6268) - Added
leadingZeroes
config option for NumberField (Fixed #7524) - Localization. Common localizable words and phrases may now be added to a common
Object
block of properties and will be accessible to all classes. - Added support for named listeners (Fixed #43)
API CHANGES
- [BREAKING] (for those who build from sources): "Common" package was renamed to "Core", so all our basic classes
should be imported from
lib/Core/
- [BREAKING] Model no longer considers
null
as a valid id on records. It is now handled the same way as if id was undefined, meaning that a generated id will be assigned instead. If you usenull
as id on a record in your code, this change might be breaking. We recommend to always supply an id for records from your backend, and there is a new setting onStore
to enforce that. Configuring Store withallowNoId: false
will make it throw if a record without id is loaded (Fixed #8570) - NumberField no longer uses native stepping with the arrow keys, instead it implements its own with configurable
behaviour. See the new
changeOnSpin
config. - DateHelpers default date format was made configurable (assign to DateHelper.defaultFormat) and changed from
YYYY-MM-DDTHH:mm:ss.SSSZ
toYYYY-MM-DDTHH:mm:ssZ
to better match client expectations.
BUG FIXES
- Fixed #9434 - Tooltips are broken on Android devices
- Fixed #14 - Record id 0 breaks Store#indexOf
- Fixed #24 - Inconsistent record 'changes' object after update
- Fixed #9212 - Adding FilePicker as widget for column
- Fixed #102 - Tree column not indented in exported Excel file
Version 2.3.0, 2019-11-05
FEATURES/ENHANCEMENTS
- ### NEW AND CHANGED WIDGETS
- Widget's tooltip configuration now uses a shared singleton Tooltip instance by default. Use
newInstance: true
if a new Tooltip instance is required for the widget (Fixed #7033) - Added a basic Splitter widget that allows resizing sibling elements/widgets in a flexbox layout (Fixed #9138)
- Combobox is now able to filter its store using remote filter requests as the user types. See
the
filterParamName
config. (Fixed #9256) - DatePicker panel now has month and year selection combos which appear on hover (Fixed #9259)
- TextField class now supports adding minlength, maxlength, tabindex attributes, as well as any other HTML attribute through the new 'inputAttributes' config (Fixed #9296)
- Widgets may now adopt a preexisting DOM node to use as their encapsulating
element
. This reduces DOM footprint when widgets are being placed inside existing applications, or when used inside UI frameworks which provide a DOM node. See theadopt
config option (Fixed #9414) Container
s now support removal and adding and inserting of child widgets. See the API docs forContainer
.Container
s can now get/set values from/to all nested widgets using the newvalues
property. Also addedContainer#isValid
to check validity of all nested fields.- Adding event listeners now accepts an
expires
option which is for how many milliseconds the event listener persists before it is removed. This is useful for capturing potential future events which may or may not happen. ### GRID AND FEATURES - A new thinner version of Grid called
GridBase
was added. It is a Grid without default features, allowing smaller custom builds using for example WebPack. See the newcustom-build
demo for a possible setup (Fixed #7883) - The Group features
groupRenderer
is now applied to all columns in a group header, allowing more control over the rendering (Fixed #8751) - Column filtering using the FilterBar feature can now be done using any field through the new
filterable.filterField
config (Fixed #8799) - Added new 'Paged Grid demo with php backend' that shows how to use a paged store for Grid with remote sorting and filtering (Fixed #9213)
- A new Column type: 'aggregate' has been added. When used in a Tree, it aggregates the value of that column's field from child nodes. (Fixed #9227)
- The CellEdit feature now allows a
beforeCellEditStart
to inject an input field into theeditor
property of the passededitorContext
to use the specified input field to edit the cell (Fixed #9281) - Grids checkbox selection now offers a mode
rowCheckboxSelection
where selection is only done when clicking on a checkbox (Fixed #9313) - Support for disabling features at runtime has been improved, all features except Tree can now be disabled at any time (Fixed #8187, #9353) ### DATA LAYER CHANGES
- Added support for paged stores, remote sorting and remote filtering (Fixed #4504)
- Stores can now be configured with
syncDataOnLoad: true
, which will make them apply the difference between a new dataset and its existing data rather than doing a full replace. Especially useful in scenarios wherestore.data
is bound to something that applies the entire dataset on changes, for example a React state. - Fields can be added/removed from a Model at runtime, using the new
Model.addField()
andModel.removeField()
functions (Fixed #9328) ColumnStore
can be configured withautoAddField : true
to automatically add the fields used by its columns to Grids store. ### ANGULAR/REACT/VUE- Added new Angular 7 and Angular 8 integration examples (Fixed #9069)
- Experimental: The React wrapper has been updated to support using React components (JSX) in cell renderers and as cell editors. Please check out the updated React demos to see how it works, and read up on it in the updated integration guide (Fixed #7334, Fixed #9043, Fixed #9244)
API CHANGES
- The behaviour of
Store#add()
in a tree store has been changed to take theparentId
of the records being added into consideration. Previously all nodes added this way was appended to root, but they can now be added to any parent in the tree. For examplestore.add({ name : 'New kid', parentId : 5 })
will add the new node to parent with id 5. To actually add to root, useparentId : null
(or even better, use the TreeNode api). Model.convertEmptyParentToLeaf
was changed to accept either a boolean or a config object, for control over if conversion happens on load or on CRUD or both (Fixed #8973)- ResizeHelper can be configured with
dynamicHandleSize : true
to automatically shrink virtual handles from their configured size towards 1 to enabled resizing elements that do no fit full handles. - The validation behaviour for
required
fields was slightly changed to not flag initially empty fields as invalid, they are instead flagged on blur or when checking validity. - [DEPRECATED]
InstancePlugin#pluggedInto
was deprecated in favour of already existingInstancePlugin#client
. - The
Grid#selectRow()
method now accepts a single, object parameter to describe the required´selection type and associated actions to avoid long, unwieldy method signatures. The previous signature will be recognized until version 3.0.
BUG FIXES
- Fixed #8280 - Chained Tree store API inconsistency
- Fixed #8846 - Exception from onStoreUpdateRecord with fullRowRefresh: false
- Fixed #8911 - AjaxStore syncing modifications returns field names in the JSON object
- Fixed #9018 - Hovering splitter should add hover styling to parallel splitters
- Fixed #9176 - Filterbar and group feature duplicate records
- Fixed #9191 - Reloading store when different
- Fixed #9235 - Summary feature should be disableable
- Fixed #9257 - Uncaught TypeError: Converting circular structure to JSON when comparing two records as fields
- Fixed #9271 - Tooltip listeners config not honored
- Fixed #9277 - Filter icon missing if sort is disabled
- Fixed #9332 - Readonly status reset after schedule click
- Fixed #9334 - Grid doesn't clear b-cell-dirty on grid.store.commit()
- Fixed #9352 - DateHelper wrong quarter calculation
- Fixed #9354 - Column header disappears on reordering
- Fixed #9356 - Combo should not mutate incoming value array
- Fixed #9357 - Splitter collapse/expand buttons misplaced
- Fixed #9371 - isMove in
add
event is not a boolean but always an object. Documentation corrected. - Fixed #9375 - Rendering broken with a cluster of really high rows and scrolling to bottom
- Fixed #9412 - Exception when the sole record in a grid is removed in a cancelCellEdit listener
- Fixed #9428 - Store#filter, contrary to the documented API, clears filters when passed a function.
- Fixed #9371 - isMove in
add
event is not a boolean but always an object. Documentation corrected. - Fixed #9404 - insertChild should trigger beforeAdd with records as array.
Version 2.2.5, 2019-09-13
FEATURES/ENHANCEMENTS
- New date format introduced called
d1
. It represents the first character of the day name, for example "W" from "Wednesday" (Fixed #9201)
BUG FIXES
- Fixed #9191 - Reloading store when different combination of groups expanded breaks grouping
- Fixed #9194 - DateHelper cannot parse date strings without separator
- Fixed #9200 - Crash if calling removeAll and there is no data initially
- Fixed #9208 - Scroller missing docs for Events / Delayable
- Fixed #9216 - DOCS: Nested configs look broken
Version 2.2.4, 2019-09-09
FEATURES/ENHANCEMENTS
- New demo showing a stock list with rapid data updates every 20ms (Fixed #9171)
- Store has a new config
useRawData
. By specifying it astrue
you guarantee the data loaded is valid as is, which bypasses duplicate id detection, default values and field processing. This in turn gives a nice performance boost when loading large datasets (about 30% faster initial rendering time on the bigdataset demo with 10,000 records) - Pressing space key in a grid column header now show the column menu (Fixed #8855)
- Added
contextMenuTriggerEvent
config for Grid to set event which triggers context menus (Fixed #8757) - Added
triggerEvent
config for ContextMenu to override Grids setting for which triggers context menu (Fixed #8757)
BUG FIXES
- Fixed #8669 - Mask loses alignment to Grid body element after scrolling
- Fixed #8797 - Records are not shown in the tree after clearing filters if they were added while the tree was filtered
- Fixed #8890 - DOCS: Store#indexOf returns -1
- Fixed #8891 - Combo should fire select event only per user action. The select event now has a
userAction
flag which is passed astrue
orfalse
. - Fixed #9137 - Previous scheduled event animation exit not canceled by initiating new animated event update.
- Fixed #9155 - SubGrid region size changes after column resizing
- Fixed #9158 - Crash when reloading store if a group is collapsed
- Fixed #9178 - Checkbox column is broken after a group is collapsed/expanded
Version 2.2.3, 2019-08-27
FEATURES/ENHANCEMENTS
- Date formats can now include arbitrary text wrapped in {}, for example
"h {o'clock}"
->"10 o'clock"
(Fixed #8612) - Combos
store
config now accepts a store config object (Fixed #8769) - Grids
columns
config now accepts a store config object (Fixed #8862) - Fields
readOnly
handling and styling was improved - Model
fields
field definitions can now specify that a field isreadOnly: true
API CHANGES
- Widgets
visible
setter was deprecated, usehidden
instead. To determine if a widget actually is visible, you can useisVisible
(Fixed #8820) store.isVisible
was deprecated, usestore.isAvailable
instead.
BUG FIXES
- Fixed #7736 - Text of selected item gets into the input in Combo with multiselect
- Fixed #7737 - Select input text and hit backspace removes selected items in Combo with multiselect
- Fixed #7739 - There is no place to type in Combo with multiselect
- Fixed #8351 - STYLING: Missing pressed / active state color
- Fixed #8439 - STYLING: Stockholm theme tab body html color
- Fixed #8444 - Panel#widgetMap should include tools
- Fixed #8521 - If one menu item has an icon all other menu items should align properly
- Fixed #8692 - View is not refreshed when record with existed Id is added
- Fixed #8734 - Online code editor duplicates panels on change
- Fixed #8812 - RowReorder feature should support indicating drop validity
- Fixed #8813 - Row reorder feature should highlight target parent node when reordering in a tree
- Fixed #8886 - beforesort event is not fired
- Fixed #8914 - Grid#collapseAll when scrolled to the bottom of the dataset breaks row rendering
- Fixed #9026 - RowReorder feature events should be public
- Fixed #9031 - "No rows to display" text overflows locked grid
- Fixed #9060 - STYLING: Wrong slider label color in Material theme
- Fixed #9063 - Code editor panel not scrollable with mouse
- Fixed #9106 - Moving a record within a tree store causes its descendant records to be registered as added.
- Fixed #9116 - DOCS: 'scrollable' property missing in Widget docs
Version 2.2.2, 2019-08-15
FEATURES/ENHANCEMENTS
- Added two new classes which wrap file input: FileField and FilePicker. FileField is a default field without extra styling. FilePicker is more advanced component which looks like a common button.
API CHANGES
- Adding a child record to a parent in a tree store now triggers the same events (
beforeAdd
,add
,change
) no matter which function is used (store.add()
,node.appendChild()
,node.insertChild()
). - [BREAKING] Stores
beforeRemoveChild
event was removed. Removing child records in a tree store now triggers same events as when removing records in a flat store (beforeRemove
,remove
,change
).
BUG FIXES
- Fixed #8336 - Switching locale repaints view multiple times
- Fixed #8794 - relations not initialized if the foreign id field uses a complex mapping as its dataSource
- Fixed #8896 - ScrollManager not working with touch devices
- Fixed #8912 - DateHelper.formatDelta doesn't round to hours
- Fixed #8940 - Scrollable.scrollIntoView with block : 'center' and highlight fails if the target is a Rectangle and cannot reach the center.
- Fixed #8945 - STYLING: Checkbox hover issue in Material theme
- Fixed #8963 - ES6 syntax in the eval block
- Fixed #8968 - Grid. Changed record Id it is not updated in DomDataStore
- Fixed #8970 - Vertical mode: Dragging elements vertically does not work reliably
- Fixed #8974 - Id should be unique in Tree store
- Fixed #8983 - childrenField does not work unless the store is configured with tree:true
- Fixed #9025 - isParent doesn't take convertEmptyParentToLeaf into account
- Fixed #9029 - React app in trial distribution should not throw when styles are missing
- Fixed #9037 - Document chained stores as the official way of sharing stores between widgets
- Fixed #9040 - Custom Toast styling
- Fixed #9044 - Make tree crud events consistent
Version 2.2.1, 2019-07-24
BUG FIXES
- Fixed #8836 - Destroying a popup from a child button fails with an exception
- Fixed #8883 - averageRowHeight not recalculated when a row set is rerendered
- Fixed #8895 - Scheduler events disappearing on scroll
- Fixed #8938 - Ionic demo not runnable online
Version 2.2.0, 2019-07-19
FEATURES / ENHANCEMENTS
- AjaxStore now supports a 'writeAllFields' config to send all fields when a modified record is committed (Fixed #8909)
- ButtonGroup now supports configuring
toggleGroup
andcolor
on a per group basis (Fixed #8833) - Popup now has a
modal
config (Fixed #8297) - DateField now supports configuring its
picker
(Fixed #8828)
API CHANGES
- Toggling a button in a
toggleGroup
now triggerstoggle
on all buttons in that group (Fixed #8834) - Docs changed to clarify that removing a child node from a tree triggers
beforeChildRemove
and notbeforeRemove
(Fixed #8571)
BUG FIXES
- Fixed #7872 - Row reordering needs a handle or gesture on touch
Version 2.1.3, 2019-07-04
FEATURES / ENHANCEMENTS
- Nodes rendered in a TreeColumn now support two new attributes
href
andtarget
to easily render links. - Common.widget.DatePicker was made public
BUG FIXES
- Fixed #8804 - Error / warnings in console of web components demo
- Fixed #8825 - Initial sorters applied too late in tree stores
- Fixed #8865 - Column headers duplicated when reordering
Version 2.1.2, 2019-06-27
FEATURES / ENHANCEMENTS
- Added a
pressedIcon
config to Button, to easily display another icon for pressed toggle buttons (Fixed #8781)
BUG FIXES
- Fixed #8482 - Using beginBatch/endBatch prevents related stores being updated
- Fixed #8562 - Datefield fails to parse input date when 'L' format is used in De, Nl and Ru locales
- Fixed #8699 - scrollEnd event is not fired properly on scrollable
- Fixed #8706 - Orphaned resize handles seen after mouse out of an event bar
- Fixed #8707 - Resizing column expands collapsed section
Version 2.1.1, 2019-06-14
BUG FIXES
- Fixed #8674 - Crash if disabling ColumnReorder on touch device
- Fixed #8676 - Filter feature performs double filtering
- Fixed #8486 - Crash when trying to revert focus to a Grid cell that no longer exists
Version 2.1.0, 2019-06-12
FEATURES / ENHANCEMENTS
- Added a new ButtonGroup container (Fixed #8013)
- Bumped built in FontAwesome to version 5.8.2
- Slider styling adjusted for Stockholm theme
- Tree parent cells styling changed to use bolder font
- Demos now have a built in code editor that allows you to edit their code (Chrome only) and CSS (Fixed #7210)
throttled
option added toEventHelper.on
. For rapidly repeating events (Such aswheel
orscroll
ormousemove
), this is the number of milliseconds to delay subsequent handler calls after first invocation which happens immediately.DateField
now has astep
config which is a time delta by which to increment and decrement the value when forward and back triggers in the field UI are clicked (Fixed #8081).- Grid cellEdit action is now preventable using
beforeCellEditStart
event (Fixed #8459) Button
now has amenu
config which specifies a menu to show when pressed. This may be an array of menu item configs, or a widget config. If a widget config, thetype
defaults tomenu
, but it could be any type, eg'popup'
(Fixed #8020)
API CHANGES
- [DEPRECATED] The
widgets
config to specify child components of aContainer
has been deprecated in favour ofitems
. The processing ofwidgets
will be removed in a future version (Fixed #8375) - [DEPRECATED] The 'grid' param in the events triggered by the CellEdit feature has been removed in favor of
source
param which points to the Grid instance. - TreeColumn now htmlEncodes its contents by default, just like regular Columns
- Model batch behaviour has been changed to no longer apply changes until
endBatch()
is called. Ending the batch will trigger the samebeforeUpdate
andupdate
events as normal field changes does. - Returning
false
from thebeforeUpdate
listener or calling the new Model'scancelBatch()
function will cancel the data update, rejecting the changes. - Widget querying now matches registered type, whereas previously it matched lowercase class name (Fixed #8464).
BUG FIXES
- Fixed #5725 - White space lost when using Search feature
- Fixed #7552 - Editing is cancelled on click in uneditable cell, should be applied instead
- Fixed #7579 - Fire beforeUpdate event when batch updating
- Fixed #7892 - Inserting/appending child nodes using empty array returns undefined
- Fixed #8244 - Edge: View scrolls when typing up/down arrows in percent done field
- Fixed #8246 - Safari highlights disabled button on click
- Fixed #8373 - When copying tree branch child ids are not cleared which leads to id collisions
- Fixed #8469 - Dragging columns in a grid which is a picker of a cell editor cancels editing
- Fixed #8489 - QuickFind not compatible with columns using renderer + htmlEncode set to false
- Fixed #8497 - Crash when pressing space after deleting row
- Fixed #8500 - STYLING: Wrong color of empty text in dark theme
- Fixed #8501 - Tree column + quick find not compatible
- Fixed #8528 - Crash when trying to scroll event into that is inside a collapsed parent
- Fixed #8546 - scrollEventIntoView/scrollResourceEventIntoView should focus event element
- Fixed #8552 - Tooltip is not shown if to remove pointer before hoverDelay is over
- Fixed #8559 - STYLING: Datepicker back/forward icons are not visible in Material theme
- Fixed #8563 - DateField should hide its picker on Enter key press
- Fixed #8582 - Button Tooltip shown even if no tipText is defined
- Fixed #8592 - Column order is reset when a new column drag happens
- Fixed #8593 - Column header size is wrong after state restoring Fixed #8613 - Context menu is broken on Android devices and in emulation mode
- Fixed #8622 - STYLING: ButtonGroup has wrong border style for pressed button
- Fixed #8633 - Checkbox column keeps focus style on checked grid cell
- Fixed #8666 - Filtering a tree store should not include the root node
- Fixed #8675 - Filter feature should reset before searching
Version 2.0.3, 2019-05-23
FEATURES / ENHANCEMENTS
- SubGrids can now be configured with 'maxWidth' and 'minWidth' which are respected by the regionResize feature
API CHANGES
- The action for the
refresh
event triggered by StoreendBatch()
was changed to'batch'
to allow listeners to determine the cause of the refresh.
BUG FIXES
- Fixed #8367 - event.userAction should be true for changes made by user
- Fixed #8376 - Reordering rows in tree removes new record from changeset
- Fixed #8382 - Setting maxWidth on locked subGrid config breaks region resizing
- Fixed #8389 - Badge is using wrong font
- Fixed #8399 - Grouped grid broken after adding + scrolling
- Fixed #8409 - 'normal' subGrid loses default config if configuring only locked subGrid
- Fixed #8412 - Setting store.modelClass.idField has no effect
- Fixed #8419 - Store 'beforeload' listener not working for 'autoLoad' case
- Fixed #8437 - STYLING: TextField and subclasses have wrong cursor
Version 2.0.2, 2019-05-10
FEATURES / ENHANCEMENTS
- ResizeHelper now aborts resize operations if Escape key is pressed (Fixed #7496)
BUG FIXES
- Fixed #7818 - Material checkbox invisible when unchecked
- Fixed #7953 - Grid's response to store changes should tolerate the grid not being layed out
- Fixed #8317 - Column lines out of sync when zooming out
- Fixed #8324 - Wrong URL hash separator in Doc's search
- Fixed #8327 - Empty columns does not respect header width when autosizing
- Fixed #8335 - Tooltip with trackMouse misaligns when constrained on scrolled page
- Fixed #8338 - Folders should be rendered first in the docs tree
- Fixed #8358 - Column menu needs to be scrollable in case it contains more items than fit on screen
- Fixed #8368 - Crash in tree when pressing shift-right with no row selected
Version 2.0.1, 2019-05-03
FEATURES / ENHANCEMENTS
- Docs now display an icon on entries that are expandable (Fixed #7212)
fetchOptions
config added to AjaxStore to get complete control over the fetch API options used by AjaxStore (Fixed #7895)
API CHANGES
- To avoid reserving a commonly used field name,
TreeNode#level
was renamed tochildLevel
. It was also made public to avoid future collisions (Fixed #7972)
BUG FIXES
- Fixed #7858 - Can't iterate over columns of a subGrid
- Fixed #7903 - Rendering fails when using 'em' column width
- Fixed #7919 - Row reordering should be enabled only in leftmost section
- Fixed #7941 - resizeToFitContent prevents last column in grouped header to fill its parent column
- Fixed #8003 - Delayable::requestAnimationFrame() doesn't work as documented
- Fixed #8016 - Crash when dragging row over active cell editor
- Fixed #8085 - Crash when clicking empty tree area with 'expandOnCellClick'
- Fixed #8086 - Crash when destroying a scheduler that had a context menu open
- Fixed #8087 - Crash in TimeField docs
- Fixed #8090 - Crash in multi-region demo if a region is empty
- Fixed #8091 - Columns / cell widths out of sync after moving column to new region
- Fixed #8102 - Rows disappear when sorting with collapsed grouped rows
- Fixed #8151 - vue_cli does not compile with scheduler.material.css
- Fixed #8164 - Calling Combo#clear when it has no value should be a no-op
- Fixed #8177 - Button badge should not be shown for empty string
- Fixed #8186 - Disable row reorder on touch devices
- Fixed #8192 - Destroying Panel doesn't destroy its tbar / bbar
- Fixed #8196 - DOCS: Bad look of search tag if typing then clicking outside search field
- Fixed #8220 - DragHelper doesn't take page scroll into account if cloneTarget is true
- Fixed #8221 - Drag proxy misplaced if page is scrolled
- Fixed #8222 - Calling appendChild on a leaf should convert to parent, add child and refresh UI
- Fixed #8238 - Store::includes() always return true if Store is a tree and model instance has been passed
- Fixed #8274 - Grid's filter menu needs a scrollAction setting
- Fixed #8290 - Exception is thrown when providing empty items array to combo field
- Fixed #8294 - Combo's isValid should check required and selection count
Version 2.0.0, 2019-03-27
FEATURES / ENHANCEMENTS
- New demo using Ionic added (Fixed #7450)
- New demo showing cascading combos
- Included a new default theme called "stockholm"
- Removed flatpickr as our time picker for
TimeField
and replaced with our own implementation (Fixed #7396) - Added TimeField horizontal spin triggers (Fixed #7326)
Checkbox
now has preventablebeforeChange
event (Fixed #7631);CheckColumn
now has preventablebeforeToggle
event (Fixed #7632);- Grid now supports multiple regions for columns, as opposed to only two previously (locked and normal). Check out the new multi-regions demo to see how it works (Fixed #7642)
- Cell editor now looks for a field setter when completing edit (Fixed #7754)
- Added support for custom filtering functions on columns (see
filterable
). Used by Filter and´FilterBar features (Fixed #7580) - Combo will mark itself as invalid while an unmatched filter string is being typed when configured
validateFilter : true
(Fixed #7785) - New Row reordering feature + demo added, disabled by default (Fixed #7490).
- Added API support for repainting a single column
- Model can now define which fields to persist (Fixed #7846) multi-regions demo to see how it works (Fixed #7642)
- AjaxStore now offers a
headers
config to pass headers to the underlying server request
API CHANGES
- Made the
grid.columns
property public and added docs. It is a readonly property to get the ColumnStore of the Grid - When a store is maintaining a tree structure, it now has a
rootNode
property which is an invisible node which is at the root of the tree. All additions and removals to the dataset must be through the TreeNode API, *not* Store's add/remove API. So use a record'sappendChild
/insertChild
andremoveChild
methods. - [BREAKING] When, in a tree Store, a parent node is expanded, the Store will fire its
add
event to signal the child nodes being inserted into the store's collection. When a parent node is collapsed, the Store will fire itsremove
event to signal that child nodes are being removed from the store's collection. If you listen foradd
orremove
events, or thechange
event'saction : 'add'
oraction : 'remove'
to signify records being added to or removed from a dataset, the differentiator will be that there will be anisExpand : true
or anisCollapse : true
property on the event when it is due to node expand or collapse. CheckColumn
now firestoggle
event after new data is set to the record.- The functions to show and hide load masks for Grid were made public and added to the documentation. Call
grid.maskBody('msg')
to show a load mask andgrid.unmaskBody()
to hide it. - Configuring a tooltip with
hideDelay : 0
will now hide it immediately, as opposed to earlier with a timeout of 0. This in turn makes tooltip respecthoverDelay
when moving mouse within the samefromElement
, useful when populating cell tooltips async (Fixed #7730) - In addition to specifying row height through data (see
GridRowModel
) we also made thesize
parameter ofColumn#renderer()
public. Setsize.height
in a renderer to specify the desired row height. The largest collected height for that row will be used. Uses Grids configuredrowHeight
as the min value. - [BREAKING] TimeField's and DateField's
pickerFormat
config was removed in favour of usingformat
also for the picker - [BREAKING] Grid now renders it contents on
paint
instead of onrender
, to allow it to initialize correct when embedded in tab panels and similar. Because of this change, therender
event was removed. - [BREAKING]
idField
config was removed fromStore
, it was not used in the codebase and did not work as intended. The config is still available and working onModel
, set it on your subclass (MyModelClass.idField = 'MyId'
). If you really want to remap id to another field in your data without subclassingModel
you can still do it using thefields
config onStore
:new Store({ fields : [{ name : 'id', dataSource : 'MyId' }] });
- [BREAKING] The
AjaxStore#exception
event no longer includes therequest
object. Instead it includes a reference to the fetch Response object through theresponse
property. - [BREAKING] The
AjaxStore#loadChildren
event no longer includes therequest
object. Instead it includes a reference to the fetch Response object through theresponse
property. - [BREAKING] The
response
property of theAjaxStore#loadChildren
event was renamed tojson
, andresponse
refers to the fetch Response object. - [BREAKING] The
AjaxStore#afterRequest
event no longer includes therequest
object. Instead it includes a reference to the fetch Response object through theresponse
property. - [BREAKING] The
response
property of theAjaxStore#afterRequest
event was renamed tojson
, andresponse
refers to the fetch Response object. - [BREAKING] The
response
property of theAjaxStore#load
event was renamed tojson
, andresponse
refers to the fetch Response object. - [BREAKING] The
response
property of theAjaxStore#exception
event was renamed tojson
, andresponse
refers to the fetch Response object. - [BREAKING] The AjaxStore now sends POST data as raw JSON (based on the Fetch API). To keep using the 1.x behavior
which posts form data, set
AjaxStore#sendAsFormData
to true on your stores
BUG FIXES
- Fixed #6685 - AjaxStore + AjaxHelper should offer way to pass headers + params
- Fixed #7356 - Group headers should not be included in selection
- Fixed #7402 - Bundle aliases for angular demos not updated
- Fixed #7403 - TimeFields clock icon not updating live
- Fixed #7422 - Cannot read property 'atob' of undefined
- Fixed #7452 - Trial demos do not work in Edge
- Fixed #7486 - Selecting multiple rows in GridTree not working correctly
- Fixed #7513 - ScrollManager should support scrolling in just one direction
- Fixed #7545 - STYLING: links have bad color in grid cells in dark theme
- Fixed #7588 - Panel last focus trap in wrong place. Cannot TAB into bbar
- Fixed #7602 - NumberField spinners not disabled with field
- Fixed #7608 - react_build demo is broken
- Fixed #7643 - Date field cannot handle some valid date formats
- Fixed #7660 - QuickFind not working in IE11
- Fixed #7672 - Error when adding filter to scrolled grid
- Fixed #7680 - Input fields need to disable autocomplete
- Fixed #7718 - Combo does not trigger input
- Fixed #7726 - DOCS: Complete list of defaults
- Fixed #7728 - Double clicking to fit empty column makes it 0 width
- Fixed #7729 - Also measure column header width when autosizing columns
- Fixed #7735 - defaultValues should respect mapping
- Fixed #7817 - Investigate performance when dragging events
- Fixed #7822 - DOM not repainted properly when moving a record in the store
- Fixed #7823 - Replace toFixed polyfill with ObjectHelper.toFixed
- Fixed #7829 - Relaying events should return the relayed return value
- Fixed #7856 - Region splitter not working if subGrids use flex
Version 1.2.4, 2019-02-19
FEATURES / ENHANCEMENTS
- Updated
readme.md
to better describe the projects folder structure and different included bundles.
BUG FIXES
- Fixed #7628 - Columns do not support "listeners" config
- Fixed #7644 - Row record cls should allow passing space separated classes
- Fixed #7629 - Angular demo won't build from release package
Version 1.2.3, 2019-02-14
BUG FIXES
- Fixed #7530 - STYLING: Links have wrong color in Material popups
- Fixed #7549 - toFixed override breaks native behavior
- Fixed #7589 - Id for filterBy functions should work
- Fixed #7591 - commit event is not fired on the local ajax store
- Fixed #7608 - react_build demo is broken
Version 1.2.2, 2019-01-28
BUG FIXES
- Fixed #7546 - webcomponent element never passes visibility check
Version 1.2.1, 2019-01-17
BUG FIXES
- Fixed #5869 -
htmlEncode : true
on a TreeColumn should escape only the value, not the entire internal tree markup - Fixed #7354 - Angular demo does't work in IE11
- Fixed #7369 - Locked grid broken after dragging column from right to left section
- Fixed #7370 - [EDGE] Investigate Angular + trial bundle
- Fixed #7387 - isModified is true after setting original start date
- Fixed #7402 - Bundle aliases for angular demos not updated
- Fixed #7403 - TimeFields clock icon not updating live
- Fixed #7409 - React Typescript demo doesn't work in IE11
- Fixed #7422 - Cannot read property 'atob' of undefined
- Fixed #7433 - cellEdit#startEditing should automatically scroll row into view
- Fixed #7446 - Crash when clicking document and picker is auto-destroyed
- Fixed #7447 - Crash when scrolling causing widget realign
- Fixed #7452 - Trial demos do not work in Edge
- Fixed #7474 - Can scroll to beneath rows
- Fixed #7486 - Selecting multiple rows in GridTree not working correctly
- Fixed #7491 - Tooltip tries to realign itself even when mouse is not over Tooltip's element
- Fixed #7503 - Drag drop breaks if event start is aligned with viewport left edge
- Fixed #7516 - Typings generation misses
implements
if noextends
- Fixed #7629 - Angular demo won't build from release package
Version 1.2.0, 2018-12-19
FEATURES / ENHANCEMENTS
- Full TypeScript typings included as
build/grid.d.ts
. Typings define modulebryntum-grid
to avoid possible name collisions, so we had to also rename import in the angular demo. - Added React + TypeScript demo (Fixed #7283)
- StateTrackingManager now offers undoAll/redoAll methods (Fixed #7208)
- Store now fires a
beforeRemove
event prior to removing records in both theremove
andremoveAll
methods - Built in version of FontAwesome was bumped to 5.5.0
- CellEdit feature now automatically starts editing when typing if configured with
startEditOnCharacterPress
(Fixed #7294) - Added a new guide on how to listen for events (Fixed #7196)
- Docs updated to state that locales should be included before the umd bundle to have effect (Fixed #7205)
- Added a custom column to the
columntypes
demo - Added a custom widget used as an editor to the
celledit
demo - Sorting has a new config
useLocaleCompare
that makes it uselocaleCompare
for comparisons, which makes it sort in a locale specific order (Fixed #7113) - Store now throws an exception if trying to set data with duplicate ids (Fixed #7272)
- The context menu for headers and cells now accepts a
processCellItems
/procesHeaderItems
function that allows processing of the items before the menu is shown
API CHANGES
- Fixed #7004 - Add preventable beforeAdd, beforeRemove events to Store
BUG FIXES
- Fixed #7373 - [IE11] Grid scrolls when pressing up/down arrow keys instead of navigating to the next/previous row
- Fixed #7216 - Improve state handling
- Fixed #7215 - Moving node to new parent does not update tree correctly
- Fixed #7244 - [IE11] Fullscreen button works incorrectly
- Fixed #7246 - Salesforce demo doesn't work
- Fixed #7253 - Model constructor from object doesn't work with mapped fields
- Fixed #7257 - Strange date formatting with bundle
- Fixed #7261 - Eventdragdrop doesn't work in trial umd bundle
- Fixed #7275 - Last column in locked side of grid allows its resize handle to overflow
- Fixed #7311 - Angular demo does not work in Edge
- Fixed #7317 - Formatting date with 'hh A' format yields "00 PM" at noon
- Fixed #7325 - Angular production buid doesn't work with trial sources
- Fixed #7340 - DOCS: Config options not grouped correctly
- Fixed #7346 - react_build demo is missing .babelrc config
- Fixed #7357 - Summary bar doesn't take grouped headers into account
- Fixed #7360 - 'undefined' seen in load mask after store loading fails
- Fixed #7364 - Adding a record with children to an empty tree does not render correctly
- Fixed #7380 - STYLING: Region splitter bg-color is too close to stripe row color in material theme
Version 1.1.2, 2018-11-23
BUG FIXES
- Fixed #7141 - Ripple ripples twice on tap on touch devices.
- Fixed #7142 - The final resize handle causes extra scrollWidth in grid headers
- Fixed #7175 - Drag drop with dropTarget specified not working on touch devices
- Fixed #7184 - Empty grid should be scrollable horizontally
- Fixed #7190 - STYLING: Grid column header doesn't read 'align' value in Material theme
- Fixed #7193 - Right click on non-hideable column to hide some other column throws JS error
- Fixed #7195 - Production build broken in angular demo
- Fixed #7206 - Grouped headers with all flex columns
- Fixed #7207 - resizeToFitContent should populate all renderer params
- Fixed #7227 - Wrong count in group row when using groupSummary feature
Version 1.1.1, 2018-11-15
API CHANGES
Column#resizeToMatchWidestString()
was renamed toColumn#resizeToFitContent()
and made public. Call it on a column to resize it to fit its contents.
BUG FIXES
- Fixed #7030 - Group by field without column
- Fixed #7127 - Adding records to blank grid does not update scrollbars
- Fixed #7136 - Duration field should spin on up/down keys
- Fixed #7156 - Tooltips which are
trackMouse: true
should continue to track and avoid contact with the mouse during their hide timeout - Fixed #7163 - Striped rows missing in dragfromgrid demo
Version 1.1.0, 2018-11-09
FEATURES / ENHANCEMENTS
- Angular demo bumped to Angular 7
- Built in FontAwesome version bumped to 5.4.1, scope changed from .fa -> .b-fa to not affect icons outside of our widgets
- New Export to Excel demo (Fixed #6961)
API CHANGES
- The
WidgetContainer
mixin has been removed. TheContainer
subclass is the base for all Widgets which need to contain other Widgets. - The
Container
class now has alayoutStyle
config which is an object-based config which may be used to apply CSS style properties to thecontentElement
of theContainer
. By default, Containers use flexbox layout, so this may be eg{flexDirection : 'column'}
- There is a new
Panel
class which extendsContainer
and offers the ability to dock headers (which may contain title and clickable tools) to any border. ThePanel
subclass is now the immediate superclass ofPopup
Popup
now has aclosable
config which causes the display of a close icon, which, when clicked, invokes the close method (See thecloseAction
config)- Form fields may contain multiple clickable "triggers" be configuring them with a
triggers
config. This is an object-based configuration which specifies each trigger with a CSS class for applying icon styling and a handler for executing the click action. - There is a new
TextAreaField
input field which may be used to edit multi-line data. By default, it works in single line mode displaying the text in a read-onlyinput
element and editing the text in a dropdown upon click if an expand trigger. Configuring the fieldinline: false
renders the field as atextarea
element. - Grid's
selectionMode
config may now containcheckbox : true
to indicate that a row's selected status is indicated by a checkbox. - The
CellEdit
plugin now has aaddNewAtEnd
config which indicates that when tabbing off the last column in the last row, a new row should automatically be inserted, and editing should continue in the first editable cell of the new row. - The
Combo
now acceptsmultiSelect: true
to allow selection of multiple values from the dropdown. Selected values are shown in the form of "Chips" (formerly known as "Tags") in an inline display to the left of the input area. These Chips may be deleted either by tapping the close icon in them, or selecting them using keyboard action and deleting them using the delete key. - Date parsing and formatting previously used Moment.js internally, but in this version it has been replaced with custom code for performance reasons. Tokens used for formatting and parsing are similar to those used in Moment.js, in most cases you should not need to adjust your code at all.
Collection
'sincludes
method now accepts astring
ornumber
to check for presence of the given value as anid
.Combo
now acceptsitems
as an object where property names are the field values, and the property values are the displayed text values.- The
Container
class now has alayout
config which may describe a helper class to be used to render child items, and apply certain CSS classes to specify layout. The only ones implemented as of 1.1 are'card'
which implements slide-in displaying of multiple child widgets, and'fit'
which fits a single child widget into thecontentElement
- The
TabPanel
class now fires atabchange
event when the active tab is changed. - When defining a
Model
subclass, it is no longer necessary to include the superclass'sfields
in any declaredfields
getter. The new class will automatically inherit the fields of its inheritance chain upon first instantiation. The same goes for specifying aModel
subclass'sdefaults
. - An Editor class has been introduced which is a
positioned
Container which encapsulates an input field for performing inline edits. - The
positioned: true
config indicates that a widget may be rendered into another widget'scontentEl
, but it does not participate in the layout. Rather it is absolutely positioned. Developers may use theX
andY
configs directly, or theshowBy
andalignTo
APIs. remove
method on aStore
had third parameterfromClear
documented. It was removed fom documentation.- Grid now has a
showDirty
config which, when configured astrue
, displays a triangular "dirty" flag in the corner of a cell which contains a uncommitted change.
BUG FIXES
- Fixed #5848 - Confusing when using keyboard up/down in grid and cursor is over
- Fixed #5850 - Tree row flashes when selecting a parent node, which toggles collapse
- Fixed #6098 -
Scroller
has a newaddPartner
method which pairs scrollers together so that they keep their scroll position synced in the passed axes. - Fixed #6199 - DOCS: Empty groups should not be visible in docs after filtering
- Fixed #6227 - No way to clear grouping if grouped column is hidden
- Fixed #6627 - Tree node methods, insertChild, removeChild, appendChild do not work
- Fixed #6686 - Dark Theme: sorted header has black text
- Fixed #6710 - Crash when dragging column on touch device
- Fixed #6727 - Recent theming change regressions.
- Fixed #6731 - Our CSS rules should be all scoped to apply inside .b-widget
- Fixed #6777 - Tooltip max-width conflict of interest
- Fixed #6796 - The esmodule examples do not render correctly in IE11
- Fixed #6888 - Combo picker misaligns when resizing window
- Fixed #6903 - Crash in demo browser when opening
https://www.bryntum.com/examples/grid/index.umd.html
- Fixed #6904 -
https://www.bryntum.com/examples/grid/theme/
gives 404 for FontAwesome - Fixed #6907 - TextField without label gets blank
id
attribute - Fixed #6909 - Double tap creates event on wrong place on touch device
- Fixed #6971 - DOCS: Docs tree content can overflow its grid
- Fixed #6989 - Event resize throws exceptions when dependency store is empty and dependencies feature is enabled
- Fixed #6998 - STYLING: Too noticable border for unchecked checkbox
- Fixed #7002 - Checkbox column check change should update full row
- Fixed #7061 - Tooltip dismissDelay does not work.
- Fixed #7051 - New tooltip config
hideOnDelegateChange
to hide tip between subtargets of forElement. - Fixed #7075 - Cell editing focus loss should commit value, not reject
- Fixed #7097 - Adding columns not working as expected
Version 1.0.4, 2018-10-08
BUG FIXES
- Fixed #6518 - If selected record is removed, it should be deselected
- Fixed #6768 - "No rows to display" shown for scheduler with auto loading store
- Fixed #6772 - Menu should have proper padding
- Fixed #6861 - Online webcomponents demo doesn't load polyfill for firefox
- Fixed #6876 - Floating widget should support being 'draggable'
- Fixed #6486 - Alignment with axisLock should fall back further then the opposite edge'
Version 1.0.3, 2018-10-01
FEATURES / ENHANCEMENTS
- Added demos for Angular 1, 2, 4, 5 and 6.
BUG FIXES
- Fixed #6781 - Add polyfills to WebComponents demo to make it work across all browsers
- Fixed #6805 - contextmenu click on a grid row that is sliding due to record removal should not invoke the ContextMenu
- Fixed #6826 - Cache buster needed for docs app.js
Version 1.0.2, 2018-09-24
FEATURES / ENHANCEMENTS
- Fixed #6041 - Improve transaction demo
BUG FIXES
- Fixed #6779 - Link to react_build demo gives 404
- Fixed #6794 - Examples online do not work in edge
- Fixed #6797 - Widgets have no link to the parent if they configured as instances
- Fixed #6799 - Widget's anchor config must be able to update widget state dynamically
- Fixed #6808 - Locales broken in react demo
Version 1.0.1, 2018-09-20
FEATURES / ENHANCEMENTS
- Web Components demo has been added to the trial build (Fixed #6761)
BUG FIXES
- Fixed #6700 - Links to examples in docs not working online
- Fixed #6717 - 404s seen in docs
- Fixed #6734 - Crash in column drag drop toolbar
- Fixed #6762 - Grid docs throws error on opening customization/styling page
- Fixed #6740 - EventResize tip misaligned when Scheduler is rendered in a scrolled document
- Fixed #6756 - Error thrown if TimeRanges feature configured with timeRanges data block and Scheduler uses CrudManager
- Fixed #6752 - Group header should include child count
- Fixed #6736 - Longpress->contextmenu not working in some places in iOS
Version 1.0.0, 2018-09-13
We're happy to announce the first v1.0.0 release of our new Grid component. The Grid is a modern and high performance data table component. Built from the ground up with pure javascript, supporting any framework you are already using (incl. React, Angular and Vue). Please see our website and documentation for a full presentation.
Version 1.0.0-rc1, 2018-09-10
KNOWN ISSUES
- Ticket #6143 - When editing number field in Edge (rating column, percent column), view is scrolling
BUG FIXES
- Fixed #6692 - Cls .b-grid-row-updating not removed when update finished
- Fixed #6524 - Editing broken in tree demo
- Fixed #6691 - Trial watermark doesn't look correct in IE11
- Fixed #6682 - Drag drop not working on iPhone
Version 1.0.0-beta5, 2018-09-01
KNOWN ISSUES
- Ticket #6143 - When editing number field in Edge (rating column, percent column), view is scrolling
FEATURES / ENHANCEMENTS
- grid.modules.js bundle and related demos are now included in trial
BUG FIXES
- Fixed #6596 - Dark theme text color bug in event editor time field
Version 1.0.0-beta4, 2018-08-23
KNOWN ISSUES
- Ticket #6143 - When editing number field in Edge (rating column, percent column), view is scrolling
BUG FIXES
- Fixed #6609 - Trigger (icon) layout bad in DateField in Material
- Fixed #6640 - TimeField clock broken
- Fixed #6651 - Demo browser data should have cache buster
Version 1.0.0-beta3, 2018-08-21
KNOWN ISSUES
- Ticket #6143 - When editing number field in Edge (rating column, percent column), view is scrolling
BUG FIXES
- Fixed #6592 - Column widths out of sync on mobile device
- Fixed #6604 - "element.closest is not a function", when operating on a text element
- Fixed #6606 - Tooltips close when not supposed to
- Hidden columns included when determining row width in Safari
Version 1.0.0-beta2, 2018-07-26
We're happy to announce the first v1.0.0-beta2 release of our Grid product. The Bryntum Grid is a powerful and high performance table component for the web. Since it is built with pure JavaScript, it works with the framework you are already using. Please see our website and documentation for a full presentation.
KNOWN ISSUES
- Ticket #6143 - When editing number field in Edge (rating column, percent column), view is scrolling
FEATURES / ENHANCEMENTS
- Release process improvements
Version 1.0.0-alpha2, 2018-07-02
KNOWN ISSUES
- Ticket #6143 - When editing number field in Edge (rating column, percent column), view is scrolling