Skip to content

Releases: epam/UUI

v4.9.1

01 Dec 16:30
Compare
Choose a tag to compare

4.9.1 - 01.12.2022

What's New

  • [LockContext]: reworked lock context:
    • make tryRelease method public
    • tryRelease argument in acquire now optional, if isn't passed release lock immediately on request
    • withLock now run passed action and get lock until action running
  • [useForm]: added close method, which try to leave form and ask to save unsaved changes
  • [DatePickers]: added support for typing value according predefined set of formats

What’s Fixed

  • fixed sans semi-bold font url
  • [LazyDataSource]: fixed row handle check while tree wasn't initiated
  • [NumericInput] prevent value change onScroll
  • [NumericInput]: set empty string value on onBlur event in case of invalid input value
  • [DND]: fixed container scrolling on element dragging
  • [ApiContext]: fixed manual error handling for recovery errors

v4.9.0

24 Nov 10:54
Compare
Choose a tag to compare

4.9.0 - 17.11.2022

This release includes all changes from '4.9.0-rc.1' version

What's New

  • [ColumnsConfigurationModal]: redesign and rework logic, added possibility to pin columns from modal
  • [PickerInput]: now we predefine search with selected value on picker open, but apply it to search on first change
  • [ModalContext]: added argument to abort method

What’s Fixed

  • [RawProps]: fixed wrong type for HtmlDivElement
  • [TableColumnFilters]: fixed scroll position in 'Show only selected' mode in Loveship
  • [Checkbox]: added indeterminate state to the aria-checked attribute
  • [Alert]: added min-width to prevent breaking it on extra small devices
  • [useForm]: fixed form reset to initialValue after save. Fix value replacing if new 'props.value' was passed
  • [LazyDataSource]: added 'null' type for 'parentId' and 'parent' properties in LazyDataSourceApiRequestContext
  • [LazyDataSource]: fixed selectAll action for lazyDS with cascadeSelection = false
  • [useForm]: re-create handleSave callback if 'props.save' functions is changed
  • [DataTableRow]: added possibility to forward ref
  • [PresetPanel]: bug and style fixes
  • [FiltersPanel]: bug and style fixes

v4.9.0-rc.1

24 Oct 22:02
Compare
Choose a tag to compare
v4.9.0-rc.1 Pre-release
Pre-release

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:

    • DataTableRowProps type is moved from @epam/uui-components to @epam/uui-core
    • columns prop is moved from DataRowProps to DataTableRowProps interface
      • if you have your own DataTable implementation, you'd need to replace renderRow callback type to use the DataTableRowProps interface instead of DataRowProps
    • DataTableCell interface extended to support editable cells (backward compatible)
  • 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.

    • Cells and tables tweaked to support vertical borders, hover/focus border effects for editable cells
    • Now, cell content is rendered in flexbox context (was block). Please review cells layout (alignment and width of the cells content)
    • DataTableColumn - new prop: justifyContent, which sets appropriate flexbox property. Can be used to align items horizontally. If omitted, we use existing textAlign property to set it. I.e. you can still use textAlign: left/center/right to align textual cell content.
    • DataTableCell renders focus/hover effects (borders) on their own. We removed these effects from all inputs with mode='cell'.
  • [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:

    • shrink prop - marked @deprecated. It will be removed in future versions.
      'shrink' prop wasn't supported even before this change, so you can safely remove it from all columns.
      Column can't 'shrink' (become less than width), as we add horizontal scrolling instead of shrinking in case all columns doesn't fit.
    • 'width' prop is now required (was optional).
      If you didn't have 'width' on a column, most probably you mean width=0 and have grow=1 - to make the column to occupy all empty space. You can set width: 0 explicitly in such cases.
    • 'minWidth' prop now doesn't work as flex-item prop, it only serves as minimum width for manual column resizing. Default is minWidth = width.
  • [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.

    • If you use such ids, set 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 optional
    • number and string ids are supported correctly by default
  • useForm 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 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.

    • Formatting can be disabled with the disableLocaleFormatting prop
    • min/max are no longer required. By default, NumericInput only accepts positive whole numbers.
    • A lot of display options are now possible via NumberFormatOptions: currencies, units, flexible min/max fractional digits limits, etc.
    • See more at the docs page
  • [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.

What’s Fixed

  • Fixed rawProps prop typings
  • [DndActor]: improved 'inside' position calculation
  • [useForm]:
    • fixed revert/undo/redo behavior after save
    • onValueChange now triggers internal validation logic (as with changes made with lenses)
    • refactored to remove unnecessary re-renders in some cases
    • ArrayDataSource/ArrayListView now generates row indexes starting from 0 (was from 1)
  • [Button]: Added default type 'button' for all buttons.
  • [RangeDatePicker]: fixed styles for presets block
  • [Datepicker]: fixed unnecessary onValueChange calls
  • [LabeledInput]: changed paddings for validationMessage
  • [PickerInput]: fixed issues with focusing at PickerToggler
  • [NumericInput]: added behavior for input without value and with min prop on focus lost
  • [MainMenu]: fixed styles for non-clickable elements
  • [ErrorHandler]: fixed context listeners unsubscribing on second render
  • [ColumnConfigurationModal]: fix column dnd on first position
  • [TabButton]: reworked notify dot styles, placed after caption element, change paddings
  • [PickerInput]: fixed row selecting by 'enter' pressing

v4.8.5

15 Sep 14:45
Compare
Choose a tag to compare

4.8.5 - 15.09.2022

What’s Fixed

  • [RTE]: fix readonly mode
  • [ErrorHandler]: fix 'dark' theme error container styles

v4.8.4

09 Sep 12:17
Compare
Choose a tag to compare

4.8.4 - 09.09.2022

What’s Fixed

  • [RTE]: fix wrong image size on first render
  • [RTE]: fix cursor jumping on new text typing in chrome 105+ version
  • [RTE]: fix image reducing to the minimum size when trying to resize it without focus on it

v4.8.3

01 Sep 11:15
Compare
Choose a tag to compare

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

v4.8.2

22 Aug 17:49
Compare
Choose a tag to compare

4.8.2 - 22.08.2022

What's New

  • [FilterPanel]: add possibility to add predicates for filters. For this provide predicates array in TableFiltersConfig
  • [DataTable]: add possibility to reset sorting to default value

What’s Fixed

  • [PickerInput]: fix input with minCharsToSearch props. Fix toggler input size in 'multi' mode

v4.8.1

10 Aug 15:36
Compare
Choose a tag to compare

4.8.1 - 10.08.2022

What's New

  • Add rawProps prop for the rest part of the components
  • Updated icon pack
  • [PickerItem]: add possibility to pass icon
  • [FiltersPanel]: add possibility to provide your own renderRow callback
  • [DatePicker]: add placement props
  • [DataTable]: add default 'not results found' state
  • [PickerModal]: add default 'not results found' state
  • [FilterToolbar]: small improvements and bugfixes

What’s Fixed

  • [PickerInput]: rework styles for selected value in toggler
  • [DataTable]: fix table rerender when columns prop changed
  • [NumericInput]: don't allow '+' and 'e' symbols
  • [LinkButton]: fix focus state
  • [RangeDatePicker]: fix error when preset is null
  • [NotificationCard]: rework styles

v4.8.0

21 Jul 13:51
Compare
Choose a tag to compare

4.8.0 - 21.07.2022

What's New

  • Added new FiltersToolbar component, which creates table filtration toolbar according to the TableFiltersConfig object. See demo here - https://uui.epam.com/demo?id=filteredTable
  • [Form]: implement possibility to run form validation on field change, for this pass validationOn: 'change' to form props
  • [DropdownContainer]: reworked styles, add possibility to show arrow tip
  • [Anchor]: implement open Anchor links with Ctrl or Command in new window
  • [PickerInput]: add 'fixedBodyPosition' prop, to have possibility to fixed body on initial position in case when toggler moved
  • [FileUpload]: rework error states

What’s Fixed

  • [DropSpot]: fix drag&drop area view
  • [NumericInput]: fix arrows layout hidden when input disabled or readonly
  • [DropdownMenu]: fixed item active state
  • [Avatar]: fix ref receiving
  • [RTE]: remove unnecessary editor state update on image load
  • [PickerInput]: remove close icon from tag in disabled/readonly mode
  • [PickerInput]: change styles for search in body
  • [Badge]: fixed semitransparent hover colors
  • [Tooltip]: change tooltip logic, when the new children is passed. Fixed loop, when a lot of listeners was attached
  • [RangeDatePicker]: fix preset styles

v4.7.1

06 Jun 14:50
Compare
Choose a tag to compare

4.7.1 - 06.06.2022

What's New

  • [Buttons and Anchors]: support SPA links opening in new window when Ctrl/Command key pressed

What’s Fixed

  • [DropSpot]: fix dnd behavior when user drag&drop file out of drag area
  • [PickerInput]: fix the second line tag margin in multi mode
  • [NumericInput]: hide arrows when input disabled or readonly
  • [DataTable]: added missing sizes styles for header
  • [ErrorHandler]: return getDefaultErrorPageProps and recoveryWordings export from loveship
  • [useForm]: handle rejected promise after save
  • [Burger]: fix scroll on body when burger closes
  • [VirtualList]: fix auto scroll onHover on top or bottom item