@epam/assets
Advanced tools
Changelog
4.9.1 - 01.12.2022
What's New
tryRelease
method publictryRelease
argument in acquire
now optional, if isn't passed release lock immediately on requestwithLock
now run passed action and get lock until action runningWhat’s Fixed
Changelog
4.9.0 - 17.11.2022
This release includes all changes from '4.9.0-rc.1' version
What's New
What’s Fixed
Changelog
4.9.0-rc.1 - 24.10.2022
What's New
This release prepares UUI for full-featured editable tables support. Editable tables were possible before this - via hooking into renderRow, building a separate component for row, and certain tricks to re-render it w/o re-rendering whole table. However, this was a complex and feature-limited approach.
In this release, we add first-class support for editable cells, and adjust our infrastructure to support various other features to make DataTables editable. You can find example and documentation how to create editable table here.
With this release you already can build editable tables. However, we are planning to improve certain parts in the future releases, e.g. simplify adding/removing/moving rows in tables.
[Breaking Change]: DataSources and DataTables-related interfaces refactored:
ArrayDataSource - items
prop value can now be updated dynamically.
Prior to this fix, the only way to update items
, is to add them as useArrayDataSource
dependencies. This forces DataSource to re-create everything, forcing re-render of all tables' rows. This was slow, especially if you need to make cells editable - i.e. re-render on each keystroke. Now, you can safely remove your items from deps: useArrayDataSource(..., ~~[items]~~), which will improve performance.
DataSources: getRowOptions
is called on each update, allowing to dynamically change rows behavior. For example, you can dynamically enable/disable checkboxes in Tables or PickerInputs.
DataSources: getRowOptions - DataRowOptions now implements IEditable<TItem>
interface. This allows to make rows editable, by passing value/onValueChange directly, or by using lens.toProps(): getRowOptions(item) => lens.prop(item.id).toProps()
[Breaking Change]: DataTableCell layout reworked.
[Breaking Change]: DataTable columns widths props are simplified. Columns width are defined by width (in pixels), and (optionally) grow - which defines a part of empty space for column to occupy. Props affected:
[Breaking Change]: DataSources doesn't work with array/object ids by-default. In certain cases, we used IDs like [123, 'group-row'] to handle scenarios when there are different types of entities, with overlapping ids. E.g. item groups, and actual records in grouping table case. They are no-longer supported by default.
complexIds = true
prop when creating DataSource. In this case, DataSource will use JSON.stringify to use IDs as Map keys internally. This was default behavior prior this change, which has impact on performance, so it's made optionaluseForm now provides two new callbacks: setValue and replaceValue.
They work the same way as setState of React.useState.
Besides a plain new form value, both can accept a function (currentValue: T) => T
. This option is useful if you want to use useCallback
to memoize operations on the whole state of the form.
setValue acts as a usual user-made change to a form - sets isChanged, creates undo checkpoint, etc.
replaceValue doesn't update isChanged, and can be used for technical needs. E.g. to store values like 'currentTab' in the form state.
Metadata<T> type - 'all' prop now infer the type of array element or object values (was typed as 'any')
Lenses now memoizes all methods calls (.prop, .item, etc.). This allows to not re-create onValueChange callbacks on re-renders. In turn, it opens a way to use React.memo/shouldComponentUpdate optimization for IEditable components.
[PresetsPanel]: Added new PresetsPanel
component, which allows you to save your current filtration into presets and manage them. See demo here.
[AdaptivePanel]: Added new AdaptivePanel
component. This component helps you to layout elements inside container and hide items by their priorities if they didn't fit.
[MainMenu]: reworked based on AdaptivePanel
, now you can provide menu elements in new format via items
prop. But we also left working old approach with children, so no action is required from your side.
[Numeric Input] - reworked to display number is locale format (e.g. with decimal and thousands separators) while not being edited.
disableLocaleFormatting
prop[RangeDatePicker]: Added onFocus and onBlur props
[PickerInput]: added ability to pass rawProps to modal window
[Modals]: added disableCloseByEsc
prop to ModalBlocker
[Accordion]: API improvements, added opportunity to overwrite title.
[DropdownMenuButton]: added possibility to provide onClick for icon
[FilterToolbar][Breaking change]: renamed FilterToolbar
component to FilterPanel
[FilterPanel]: added numeric filter type
[FilterPanel]: improvements and bugfixes
Build target for packages is changed from ES5 to ES6. This shouldn't affect existing apps, as most app builds into ES5 anyway, including the latest CRA.
[ModalContext]: added argument to abort method
What’s Fixed
rawProps
prop typingsonValueChange
now triggers internal validation logic (as with changes made with lenses)Changelog
4.8.5 - 15.09.2022
What’s Fixed
Changelog
4.8.4 - 09.09.2022
What’s Fixed
Changelog
4.8.3 - 01.09.2022
What’s Fixed
[PickerInput]: disabled elements in multi-picker no longer can be deleted with cross at tag in the input. Before this fix, cross icon was visible, and clicking it caused crash
[LazyDataSource]: Select All now selects only currently visible items. Prior the fix, all items which was loaded before (e.g. with other/no filters) was selected.
[useVirtual]: Improved visible range computation:
Virtual lists now adjust visible area in fixed-sized 'blocks'. E.g. topIndex, visibleCount, and from/count in LazyDataSource requests will be always divisible by Block Size. This helps to avoid cases when only several rows are requested on small scrolls. This also can help with pageNo/pageSize-oriented API. Block size defaults to 20, and configurable with blockSize
prop.
We also render more rows above and below visible area to avoid blank areas and loading rows when scrolling at normal speed. This is also configurable with overdrawRows
setting (defaults to 20, meaning at least 20 rows above/below the visible area are rendered)
This change also fixes the problem when lazy-loading stops, while the end of the list is not reached.
[FilterPanel]: fix filter toggler value if selected item id === 0
[FilterPanel]: fix add new filter error after all filters was cleared
[FilterPanel]: remove filter value when uncheck filter from 'Add filter' dropdown
Changelog
4.8.2 - 22.08.2022
What's New
predicates
array in TableFiltersConfig
.What’s Fixed