New UI Widgets

New UI Widgets is a set of widgets and UI interactions; it also includes a widgets generator for the custom data types and converter from default Text to TextMeshPro.

Collections:

Widgets can be generated for your custom type with the context menu “Create / New UI Widgets / Generate Widgets”
Virtualization (recycling) supported: game objects are created for visible items only.

Containers:

Dialog:

Controls:

Input:

Other:

Interactions:

Works with:

  • not available on platforms with restricted access to the file system (like WebGL and Windows Store/UWP)

Asset Store
Demo
Documentation

Changelog

  • v1.17.9

  • COMPATIBILITY-BREAKING CHANGES: ActivateInputField() method renamed to Activate() in the IInputFieldProxy interface

  • added DataLoader class to simplify loading and caching data

  • Accordion: added Interactable option

  • CenteredSlider: added Interactable and PointerButton options

  • ColorPicker: added Interactable option

  • Combobox: added Interactable option

  • Combobox: added RepositionListView option, if enabled ListView is automatically positioned to be completely visible if partially hidden by the bottom or right side of the screen

  • Combobox: added ChangeRounderCorners option, if enabled then corner radiuses will be changed to match the repositioned ListView

  • FileListViewPath: added Interactable, DisabledColor, and PointerButton options

  • ListView: added LoopedNavigation option, enabled by default, if enables/disables navigation from first to last item and vice versa

  • ListView: added MultipleSelectRequireKeys option, disabled by default, items selection will work similarly to file explorer if enabled

  • ListView: added RequireVisible option, number of visible items from current item to border on navigation

  • ListView: scroll no more “jump” when scrolling backward when the item size is changed

  • ListView: the LoopedList option now works correctly with items of variable sizes

  • ListViewPaginator: fixed bug with empty ListView and incorrectly detected page in some cases

  • OpenContextMenu: added Interactable and PointerButton options

  • Paginator: added Interactable option

  • SliderScroll: no more change Slider value if it is not interactable

  • Tabs: added TabsScroll component to toggle tabs with mouse scroll

  • TreeNode: fixed incorrect deserialization

  • UI Themes: fixed ThemeTarget bug caused by removed component

  • v1.17.8

  • COMPATIBILITY-BREAKING CHANGES: public void Init() methods are split into two public void Init() and protected virtual void InitOnce() to avoid excessive flag checks. To fix broken code you need to replace public override void Init() with protected override void InitOnce().

  • COMPATIBILITY-BREAKING CHANGES: UIThemes ThemesReferences and ReferencesGUIDs scripts moved from the Editor folder to the Scripts folder

  • added SelectableMarker: shows the specified marker for the currently selected game object.

  • added TextMeshProPaginator for the TMP_Text (use with text Overflow = Page)

  • AutoCombobox: added DataSource, SelectedIndex, SelectedIndices, SelectedItem, and SelectedItems properties (proxies for the corresponding ListView properties)

  • Combobox: added DataSource, SelectedIndex, SelectedIndices, SelectedItem, and SelectedItems properties (proxies for the corresponding ListView properties)

  • EasyLayout: added MovementAnimateAll and ResizeAnimateAll options - animate movement/resize for all elements if enabled; otherwise new elements will not be animated.

  • ListView: CenterTheItems renamed to the AlignCenter

  • Notification: SlideUpOnHide now is obsolete, use the EasyLayout “Movement Animation” option instead

  • TreeNodes: added “alwaysIncludeNested” parameter to the Filter and FilterNodes method

  • Paginators: added the HideIfOnePage option - an active page will be hidden if Pages <= 1

  • v1.17.7

  • COMPATIBILITY-BREAKING CHANGES: now BeginUpdate() method of IObservableList<T>, ObservableList<T>, and GroupedList<T> returns ListUpdater instead of void

  • Calendar: now the OutOfRangeDate option is properly used instead of the OtherMonth

  • Calendar: now the date is selectable

  • Dialog: added AutoFocus option - set focus to the last Selectable object in the Dialog

  • DragSupport: fixed bug with OnDestroy()

  • IObservableList<T>, ObservableList<T>, GroupedList<T>: now BeginUpdate() method returns disposable struct to automatically call EndUpdate() at the end of the block (using var _ = DataSource.BeginUpdate(););

  • Notifications: added FadeIn and FadeOut animations (requires CanvasGroup component)

  • ListView: fixed navigation for the ListViewEllipse type

  • Picker: added AutoFocus option - set focus to the last Selectable object in the Picker

  • Popup: added AutoFocus option - set focus to the last Selectable object in the Popup

  • Resizable: added the IncludeOuterRegion option to enable/disable resize outside of the target (disabling it restores behavior before v1.17.3)

  • Resizable: improved compatibility with other draggable components like ScrollRect

  • Resizable: ResizableRoot can be manually added to the parent object instead of the canvas

  • Resizable: ResizableRoot is no longer required if IncludeOuterRegion is disabled

  • TableHeader: fixed bug with destroyed cells

  • small optimizations and code improvements

  • UI Themes: “Remove All ThemeTargets” renamed to “Detach Theme”

  • UI Themes: “Remove ThemeTargets with Default Theme” renamed to “Detach Default Theme”

  • UI Themes: added “Attach to the Scene” button to the Theme editor, it will add/replace all themes in the active scene with the current one

  • Settings: auto-attach theme now is disabled by default

  • Widgets Generator: the created scene now uses a separate copy of the base theme

  • Widgets Generator: fixed duplication of foregrounds list in DefaultItem if all of them are null

  • v1.17.6

  • added SplitterMaxSize component to limit the maximum size of the Splitter targets (set value to 0 to disable)

  • added SliderScroll component for the Slider widget with ScrollMode option to change the value on the mouse scroll

  • CircularSlider: added ScrollMode option to change the value on the mouse scroll

  • CenteredSlider: added ScrollMode option to change the value on the mouse scroll

  • Drag: fixed the AutoScroll error

  • ObservableList: added UseStableSort option, enabled by default

  • ObservableList: added optional “bool stable” parameter to the Sort() methods

  • SnapGrid: fixed problem with the Canvas scale factor

  • small optimizations and code improvements

  • v1.17.5

  • AutoCombobox: added RequireSelectedItem option to enable/disable selection of the first item

  • Spinner: added ScrollMode option to change the value on the mouse scroll

  • TileView: fixed problem with Variable Size mode when the same item is added to the list multiple times

  • Widgets Generation: fixed script error with the “InstantiatePrefabs” property

  • v1.17.4

  • fixed problems during the first installation

  • added RectTransformCover: changes the RectTransform size (while preserving its ratio) to the smallest possible size to fill the parent, leaving no empty space

  • Combobox: fixed problem with LayoutGroup

  • DragSupport: removed FillRaycasts method and RaycastResults field

  • ListView: added StretchToMaxItemSize option to stretch ListView to fully display the largest item, works only with ListType = ListViewWithVariableSize

  • Project Settings: added “Use White Sprite” option to set sprite for the Image components without sprite, prevents rare bug when such Images are displayed as black

  • Resizable: fixed behavior when the cursor is over a hidden part

  • TableHeader: fixed the cell sizes jump when enabling column

  • v1.17.3

  • Assembly Definitions: improved support when reinstalling the package

  • Combobox: fixed problem with undesired focus on the toggle button

  • BorderEffect: BorderColor alpha is now properly supported

  • LinesDrawer, SnapGridDrawer: LineColor alpha is now properly supported

  • Resizable: added the StopAtParentBorders option to prevent resizing outside of the parent borders.

  • Resizable: now resize working if the cursor is outside of the target in ActiveRegion distance (previously only when it was inside)

  • UIThemes: fixed build error for Unity 2021.3 versions

  • v1.17.2

  • added Nodes.Filter() extension method

  • ColorHSV: added LerpHSVAlternative() method to lerp Hue using the shortest distance

  • ColorPickerDialog: value type changed from Color32 to Color

  • LayoutSwitcher: fixed Updater-related bug

  • Shaders: added lerpHSVAlternative() function to lerp Hue using the shortest distance

  • TreeView: fixed Editor error when opening ScrollSettings

  • Widgets Generator: the UpdateView() method of ListViewComponent is now virtual

  • v1.17.1

  • fixed Style.cs bug when installing the package the first time

  • added new Container prefabs: SlidersHorizontal, SlidersVertical, and TabsSliders

  • added SpinnerVector3

  • added ColorPickerDialog

  • added shader functions: RGBtoHSV(float4 colorRGB), RGBtoHSV(float3 colorRGB), HSVtoRGB3(float3 colorHSV), lerpHSV(float4 colorRGB0, float4 colorRGB1, float s), lerpHSV3(float3 colorRGB0, float3 colorRGB1, float s)

  • EasyLayout: fixed movement and resize animations

  • Combobox: now ListView position and size do not change with canvas resize

  • Combobox: improved gamepad and keyboard support

  • ListViewPaginator: now ListView can be changed in runtime and can be null

  • ListViewPaginator, ScrollRectPaginator: added SetSharedDefaultPages() and SetSharedSkipPages() methods

  • ScrollRectPaginator: now ScrollRect can be changed in runtime and can be null

  • Spinner: added ValueLimits option

  • v1.17.0

  • COMPATIBILITY-BREAKING CHANGES: usages of ReadOnlyCollection replaced with IReadOnlyList

  • fixed bug when using TMPro Converter on objects with ThemeTarget component

  • added RounderCorners and RounderCornersX4 effects

  • added StableSort helper

  • TMPro Support: added DefaultFont option in Project Settings, used by TMPro Converter

  • UI Themes: added commands “Find Options” and “Find And Create Options” to use with existing ThemeTarget components

  • UI Themes: font size by default changed to 24

  • UI Themes: colorMultiplier by default changed to 1

  • UI Themes: commands “… Create Options” now set the current value for all variations if the option was created

  • v1.16.5

  • Unity 2023.2 support

  • fixed tooltip sprites

  • fixed Widgets Generator window error when all fields are deselected

  • ListViewItem: replaced Graphic[ ] with List field properties (GraphicsForeground → Foregrounds; Foreground → foregrounds; graphicsBackground → backgrounds; GraphicsBackground → Backgrounds; cellsGraphicsBackground → cellsBackgrounds;)

  • ListViewDropIndicator: fixed wrong position

  • UIThemes: fixed bug when properties controlled by the owner were changed by Theme

  • UIThemes: added Selectable.colorMultiplier support

  • UIThemes: added Text.fontSize support

  • v1.16.4

  • fixed assembly definitions error

  • UI Themes: fixed error caused by a missing folder in the package (since Unity does not include an empty folder in the package)

  • Paginator: added PageRounding option to determine how the current page is calculated

  • v1.16.3

  • Autocomplete: fixed missing ListView in some cases

  • Combobox: fixed the button position on the hierarchy (thanks to Antuan Johnson)

  • Notification: templates buttons now are properly hidden

  • Resizable: now correctly works with non-one scale

  • SelectableHelper and SelectableHelperList: added Interactable and WatchInteractable properties

  • v1.16.2

  • Different Draggable components: added DragButton option

  • v1.16.1

  • added ObservableListFilter

  • added prefabs for the default Unity widgets to use with the default theme

  • added “Editor / Widgets References.asset” to replace default prefabs (available only after any widget was created with context menu)

  • fixed error when replacing Unity Text with TMPro Text on the ThemeTarget component

  • Autocomplete: added OnShowOptions and OnHideOptions events, use them to change the position of the shared DisplayListView

  • ContextMenu: now shows actions count in the items editor

  • ContextMenu: now parent items are highlighted when the submenu is opened

  • ContextMenu: fixed position when open using the context menu key

  • ListViewString: fixed sort (thanks to RickSaada1)

  • ScrollRectPaginator: fixed bug with the wrong page count

  • UIThemes: added option to specify folder, and namespace for wrappers, and enable generate wrappers in Project Settings

  • UIThemes: ThemeTargets Search window: search now performed on all opened scenes, not only active

  • UIThemes: ThemeTargets Search window: added search on all scenes and prefabs

  • UIThemes: ThemeTargets Search window: search results preserved after assembly reload

  • UIThemes: added context menu “Remove ThemeTargets with Default Theme”

  • UIThemes: added variations reorder

  • UIThemes: added Theme.IsActiveProperty(name) method to control available properties

  • UIThemes: white sprite can be marked with the “ui-themes-white-sprite” label

  • UIThemes: fixed options reordering when filter enabled

  • UIThemes: fixed variations delete

  • v1.16.0

  • now the oldest supported version is Unity 2020.3

  • Unity 2023.1 support

  • added UIThemes as a replacement to the legacy Styles (Styles can be enabled in “Project Settings / New UI Widgets”)

  • Assembly Definitions are automatically created (this behavior can be disabled in “Project Settings / New UI Widgets”)

  • added SelectableHelperList, an equivalent of SelectableHelper with multiple TargetGraphics

  • added a workaround to avoid the string comparison bug in WebGL

  • fixed Domain Reload support

  • added option to choose between creating widgets copies or prefabs from the menu

  • AutocompleteStringCombobox: fixed value selection bug

  • Combobox: now properly closed after clicking on the selected item

  • Connectors: added line arrows

  • Connectors: fixed bugs with Canvas Screen Space = Camera and canvas is rotated or have non-1 scale

  • Dialog, Picker, Popup, Notification, ModalHelper: fixed bug with cache containing destroyed game objects

  • EasyLayout: bug fixes

  • ListView: added OnItemSelected and OnItemDeselected events

  • ListView: added CreateTemplateSelector() method to replace TemplateSelector setter to support UI Themes

  • ListView: fixed events error

  • ListView: added notification if item type is not [Serializable]

  • ListView: added ColoringStriped, DefaultEvenBackgroundColor, DefaultOddBackgroundColor

  • Paginator: added VisiblePagesCount and SkipPage options

  • Paginator: now correctly updated when using the scrollbar

  • ScrollBlock: added Scroll(steps, AnimationCurve) method

  • Styles are now obsolete and replaced with UI Themes

  • Switch: fixed toggle animation

  • TimeScroller: added Scroll(TimeSpan, AnimationCurve) method

  • Tooltip: fixed bug when the tooltip was not hidden in some cases

  • v1.15.10

  • Unity 2022.2 support

  • domain reload support: fixed null reference exception

  • Autocomplete: now input with tags is correctly parsed

  • Combobox: now correctly updated when item properties changed

  • Combobox: position in hierarchy correctly restored after ListView closed

  • Combobox: fixed use ListView.Select()/Deselect() with raiseEvents = false

  • EasyLayout: fixed Grid layout bug

  • ListView: fixed GetComponentsEnumerator() returns not all instances

  • ListView: minor fixes

  • ListViewPaginator: fixed LoopedList support

  • ResizableHandles: added HandlesState field to control handles visibility on select/deselect events

  • RotatableHandles: added HandleState field to control handles visibility on select/deselect events

  • TreeView: fixed ContainerMaxSize, now the size is correct if TreeView has collapsed nodes

  • v1.15.9

  • ListView: fixed undisplayed properties in the Inspector window

  • Rating: fixed Interactable does not work correctly when disabled

  • TreeView: added ContainerMaxSize option to prevent scrollbar blink caused by virtualization: the container will have the maximum width of all items. By default, the container has the maximum width of only visible items. Require ListType = List View with Variable Size.

  • v1.15.8

  • added Rating widget (Text can be replaced with an Image or any other Graphic component)

  • added async helpers scripts

  • DatePicker, PickerInt, PickerString, and custom PickerListView: added an optional OK button and Mode option to choose between “close on select” and “close on OK click”

  • Dialog, Notification, Picker, Popup: added OnBaseInstanceOpen and OnBaseInstanceClose static events

  • Dialog, Notification, Picker: added OnInstanceOpen and OnInstanceClose static events for the custom types

  • Popup: added ShowAsync() method to use with async/await

  • Styles: fixed missing font in some Unity versions

  • TileView: added LinearGroupedTileView example

  • TracksView: added Timeline

  • menu “New UI Widgets/Dialogs” renamed to “New UI Widgets/Dialogs Templates”

  • v1.15.7

  • added LoadAnimation widget

  • Dialog, Lightbox, Picker, Popup: added HideOnModalClick option

  • added workaround to avoid ReSharper RRSRP-489023 bug

  • Combobox: fixed bug when items were removed but still displayed as selected

  • ListView: added ChangeLayoutType option: if enabled changes EasyLayout.LayoutType to match ListType.

  • ListView, TreeView: now the deselect events invoked for the removed indices/nodes

  • v1.15.6

  • now the oldest supported version is Unity 2018.4

  • added Grayscale effect

  • added LocalizationSupport option to disable translation for widgets with localization support

  • added LimitMaxSize script to limit size when using anchors stretch

  • added ProgressbarCircular prefab and menu option

  • added SafeArea script to resize RectTransform to fit the safe area

  • added Swipe script

  • Dialog, Notification, Picker: added ShowAsync() method to use with async/await

  • Dialog, Notification, Picker: added IsDestroyed property to check if is instance destroyed

  • Dialog, Notification, Picker: now destroying instances will raise cancel or hide events

  • Effects (derived from UVEffect): improved filled image type support

  • Calendar: add OtherMonthWeekend and OutOfRangeDate colors to the Date component

  • ContextMenu: fixed bug occurring with opened “ContextMenu Items Editor” window in play mode

  • ListView, TreeView: fixed incorrect drop indicator position in some cases

  • ListView: added GetInstanceSize(), SetInstanceSize(), ResetInstanceSize() methods to animate items resize without problems with virtualization

  • ListView: fixed wrong drop position and indicator if enabled CenterTheItems

  • Ring Effect: added Fill option

  • TreeView Drop Support: added AutoDropPosition and DropPosition options

  • TreeView: added AllowToggle option

  • TreeView: added TreeViewToggleAnimation script to animate node toggle

  • Widgets Generator: fixed bug with “const” fields

  • Widgets Generator: now you can select the fields that will be used in the widgets, including the field for the autocomplete; it also can be done with [GeneratorIgnore] and [GeneratorAutocomplete] attributes

  • v1.15.5

  • improved Unity 2021.3 LTS support

  • COMPATIBILITY-BREAKING CHANGES: ListView methods ComponentCreated, ComponentDestroyed, ComponentActivated, ComponentCached changed to public

  • ListView: added SetSharedTemplates() method

  • Widgets Generation: fixed bug when data type has a parameterless constructor

  • v1.15.4

  • added ScrollRectDragSensitivity

  • added UtilitiesScrollRect: get time for ScrollRect stop by inertia

  • ListView: added ReversedOrder option (items displayed from end to start)

  • ListView: added OnlyOneHighlighted option

  • ScrollRectHeader, ScrollRectFooter: added Visible option to show and hide header (or footer)

  • ScrollRectHeader, ScrollRectFooter: added layout support if DisplayType is Reveal

  • ScrollRectFooter: added ChangeLayout option

  • ScrollRectPaginator: added RoundingError option to avoid excess last page

  • Switch: added AnimationCurve option

  • Widgets Generation: fixed enum related bug

  • Widgets Generation: improved support of latest Unity versions (2022.1.0+)

  • Style: fixed “Create Style” bug

  • v1.15.3

  • COMPATIBILITY-BREAKING CHANGES: LateUpdateAdd and LateUpdateRemove methods of IUpdaterProxy renamed to AddLateUpdate and RemoveLateUpdate, added RemoveRunOnce and RemoveRunOnceNextFrame methods

  • ContextMenu: added helper script OpenContextMenu to open the menu by clicking on non-UI gameobject, requires PhysicsRaycaster and/or PhysicsRaycaster2D on the main camera

  • DateTimeScroller and DateScroller: fixed AMPM change on hours scroll if IndependentScroll enabled

  • EasyLayout: added optional movement and resize animation support; warning: can decrease performance

  • Effects: RingEffect, RippleEffect, LinesDrawer, SnapGridDrawer no more requires enabled TexCoord1 channel on Canvas

  • ListView: fixed item instance visibility if ListViewItem.DisableRecycling enabled

  • ListView: added OnNavigate event; called after navigating to the other item instance with keyboard or gamepad

  • ListView: added ItemsEvents.MovedToCache event

  • ListView: FixHighlightItemUnderPointer option now obsolete

  • ListView: added KeepHighlight option to keep item highlight on pointer enter until will be selected another gameobject

  • ListView: fixed wrong events processing order in some cases

  • ListViewItem: added StopSelectableAnimations() method to ListViewItem class

  • Notification: added OpenedNotifications, AllNotifications and InactiveNotifications properties

  • Picker: added OpenedPickers, AllPickers, and InactivePickers properties

  • Spinner: fixed bug with Unity Text and OnKeyDown validation

  • Tabs: added EventSystemSelectActiveHeader option

  • Tabs: added ImmediateSelect option

  • Tabs: added NextTab() and PreviousTab() methods

  • TimeScroller: added SingleAMPM property to disable multiple AM PM options in scroll block

  • TreeNode: added HasNodes and HasVisibleNodes properties

  • TreeView: added ToggleOnNavigate option, if enabled expand node on move right event and collapse node on move left event

  • TreeView: added ToggleOnSubmitCancel option, if enabled expand node on submit event and collapse node on cancel event

  • v1.15.2

  • added Updater static class to control scripts updates IUpdatable.RunUpdate() without reflection instead of the default MonoBehaviour.Update()

  • added SnapGrid: allow to stick draggable or resizable UI game objects to the nearest grid lines

  • added LinesDrawer and SnapGridDrawer effects

  • COMPATIBILITY-BREAKING CHANGES: MonoBehaviour.Update() replaced with IUpdatable.RunUpdate()

  • Autocomplete: added AllowCancelOnDeselect to cancel DisplayListView close on deselect event.

  • Autocomplete: added OnSearchCompleted event

  • Autocomplete: added ResetListViewSelection option

  • AutoCombobox: fixed InputField display bug

  • AutoCombobox: fixed coloring bug

  • AutoCombobox: added KeepSelection option (set Autocomplete.DisplayListView selected items)

  • Connectors: fixed incorrect positions when CanvasMode is WorldSpace and its scale is not 1

  • Dialog: added ButtonsContainer option

  • ListView: fixed bug with incorrect item sizes when using variable size type

  • ListView: fixed highlighting bug

  • ListView: fixed wrong background color for the last items in table mode

  • ListView: added RangeMode property to determine which element is the start when selecting a range with the Shift key.

  • ListView: fixed instance recycling if ListViewItem.IsDragged enabled

  • ListViewItem: IsDragged renamed to DisableRecycling

  • ListViewString: now sort can be disabled with EnableSort in Inspector window

  • Notification: added ButtonsContainer option

  • Paginator: added SetPage method to change current page without animation

  • Sidebar: added ModalColor field

  • shaders: now should support stereo instanced rendering and SRP batcher (thanks to David Watt)

  • Tooltip: added generic Tooltip

  • TreeView: added FindNodes method

  • Widgets Generation: added Tooltip generation

  • v1.15.1

  • COMPATIBILITY-BREAKING CHANGES: cursors fields at components (Resizable, Rotatable, Splitter, TableHeader, DragSupport) are no more used and replaced with Cursors asset and CursorsDPISelector component

  • Accordion: added Curve property to use in animations

  • ContextMenu: fixed HotKey null bug

  • ListView: added OnComponentCreated, OnComponentEnabled, OnComponentDisabled, OnComponentDestroyed events

  • ListView: renamed StopScrollAtItemCenter to ScrollInertiaUntilItemCenter and StopScrollInertia to ScrollInertia

  • TreeView: fixed node remove bug when different nodes using the same item

  • TreeView: fixed multiple selection bug when selecting a collapsed node

  • TreeViewNodeDropSupport: added “Expand Node On Hold” option with customizable delay

  • UICursors: static methods changed to fields so now they can be replaced

  • v1.15.0

  • added ListViewEnum with ListViewEnum wrapper to work with any enums

  • reduced memory allocations

  • all classes with INotifyPropertyChanged support now also implements IObservable which works without memory allocations

  • Autocomplete, Combobox: added field ParentCanvas, it used as ListView parent on open

  • Combobox: toggle-button is now full width

  • ContextMenu: now works correctly with all canvas render modes

  • DateScroller/DateTimeScroller/TimeScroller: ScrollBlock replaced with ScrollBlockBase

  • Dialog: added InactiveDialogs and AllDialogs properties to get access to the template instances

  • Dialog: DialogButton now support callback with Func<DialogBase dialog, int buttonIndex, bool closeDialog> type

  • EasyLayout: small improvements

  • EasyLayout: Filter property is obsolete and replaced with ShouldIgnore

  • Input System support: fixed bug on mobile devices

  • ListView: added property TemplateSelector, its allow to use of different templates (not only DefaultItem) depending on the item

  • ListView: added GetDebugInfo and PringDebugInfo methods

  • ListView: added “AnimationCurve animation, bool unscaledTime, Action after = null” parameters to the ScrollTo*Animated methods

  • ListView: StopScrollAtItemCenter and StopScrollInertia properties

  • ListView: fixed problem with not displayed items for ListType with variable sizes

  • ListView: added GetComponentsEnumerator to iterate through DefaultItems instances as allocation free replacement of the ForEachComponent method

  • ListView: added support of Container with custom scale

  • ListView: fixed AutoScroll bug

  • Notification: NotificationButton now support callback with Func<NotificationBase notification, int buttonIndex, bool closeNotification> type

  • Paginators: added OnMovement event

  • Popup: added content and onClose parameters to the Show method, added SetContent() method, added OnClose field, works the same way as dialog

  • Resizable: added UseCanvasScaler option, if enabled ActiveRegion will be changed according to the CanvasScaler settings

  • ScrollBlock: added OnItemChanged event to customize items depending on index and value

  • ScrollBlock: added ScrollBlockBase and ScrollBlockCustom classes

  • TracksViewBase: ScrollBlock replaced with ScrollBlockBase

  • TreeView: fixed drop support bug

  • TreeView prefabs: toggle arrow is now nested

  • UICursor: added Replacement function to replace cursor (can be used to replace cursor on High DPI screens)

  • Utilities: more functions moved to the new UtilitiesUI and UtilitiesRectTransform classes

  • v1.14.2

  • added CircularSlider widget

  • added SliderScale widget

  • added TimeAnalog widget

  • Accordion: added OnStartToggleAnimation and OnDataSourceChanged events

  • Accordion: added AccordionHighlight component

  • AutoComplete: added OnItemNotFound and OnCancelInput events

  • AutoCombobox: added AddItems option (requires overridden Input2Item method)

  • CenteredSlider: event OnValuesChange renamed to OnValueChanged

  • Connectors: fixed bug related to “Scale With Screen Size”

  • Connectors: added rectangular lines support

  • Cursor: fixed flickering

  • DatePicker and DateTimePicker: fixed initial date

  • DirectoryTreeView: nested nodes are automatically loaded on node expand from a script

  • DirectoryTreeView: added ExpandPath(), Path2Node(), Path2NearestNode(), RefreshDirectories() methods

  • ListView: fixed highlight coloring on navigation

  • ListView: fixed unstoppable auto-scroll bug

  • ListView Drop Support: added ReceiveOnlyEmptyNode option

  • RangeSlider: event OnValuesChange renamed to OnValuesChanged

  • Resizable: fixed position change

  • ScrollBlock: added AllowIncrease and AllowDecrease fields

  • Spinner: added SetValue() method to change value without OnChangeEvent invocation

  • Styles: fixed error when creating a new style

  • Styles: added PixelsPerUnitMultiplier property to the Image styles

  • TreeGraph: small performance improvement

  • TreeGraph: added LineThickness, LineType, LineMargin options

  • TreeView: added ScrollWithIndent option

  • Widgets Generation: improved localization support

  • v1.14.1

  • EasyLayout: reduced memory allocations

  • Widgets Generation: fixed type name error

  • Widgets Generation: fixed missing reference

  • v1.14.0

  • added localizations integration support

  • added I2 Localization support

  • added ContextMenu

  • added Input System support

  • added UtilitiesCompare class

  • added ScrollRectFooter

  • added AutoComboboxIcons prefab

  • Dialog, Picker, Popup: added CloseButton property

  • EasyLayout: added SetPreferredAndFitContainer option for the Children Size

  • ListView: added Header property

  • ListViewPaginator: added LoopedList support

  • Notification: added “content” and “onReturn” parameters to the Show() method

  • Style: fixed unchangeable settings after “Apply Fast Settings” use

  • Style: added “Update Default Style” option, which is opposite of the “Apply Default Style”, it gets style settings from widgets and saves them to the current style

  • Tabs: added CanSelectTab field to check if tab can be selected with a button click.

  • TabsCustom: TabButton class changed to the generic class TabButton

  • Widgets Generation: generated classes are partial now

  • Widgets Generation: added AutoCombobox widget

  • Utilities: most functions moved to the new Utilities* classes

  • v1.12.5

  • added UIFlareGlobal shader: flare at global space

  • added Ripple effect

  • UIWidgets extensions methods moved to UIWidgets.Extensions namespace

  • EasyLayout extensions methods moved to EasyLayoutNS.Extensions namespace

  • shaders: replaced properties names with properties IDs

  • Dialog: Show() arguments can later be changed with other methods: SetInfo(), SetButtons(), FocusButton(), SetPosition(), SetContent(), SetCanvas(), SetModal().

  • EasyLayout: added GetElementPosition to get position in group

  • InputFieldExtended: fixed bug with Value property (thanks to RickSaada1)

  • ListView: added ItemsEvents field

  • ListViewItem: now foreground and background graphics are serialized properties

  • Notify: added buttons support with SetButtons(IList buttons) method

  • ProgressbarIndeterminate: fixed bar jump at the start

  • TableHeader: fixed bug with ColumnToggle (thanks to jbw)

  • UIFlare shaders: added flare delay property

  • v1.12.4

  • Unity 4.6+ and Unity 5.x no more supported, now the oldest supported version is 2017.4

  • fixed SendMessage warnings in Unity 2019.3 and later versions

  • assembly definitions removed because of the all changes in .asmdef files are deleted on package update

  • ListView: DefaultItem no more disabled by default in Editor mode

  • ListViewDragSupport: added auto-scroll when the drag is near the border

  • Notify: now you can create derived classes with NotificationCustom

  • TreeView Drag&Drop: now nodes can be reordered

  • v1.12.3

  • added Pinchable component: drag, rotate, resize multi-touch support

  • added ListViewAutoResize component: auto-resize ListView or TileView according to items counts until specified maximum size reached

  • [Serializable] attribute of TreeNode class not available for Unity 2020.1 and later versions

  • ListView: added DisableScrollRect property to disable ScrollRect if ListView is not Interactable

  • ListView and TreeView Drag&Drop: added Interactable support

  • v1.12.2

  • added DistanceLines component

  • added UI Cursor settings component

  • Dialog: fixed buttons order

  • DirectoryTreeView: fixed drives list

  • ListViewPaginator, ScrollRectPaginator: fixed LastPageFullSize option

  • ListView: now resize of disabled ListView processed correctly

  • v1.12.1

  • added converter from Unity Text to TextMeshPro text

  • added IUpgradeable interface to improve compatibility between versions

  • added Groupable component

  • added UIFlareTransparent shader

  • added ResizableHandles component

  • added Rotatable component

  • added RotatableHandle component

  • deleted a lot of lambda functions

  • other lambda functions replaced with local functions

  • renamed classes *Utilites to *Utilities

  • improved performance with Asset Pipeline V2

  • Combobox: fixed navigation support

  • Draggable: added Target property to drag the specified target instead of self

  • DragSupport: added AllowDrag field

  • DropSupport: added ReceiveItems and ReceiveNodes fields for the base classes

  • ListView: not selectable items are no more highlighted and navigated

  • ListViewPaginator, ScrollRectPaginator: added LastPageFullSize option to change the last page size to full-page size

  • Resizable: AllowResize renamed to Interactable

  • Resizable: added resize type to change between size and scale

  • Resizable: added Target property to resize the specified target instead of self

  • ScrollRectEvents: RequiredMovement replaced with Thresholds to support separate thresholds for each pull direction

  • Splitter: AllowResize renamed to Interactable

  • Widgets Generation: added option to manually specify the type name if the type cannot be detected from the MonoScript

  • v1.11.2

  • added TracksView to create custom schedule or time-line widgets

  • added InputFieldAdapter to improve TextMesh Pro support

  • added ListComponentPool

  • added SplitButton

  • Dialog: added RectTransform content and Action onClose parameters to Show(…) method

  • Dialog: added OpenedDialogs property to get list of the opened dialog

  • Dialog: DefaultButton replaced with ButtonsTemplates and DialogActions now has option to specify button index for the button template

  • Dialog: type of the “buttons” parameter in the Show() method changed to IList

  • Dialog: added “Func<int, bool> onCancel” parameter to the Show() method, called with -1 parameter when dialog closed with top right close button

  • DragListener: OnDragListener renamed to DragListener

  • DragSupport: added optional DragHandle property, you can use it drag ListView items by specified handle instead of the whole item

  • DragSupport: added StartDragEvent and EndDragEvent

  • EasyLayout: added ElementsRotate and ElementsRotationStart for Ellipse layout

  • ListView: improved navigation support

  • ListView: added optional parameter minVisiblePart to IsVisible() method

  • ListView: replaced old ListView with ListViewString

  • ListView: added Virtualization setting to disable Virtualization

  • ListViewDropSupport: added DropPosition parameter

  • ListViewPaginator: now use ListView.ScrollToAnimatedPosition instead of the own animation

  • Notify: fixed incorrect size and rotation of next notification if previous notification was closed during hide animation

  • Resizable: added AllowResize property to enable/disable resize without removing component

  • ScrollBlock: SetText() renamed to UpdateView()

  • ScrollRectPaginator: ForceScrollOnPage replaced with ForcedPosition to support different positions

  • v1.11.1

  • added AutocompleteCombobox

  • ListView: fixed scrolling bug with variable size list types

  • Notify: renamed AnimationRotate to AnimationRotateVertical, AnimationCollapse to AnimationCollapseVertical

  • Notify: added animations AnimationRotateHorizontal, AnimationCollapseHorizontal, AnimationSlideRight, AnimationSlideLeft, AnimationSlideUp, AnimationSlideDown

  • Notify: added configurable animations AnimationRotateBase, AnimationCollapseBase, AnimationSlideBase

  • Resizable: added OnResize event

  • Splitter: added OnResize event

  • Tabs: added SelectedTabIndex property

  • v1.11.0

  • added ScrollRectHeader (example of usage in Examples/ListView/ListViewHeader scene)

  • added EasyLayoutEllipseScroll

  • Combobox: added OnShowListView and OnHideListView events

  • EasyLayout: added new layout type Ellipse

  • EasyLayout: added new option ResetRotation

  • ListView: added DestroyDefaultItemsCache, if enabled instances of the previous DefaultItem will be destroyed when replacing DefaultItem

  • ListView: added new ListViewEllipse list type

  • Scroller: renamed to ScrollBlock

3 Likes

Hi ilih
Im trying to use the combobox widget, but i have issues with using a scaling canvas (“Scale With Screen Size”) and different aspects.
The listbox items seem to ignore the resolution scale of the canvas entirely, meaning that the added items are either too small or too large for the listview.

Replace line 245 in ListViewBase.cs
old line

                x.transform.SetParent(Container);

new line

                x.transform.SetParent(Container, false);

Perfect, Worked like a charm.

Hi ilih
Still learning from the documentation, but i encountered some minor issues though that you might want to look at:

  1. List View doesnt have clear method, Listview.Items.Clear does nothing.
  2. Listview remove worked as workaround, but that method only works with strings, the remove(listviewitem) is broken
  3. Combobox should also close if you clicked outside the list. ( standard combobox behavior )
  4. in a combobox, when selecting the currently selected, it does not close the combobox but instead deselects the item instead.

Clear method will be added with next update.
Workaround for ListView

        listView.Strings = new List<string>();

Workaround for ListViewIcons

        listViewIcons.Items = new List<ListViewIconsItemDescription>();

Misprint with access modifiers.
ListViewBase.Remove(ListViewItem) should be protected, not public.
ListViewCustom.Remove(TItem item) should be public, not protected.

Will be available with next update.

Quick fix for this
Replace line 282 in ListViewBase.cs
old line

if (IsSelected(index))

new line

if (IsSelected(index) && Multiple)

Replace line 289 in ListViewBase.cs
old line

if (selectedIndex!=-1)

new line

if ((selectedIndex!=-1) && (selectedIndex!=index))

Replace line 346 in ListViewBase.cs
old line

if (IsSelected(index))

new line

if (IsSelected(index) && Multiple)

24 Hour Deal: 50% off New UI Widgets

is this mobile (android and ios) ready?

Does the list view pool renderers and only use game objects for visible elements? or does it populate the list with game objects for every element?

Works on Android. It don’t have platform specific code, so it should works on iOS too.
You can try Android Demo (This demo may have problem with devices don’t supported non-power-of-2 textures)

For every element. Working on using game objects only for visible elements.

Are the UI widgets controller friendly?

No.

Fixed in version 1.3.1. It’s already released.

hi
does this come with (or can you add if not) a working knob (like a volume control knob).

thanks

No.

I’ll think about it.

well that’s not much good to me is it! will you add it or not? if so ill buy, if not i wont, please could you give a definitive answer?

thanks

It takes some time to research, so I’ll give answer at Tuesday or Wednesday.

How do I pragmatically (using C#) add elements (new icons and text) to the ListViewIcons widget?

Jason

Create one or more ListViewIconsItemDescription and add them with ListViewIcons.Add or ListViewIcons.Items.

using UnityEngine;
using System.Collections.Generic;
using UIWidgets;

public class TestListViewIcons : MonoBehaviour {
    [SerializeField]
    ListViewIcons listViewIcons;

    [SerializeField]
    Sprite icon;

    [SerializeField]
    List<Sprite> icons = new List<Sprite>();

    public void ListViewIconsSamples()
    {
        //Add item
        var new_item = new ListViewIconsItemDescription() {
            Icon = icon,
            Name = "item 1"
        };
        listViewIcons.Add(new_item);
       
        //Add items
        var add_items = new List<ListViewIconsItemDescription>() {
            new ListViewIconsItemDescription() {
                Icon = icons.Count > 0 ?  icons[0] : null,
                Name = "item 1"
            },
            new ListViewIconsItemDescription() {
                Icon = icons.Count > 1 ?  icons[1] : null,
                Name = "item 2"
            },
            new ListViewIconsItemDescription() {
                Icon = icons.Count > 2 ?  icons[2] : null,
                Name = "item 3"
            },
        };
        var new_items = listViewIcons.Items;
        new_items.AddRange(add_items);
        listViewIcons.Items = new_items;
       
        //Replace items
        listViewIcons.Items = add_items;
    }
}

Thank you very much for the quick response.

Jason