- General: Added a
dispose()
method toFeathersControl
to allow UI components to be optionally disposed when they are no longer needed. Clears data providers, removes sub-components, removes selection, and some event listeners. Developers are not required to calldispose()
, but it can help with garbage collection and general cleanup. - Collapsible: New component with a header and content, where toggling the header shows and hides the content.
- DragDropManager: Added support for drag-and-drop. Used by
ListView
andGridView
. Includes newdrag-and-drop
andlist-view-drag-and-drop
sample projects. - Default Theme: Improved sizing of all UI control skins by detecting if currently running on mobile or desktop.
- New Sample:
custom-layout-group-item-renderer
demonstrates how to create a subclass ofLayoutGroupItemRenderer
. - New Sample:
anchor-layout-three-column-header-and-footer
to demonstrate a common app layout with a header on top, three vertical columns in the middle, and a footer on the bottom. - AnchorLayout: Improve error messages in when
relativeTo
is a circular reference or has a different parent. - AnchorLayout: An
Anchor
constructor can now be called with zero arguments to allow it to be used declaratively. - AssetLoader: Added
sourceScale
property to specify which scale factor thesource
was designed for, allowing it to be scaled for the current scale factor. - BaseScrollContainer: The default step value is now
1.0
. - BaseScrollContainer: Ignore keyboard navigation events if the current stage focus is a
TextField
of typeINPUT
. - BaseScrollContainer: Added
scrollBarsCornerSkin
style to optionally display a skin in the corner between the horizontal and vertical scroll bars, when both are displayed and fixed. - BaseScrollContainer: Fixed missing
Event.SCROLL
when automatically snapping to minimum or maximum. - Callout: Fixed issues where
Event.RESIZE
listener on content was added to early. - Callout: Fixed null exception when validating without an
origin
. - ComboBox: Added
text
getter to get the text of the currently selected item. - ComboBox: Fixed setting
selectedIndex
orselectedItem
inEvent.CLOSE
listener getting ignored. - ComboBox: Fixed
selectedItem
setter when the list view is opened. - ComboBox: Fixed missing
ListViewEvent.ITEM_TRIGGER
dispatch onKeyboard.ENTER
. - Data Containers: Fixed previous animation not getting cancelled when new animation duration is
0.0
. - Data Containers: Added support for raw
String
values in data providers for all targets. - Data Containers: Added new
itemToItemState()
method to get the state object passed to the item renderer recyclers in other contexts. - Data Containers: Scrolls an item renderer into view when it is triggered.
- Data Containers: When using keyboard to navigate, and selection does not change, scroll to display that item, if not completely in view port.
- DatePicker, PopUpDatePicker: Added keyboard navigation with arrow keys, page up/down, home, and end.
- DefaultFocusManager: Fixed focus indicator being rendered on mouse focus change because a flag wasn't cleared.
- Default Theme: Explicitly sets
bold
,italic
, andunderline
tofalse
instead ofnull
to ensure that the previousTextFormat
does not affect the new value. - Default Theme: Instead of setting background skins on
GridView
andTreeGridView
cells, set them on the row renderers that contain the cells. - DisplayObjectFactory, DisplayObjectRecycler: Automatically calls
dispose()
on destroying a view created withwithClass()
, unless a custom destroy function is provided. - DisplayObjectRecycler: Added
withFactory()
method to convert aDisplayObjectFactory
to aDisplayObjectRecycler
. - Drawer: Added
animateOpenProperty
property, to control whether settingopened
should trigger with animation or not. See also newopenDrawer()
andcloseDrawer()
methods. - FeathersControl: Added
disabledAlpha
property to automatically change thealpha
property whenenabled
is set tofalse
. - FeathersControl: Added
alwaysShowFocus
property to show focus indicator on both mouse focus change and key focus change. - FormItem: Fixed failure to listen for
Event.RESIZE
from content. - FormItem: Fixed measurement of
requiredSkin
when it implementsIMeasureObject
. - FormItem: Fixed meaurement of
content
when setting the content'swidth
may change itsheight
, such as wrapping text. - FormItem: Ensure that
Event.RESIZE
is dispatched when showing or hidingrequiredSkin
or changing text. - FormLayout: Fixed incorrect text column width measurement because the old value was not cleared.
- General: Fixed issues with macros when using Haxe 5 nightly builds.
- General: Fixed issue with
__restrict
variable name when compiling for HashLink/C. - General: Added
@:inspectable
metadata to certain properties, to allow them to be customized by GUI developer tooling. - General: Added a number of extra
null
checks forMeaurements
values. - General: Use unsafe casts when type is known by checking with
is
first, for improved performance. - General: Use
-dce no
when building .swc file for Flash, so that Haxe standard library is not modified. - General: Removed workaround for HashLink's broken
array.resize()
when targeting Haxe 4.3 and newer because the issue was fixed. - GridView, TreeGridView: Fixed a number of issues with
customColumnWidths
. - GridView, TreeGridView: Fixed
TriggerEvent.TRIGGER
not getting dispatched by row renderers. - GridView, TreeGridView: Fixed row getting incorrectly selected when clicking focusable child.
- GridView, TreeGridView: Added
headerCornerSkin
style to optionally display a skin in the corner between the headers and scroll bar. - GridView, TreeGridView: Fixed
headerRendererFactory
not allowing an explicit height to be set on headers. - GridView, TreeGridView: Added
rowRendererFactory
to allow the row renderers to be customized. - GridView, TreeGridView: Fixed
RangeError
when inserting an extra column before other columns. - GridView, TreeGridView: Fixed positon of new cell renderer when a column is inserted after validation.
- GridViewHeaderState: Added
sortOrder
property. - Header: Fixed
LAYOUT
invalidation flag getting ignored. - Header: Added missing
setPadding()
convenience method. - HDividedBox, VDividedBox: Improved detection of which item should be considered fluid when resized.
- HDividedBox, VDividedBox: Added missing handling of
includeInLayout
property. - HDividedBox, VDividedBox: Fixed
removeRawChildren()
, which was calling itself instead ofremoveChildren()
. - HDividedBox, VDividedBox: Fixed programmatic change of child
width
orheight
not being reflected in layout. - HProgressBar, VProgressBar: Added
indeterminate
property andindeterminateFillSkin
style to allow the progress bar to display an indeterminate animation. Also addedindeterminateDuration
style. - HScrollBar, VScrollBar: added optional decrement and increment button factories and
showIncrementAndDecrementButtons
style. - IDragDropLayout: New interface for implementing drag-and-drop for a custom layout.
- ItemRenderer, LayoutGroupItemRenderer: Added
showHoverAndDownStates
property to allow those states to be disabled for item renderers that are non-interactive. - ItemRenderer, LayoutGroupItemRenderer: Fixed custom hit test for focusable objects.
- Label: Fixed being focusable when text is not selectable.
- LayoutGroup, ScrollContainer: Added new
collectChildren()
method to return an array of all children in the layout. - LayoutGroup, ScrollContainer: Fixed detection of automatic child removal when added to another container without manually removing from original parent.
- LayoutGroup, ScrollContainer: Added new
readjustLayout()
method to allow a manual layout update when no events are dispatched. - Layouts: Fixed some missing checks for
includeInLayout == false
on items. - ListView, GridView: Added
dragEnabled
,dropEnabled
, andremoveOnDragDropComplete
properties to enable drag-and-drop behaviors. - LongPress: Added
maxMoveDistance
property to allow the gesture to be cancelled if the pointer moves too far between start and end. - Navigators: Added
withFactory()
method to create views with aDisplayObjectFactory
. - PageNavigator, TabNavigator: Fixed measurement of content when
autoSizeMode == CONTENT
. - PageNavigator, TabNavigator: Optimize setting data provider to
null
by callingremoveAllItems()
. - Panel: Fixed
Event.RESIZE
listener for footer incorrectly being removed from header instead, which could lead to null exception. - Panel: Fixed measurement when changing header
width
causes itsheight
to change, such as with wrapping text. - PopUpListView: Fixed missing stage
null
checks. - PopUpManager: added
bringToFront()
method to change a pop-up's depth to the top. - Skinning: Added
ButtonMultiSkin
,ToggleButtonMultiSkin
, andTextInputMultiSkin
to be used in declarative environments, such as MXHX. - StyleMacro: Hide deprecation warnings for generated methods that users have no control over.
- TextArea, TextInput: Added optional
errorFocusRectSkin
style that takes precedence overfocusRectSkin
forTextInputState.ERROR
. - TextArea: Fixed wrong default variant for the error callout.
- TextArea, TextInput: Added
errorStatePriority
andfocusedStatePriority
properties to customize state precedence when focused anderrorString
is non-null. - TextArea, TextInput: Fixed wrong value returned by
errorString
setter. - TextArea, TextInput: Fixed prompt not rendering differently when disabled by using
disabledTextFormat
. - TextArea, TextInput: Added
errorCalloutFactory
property to allow the error callout to be customized. - TextArea, TextInput: Fixed missing styles on prompt text if prompt was initially
null
and added after the first validation. - ToggleButton: Fixed
!=
comparison that should have been==
that causedhtmlText
to fail to update. - ToggleSwitch: Added
onText
andoffText
properties to optionally display text on each side. - ValidatingSprite: Fixed "all" invalidation flag never getting cleared, causing too many validations.
- ValidatingSprite: Optimize invalidation flag checks.
- VerticalListFixedRowLayout: Fixed only one item getting displayed in view port, even though view port was sized to display more items, because of a missing dispatch of
Event.CHANGE
.
- General: Haxe 4.3 compatibility. When upgrading to Haxe 4.3, you should also upgrade to OpenFL 9.2.2 and Lime 8.0.2.
- General: Improved performance by fixing a number of unnecessary
setInvalid()
calls that threw exceptions whenfeathersui_strict_set_invalid
was defined. - AnchorLayout: Fix measurement of items where setting width or height causes the other dimension to resize too.
- BaseScrollContainer: Improved performance by refactoring the code that determines if scroll bars are necessary.
- Data Containers: Added new
itemToEnabled
function, which may be used to customized theenabled
property of item renderers. - Data Containers: Improved performance by avoiding calls to
DisplayObjectRecycler.update
andDisplayObjectRecycler.reset
when item state has not changed. To restore the original behavior temporarily, set the newforceItemStateUpdate
property totrue
. - Data Containers: Improved performance by fixing an issue where item renderers were sometimes destroyed and recreated on first validation.
- Data Containers: Improved performance of
updateAt()
andupdateAll()
collection event handling. - Data Containers: Fixed issue where view port scroll positions weren't always updated.
- Data Containers: Fixed issue where additional recyclers added with
setItemRendererRecycler()
didn't always receive the defaultDisplayObjectRecycler.update
andDisplayObjectRecycler.reset
methods. - Drawer, PageNavigator, TabNavigator: Fixed
simulateTouch
not working properly after first touch simulated by a mouse event. - HorizontalListLayout, VerticalListLayout: Improved performance by allowing up to 5 "cache misses" when calculating the estimated size of items that are not visible, which helps to avoid destroying and recreating items unnecessarily in some situations.
- HorizontalListLayout, VerticalListLayout: Dispatch
ScrollEvent.SCROLL
when a layout shift is needed after replacing a virtual item with a real item. - HScrollBar, VScrollBar: Fixed drag behavior of track when padding is used.
- LayoutGroup: Now detects if layouts dispatch
Event.CHANGE
during theirlayout()
method, where previously, it listened only between validations. - LayoutGroup: Fixed exception where calling
addChild()
with an existing child at index 0 could result in an exception. - NumericStepper: Added new
enableButtonsAtRangeLimits
property to automatically disable decrement button at minimum value and increment button at maximum value. - NumericStepper: Fixed issue where decrement and increment buttons might not be ignored when disabled.
- PageIndicator: Fixed up and down arrow keys changing value in wrong direction.
- RouterNavigator:
Location
object on non-html5 targets now has atoString()
method to match the behavior of html5. - ScrollEvent: Added new
x
andy
properties. - Scroller: Added new
applyLayoutShift()
method (advanced) that may be used with containers that support virtual layouts to adjust the layout after a virtual item's size is calculated to adjust from the previous estimated size. - StackNavigator: Added new
popMultipleItems()
method to allow popping to any arbitrary position in the history, instead of only one item or to the root. - ValidatingSprite: Added new
runWithInvalidationFlagsOnly()
method to run some code wheresetInvalid()
calls will be redirected tosetInvalidationFlag()
instead, to avoid multiple validations. - Defines: Added new
feathersui_strict_set_invalid
define that will throw an exception ifsetInvalid()
is called during validation. Useful when developing custom components or item renderers to find performance issues. See also:runWithInvalidationFlagsOnly()
orrunWithoutInvalidation()
.
- ActivityIndicator: New component to display indeterminate progress with animation.
- AssetLoader: Fix calculation of
minWidth
andminHeight
during measurement. - BaseScrollContainer: view port mask extends under scroll bars, if scroll bars are fixed.
- Collections: Fixed incorrect results from
indexOf()
andlocationOf()
during filter and sort refresh. - ComboBox: Fixed issue where
ListView
closes without selection when clicked, iffocusManager
is null. - Data Containers: When using arrow keys to navigate, scroll position may be updated, even if selection is not updated.
- DefaultFocusManager: Respects
isDefaultPrevented()
onmouseFocusChange
event. - DonutSkin: New skin class that is similar to
CircleSkin
, but with an inner radius that is not filled. - DropDownPopUpAdapter: Added
closeOnPointerActiveOutside
property to customize behavior. - GradientBoxTransform: New enum that may be used to define gradient line/fill styles to skins. Previously, line/fill styles accepted a
Float
rotation value or aMatrix
only. Those are still supported, but this enum makes customization easier. - GridView: Fixed incorrect height measurement of cells if the content might change after the first validation.
- GridView, TreeGridView: Fixed issue where automatically populated columns were not updated when passing new value to
dataProvider
property. - GroupListView, TreeView, TreeGridView: Fixed missing selection refresh after filter or sort change.
- HorizontalLayoutData: Added
marginLeft
andmarginRight
properties to affect gap between individual items. - HorizontalLineSkin, VerticalLineSkin: Added padding properties to optionally add extra empty space to the sides of the line.
- HorizontalLineSkin, VerticalLineSkin: Fixed issue where alignment properties were incorrectly defined as fields instead of getters/setters. They should have invalidated the skin on change.
- HorizontalListLayout, VerticalListLayout: Fixed minimum column/row count not affecting the calculated minimum width or height of all content.
- HProgressBar, VProgressBar: Added
fillMode
property, which can beRESIZE
(default, same as old behavior), but alsoSCROLL_RECT
orMASK
. - Label: Added
VARIANT_DANGER
to highlight errors and other important messages. - Layouts: Fixed calculation of view port bounds when combining requested column/row count and padding/gap.
- NumericStepper: Does not override increment and decrement button text if text is already set in button factory.
- PageNavigator, TabNavigator: Fixed issue where setting
selectedIndex
orselectedItem
before the first validation was ignored. - PopUpListView: Fixed null exception on mouse focus change, if
relatedObject
is missing. - Radio: Arrow keys are ignored for selection changes if
keyLocation
isD_PAD
. - Samples: Added new dark-mode sample to demonstrate switching between light and dark mode with the default theme.
- Samples: Added new numeric-stepper-button-layouts sample to demonstrate the different ways that the buttons can be positioned relative to the text input.
- ScrollContainer: Added
manageChildVisibility
property to allow container to changevisible
property on all children during scrolling to optimize rendering. - Scroller: Calls
preventDefault()
when handling mouse wheel event to prevent page from scrolling on html5 target. - TextArea, TextInput: Added
showPromptWhenEmptyAndFocused
(default: true) to allow hiding the prompt on focus. - TextCallout: Added
wordWrap
property. - TextInput: Set
TextField.type
on creation to avoid focus issue in OpenFL 9.2.0 and older. - VerticalLayoutData: Added
marginTop
andmarginBottom
properties to affect gap between individual items. - Fixed issue in some components where setting a custom child variant would cause children to be recreated on every validation, which wasn't necessary.
- If
feathersui_disable_default_theme
is defined, default styles will not be initialized at all by components. - If
feathersui_innogames_openfl
is defined, some things may behave differently for better compatibility with the innogames/openfl fork. - Added
@:bindable
meta to certain properties that dispatch events. Not used for anything now, but available for future enhancements. - Added include.xml to automatically add openfl and actuate as dependencies (previously, they needed to be added manually).
- BaseScrollContainer: Fixed touch claim not being cleared when
simulateTouch == true
- ComboBox: Fixed pop-up list view closing immediately on button click if
openListViewOnFocus == true
. - Various: Fixed exception when
layout
isnull
. - Various: Fixed
selectedItem
failing to update after settings newdataProvider
.
- BaseNavigator: Fixed navigator sometimes failing to resize the "next" view in transition correctly.
- BaseScrollContainer: Fixed issue where the view port did not receeive updated
scrollX
andscrollY
values in some situations. - CalendarGrid: Removed deprecated class. Replaced by
DatePicker
in beta.9. - ComboBox: Fixed duplicate
Event.CHANGE
dispatch when selected item changes. - ComboBox: Fixed issue where up and down arrow keys would sometimes go to the wrong index after opening the pop-up
ListView
. - ComboBox, PopUpListView: Fixed
selectedIndex
being cleared to-1
instead of resetting to0
whendataProvider
is replaced. - Data Containers: Fixed
selectedItem
setter sometimes failing to detect that theselectedIndex
is different, andEvent.CHANGE
needs to be dispatched. - ExclusivePointer: Removed deprecated
claimPointer()
,getClaim()
, andremoveClaim()
. Replaced with separate APIs for mouse and touch claims in rc.1. - GridView, TreeGridView: Fixed non-string values being incorrectly treated as strings when columns are not defined and are auto-populated with reflection instead.
- GridViewHeaderRenderer: Removed deprecated class. Replaced by
SortOrderHeaderRenderer
in rc.1. - GroupListView, TreeView, TreeGridView: Fixed failure to clear selected item after removing or replacing it (or a parent branch, for trees) in the
dataProvider
. - GroupListView, TreeView, TreeGridView: Fixed clearing the layout's virtual cache when the layout changes. Was incorrectly clearing a different array.
- GroupListView, TreeView, TreeGridView: Fixed performance issue caused by calculating the total number of items in the layout too frequently.
- GroupListView, TreeView, TreeGridView: Fixed performance issue caused by traversing the entire
dataProvider
when it was necessary to loop through only part of it. - ItemRenderer: Fixed issue where changing the
secondaryText
tonull
and repopulating later would result in the wrong text format. - Route: Removed deprecated
injectState()
andrestoreData()
. Replaced byupdateState()
in beta.9. - ScrollContainer: Fixed issue where the view port may not be updated often enough for layouts that implements
IScrollLayout
. - TreeView, TreeGridView: Fixed failure to update open branches after removing or replacing an item in the
dataProvider
. - magic-8-ball-chat: New sample project that demonstrates how to create a chat client with the
ListView
component.
- AssetLoader: Uses a mask when the
scaleMode
makes the content larger than the bounds of the loader. - BaseScrollContainer: Added
ScrollMode.MASKLESS
to allow scrolling without usingmask
orscrollRect
. May be useful for optimization, but children may appear outside the bounds of the container, so covering the edges is important. - CustomScaleManager, LetterboxScaleManager, ScreenDensityScaleManager: Added new properties similar to the constructor arguments to allow further customization after creation.
- ExclusivePointer: Deprecated
claimPointer()
,getClaim()
, andremoveClaim()
. Replaced with separate APIs for mouse and touch claims. Required because some environments return negative touch IDs, which were previously treated as either special values or invalid. - FadeTransitions: Removed deprecated class. Replaced by
FadeTransitionBuilder
in beta.6. - FeathersEvent: Removed deprecated
TRANSITION_START
,TRANSITION_COMPLETE
andTRANSITION_CANCEL
. Replaced byTransitionEvent
in beta.6. - FormItem: Can now set
required
property in constructor arguments. - GridView: Removed deprecated
CHILD_VARIANT_HEADER
constant. Replaced byCHILD_VARIANT_HEADER_RENDERER
in beta.4. - GridView, TreeGridView: Added missing
customCellRendererVariant
style property. - HorizontalLayout, VerticalLayout: Added new
percentWidthResetEnabled
andpercentHeightResetEnabled
properties. - ItemRenderer: Added
secondaryHtmlText
property to display secondary text as simple HTML. - OverAndUnderlineSkin: Removed deprecated class. Replaced by
TopAndBottomBorderSkin
in beta.3. - ResponsiveGridLayout: Added
setGap()
convenience function to set all gap properties. - ResponsiveGridLayout: Added new "xxl" breakpoint that defaults to 1400 pixels.
- ResponsiveGridLayout: Added
rowVerticalAlign
property to adjust the alignment of items within a row, along withjustifyResetEnabled
to customize how it works whenrowVerticalAlign
is set toJUSTIFY
. - ResponsiveGridLayoutData: Added
display
property (andmdDisplay
,lgDisplay
, etc.) to allow items to be hidden from certain breakpoints. - Scroller: When scroll position is less than minimum or greater than maximum by less than a pixel, snap with no animation duration so that continuous tapping won't make the scroller think it is still scrolling when there's no visual indication that it is anymore.
- SortOrderHeaderRenderer: Deprecated
GridViewHeaderRenderer
and replaced withSortOrderHeaderRenderer
because it may be used by other components too. - SlideTransitions: Removed deprecated class. Replaced by
SlideTransitionBuilder
in beta.6. - TransitionEvent: Extends
openfl.events.Event
instead ofFeathersEvent
. - TreeView, TreeGridView: Significant performance optimizations for
toggleBranch()
andtoggleChildrenOf()
. - TreeViewItemRenderer: Removed deprecated class. Replaced with
HierarchicalItemRenderer
in beta.8. - Themes: Added
feathersui_theme_manage_stage_color
define to allow the theme to set the stage color to match the theme. Disabled by default.
- BaseScrollContainer:
scrollMode
property defaults toMASK
instead ofSCROLL_RECT
to avoid forcex pixel rounding. - Button, ToggleButton: Does not trigger on space/enter key when a button's child has focus instead of the button itself. This isn't common with simple buttons, but
ItemRenderer
is a subclass, and it may have children that can receive focus. - CalendarGrid: Deprecated in favor of
DatePicker
. Hide the items in aDatePicker
header to make it behave like the oldCalendarGrid
. - General: All haxedefs to change Feathers UI behavior at compile time now start with
feathersui_
to avoid potential conflicts. Example:disable_default_theme
is nowfeathersui_disable_default_theme
. - General: More constructor arguments for UI components to automatically add listeners for common events.
- General: Children of data containers, like
ListView
, can receive tab focus. Data containers now implementIFocusContainer
. - HierarchicalItemRenderer: The disclosure toggle button is no longer allowed to receive tab focus.
- HierarchicalItemRenderer: Added
disclosureButtonFactory
property to customize the creation of the disclosure toggle button. - hn-reader: A new sample application that displays feeds from Hacker News, and uses URL parameters in
RouterNavigator
. - HorizontalLineSkin, VerticalSkinSkin: new properties to align the line to the edges or center.
- ItemRenderer: Fixed support for
Math.POSITIVE_INFINITY
as a validgap
value. - ItemRenderer: Respects the
includeInLayout
property of theaccessoryView
. - LayoutGroupItemRenderer: Added
alternateBackgroundSkin
, similar to the same property onItemRenderer
. - Route: Added
Route.withRedirect()
to allow a URL to automatically redirect to another. - Route: Deprecated
injectState()
andrestoreData()
. Use the newupdateState()
function instead, which replaces both. - Route: Static methods like
Route.withClass()
andRoute.withFunction()
replaceinjectState
function argument withupdateState
instead.updateState
accepts the newRouteState
type. - RouterNavigator: The order that routes are added is enforced on all targets when matching route URL paths.
- RouterNavigator: Route paths may now have parameters, like "/users/:id" where
:id
is a parameter. URL parameters are passed to the newupdateState()
function of theRoute
. - RouterNavigator: Now listens for
TextEvent.LINK
bubbled from the currently active view, and navigates if the event's text starts with "router:". For example, you can set thehtmlText
of aLabel
to<a href="text:router:/users/list">Show all users</a>
. If the user clicks this link, the navigator will navigate to "/users/list". Requires OpenFL >= 9.2.0. - Scale9Bitmap: When width or height is set smaller than
scale9Grid
corners/edges allow, scales corners down. - Text: Components with
htmlText
property now have astyleSheet
property. Requires OpenFL >= 9.2.0. - todomvc: New sample application based on the popular todomvc.com.
- TreeGridView: Left and right arrow keys behave similarly to
TreeView
, to open and close branches and jump between a branch and its children. - ValidatingSprite: Added public
validating
property to indicate if it is currently validating or not.
- TreeGridView: New component that displays a tree of hierarchical data with multiple columns, like a mix between
TreeView
andGridView
. - HierarchicalItemRenderer: New subclass of
ItemRenderer
that is used by bothTreeView
andTreeGridView
. Includes a toggle button to open and close branches, and an optional branch or leaf icon, in addition to the text, secondary text, icon and accessory provided byItemRenderer
. This component replacesTreeViewItemRenderer
, which is now deprecated and will be removed in a future update. - FlowRowsLayout: New layout that displays items in multiple rows. Starts by positioning items from left to right. When the combined width of items in a row reaches the width of the container, a new row will be created below. Similar to
TiledRowsLayout
, but the items may be different sizes. - BitmapDataCache: New utility class for sharing references to
BitmapData
that was loaded from a URL. - FormItem: Added
required
andrequiredSkin
properties, to optionally indicate if the form item is required. - FormItem: Added
submitOnEnterEnabled
property to allow form submission to be disabled when pressing the Enter/Return key for that specific item. Useful for components likeTextArea
, which needs to use Enter/Return to insert a line break in its text. - HScrollBar/VScrollBar: Minor tweak to the sizing behavior of the thumb to more accurately match the behavior of native scroll bars.
- IHierarchicalCollection: The
removeAll()
method now accepts an optional?location:Array<Int>
argument that may be used to remove all children from a specific branch.
- DatePicker: New component for selecting a date from a calendar view.
- FeathersControl: Added
disabledAlpha
property to change thealpha
value of the component when disabled. - FeathersControl: Added
setFocusPadding()
convenience method. - LayoutGroup: Prevents mouse/touch from reaching children when disabled.
- PopUpDatePicker: New component that displays a date as an input field, with a pop-up
DatePicker
. - RouterNavigator: Support for "hash" routing instead of URL routing. Will fall back to hash routing when loaded with the
file:
protocol. Can also setpreferHashRouting
to use hash routing as default. - RouterNavigator: Added optional
saveData
andrestoreData
methods toRoute
to allow a view's state to be saved when navigating away and restored when returning. - StackNavigator: Added optional
saveData
andrestoreData
methods toStackItem
to allow a view's state to be saved when navigating away and restored when returning. - TextArea, TextInput: Added
selectable
property, which can be set tofalse
to disable selection wheneditable
is alsofalse
. - TextArea: Added
setTextPadding()
convenience method. - stack-navigator-save-and-restore: New sample that demonstrates how to use the
saveData
andrestoreData
methods onStackItem
. - router-navigator-save-and-restore: New sample that demonstrates how to use the
saveData
andrestoreData
methods onRoute
.
- ArrayCollection, ArrayHierarchicalCollection: These collections now implement the
IExternalizable
interface. - BaseNavigator: Uses the new
TransitionEvent
instead ofFeathersEvent
for transition start, complete, and cancel events. This allows references to the views involved in the transition to be included as properties of the event. The old transition constants onFeathersEvent
are now deprecated and will be removed in a future version. - BaseNavigator: Now dispatches
Event.CHANGE
after a transition is completed, instead of at the start of the transition. - BaseScrollContainer: Added new
scrollMode
property that controls how scrolling is implemented on the OpenFL display list. This property may be set to eitherSCROLL_RECT
orMASK
. It defaults toSCROLL_RECT
, which was the existing behavior. - Transition Builders: An improved way to create transitions for navigators. The following transitions are implemented: Color Fade, Cover, Fade, Iris, Reveal, Slide, and Wipe.
- TreeView: Added
toggleChildrenOf()
method to open or close all children of a branch. - TreeView: Left and right keyboard arrow keys will open and close a branch.
- Various bug fixes.
- ArrayCollection: Added
toArray()
method to return a new array of the items in the collection (respecting filter and sort). - DefaultFocusManager: Handle focus changes with keyboard arrow keys, if they originate from
KeyLocation.D_PAD
. - HorizontalLayout, HorizontalListLayout, VerticalLayout, VerticalListLayout: The
gap
property may be set toMath.POSITIVE_INFINITY
to position items as far from each other as possible while staying within the container's view port bounds. UseminGap
to set the minimum spacing. - ItemRenderer: Added
showSecondaryText
property to optionally hide the secondary text, even if notnull
, similar to howshowText
works. - LayoutGroup, ScrollContainer: Added
maskSkin
to optionally mask the content of the container. ThemaskSkin
is resized automatically when the container resizes. Useful for masking with rounded corners or other non-rectangular shapes. - ScrollContainer: Added
viewPortMaskSkin
to optionally mask only the view port. Works similarly tomaskSkin
. - TiledRowsLayout, TiledRowsListLayout: New layout for containers that positions items as tiles (all items have equal dimensions) in one or more rows.
- PagedTiledRowsListLayout: A variation of
TiledRowsListLayout
that separates tiles across multiple pages instead of scrolling continuously. - Scroller: Added
snapPositionsX
andsnapPositionsY
properties that accept an array of snap positions, which is populated by subclasses ofBaseScrollContainer
, when a layout supports snapping. - A ton of stability and bug fixes!
- AssetLoader: Added new
originalSourceWidth
andoriginalSourceHeight
properties that return the original dimensions of the content, after loading completes. - BaseScrollContainer: Added new
restrictedScrollX
andrestrictedScrollY
that may be used instead ofscrollX
andscrollY
if it is necessary to clamp to theminimum
andmaximum
bounds. - Button, ToggleButton: Added new
showText
style to allow the text to be hidden so that it does not affect the layout (such as for a button that contains only an icon). - ButtonBar, TabBar: Added support for multiple button/tab renderers.
- ButtonBar, TabBar: Added a new
indexToButton()/indexToTab()
method to access one of the current renderers based on its position in the data provider. - Callout: New
closeOnPointerOutside
property that can be set tofalse
to prevent the callout from automatically closing when clicking or tapping outside of its bounds. - CalloutPopUpAdapter: New implementation of
IPopUpAdapter
that adds the content to aCallout
positioned near the origin. - ComboBox: Now allows the user to type a custom value. Will be returned by
selectedItem
, butselectedIndex
will be-1
. Set the newallowCustomUserValue
property tofalse
to restrict the value to only items from the data provider. - ComboBox: Added new
textToItem()
method that allows custom text to be converted into the same format as items in the data provider. - ComboBox, PopUpListView: Added a new
prompt
property to display some text when no item is currently selected. - DisplayObjectFactory: New class that's similar to
DisplayObjectRecycler
, but has onlycreate
anddestroy
functions. Noupdate
orreset
functions. - DropDownPopUpAdapter: Can now open above origin, if there is not enough space below the origin.
- FocusManager: The
addRoot()
method has been restricted to theStage
type only. To create a focus manager with a root other than the stage, use theDefaultFocusManager
constructor instead. - GridView: Added new
sortableColumns
,sortedColumn
, andsortOrder
properties that enable the user to sort the data provider by clicking a column header, or to sort the columns programatically. - GridView: Added new
CHILD_VARIANT_CELL_RENDERER
static constant to allow targeting ofGridView
cell renderers in a theme. - GridView: Renamed
CHILD_VARIANT_HEADER
toCHILD_VARIANT_HEADER_RENDERER
for consistency withCHILD_VARIANT_CELL_RENDERER
.CHILD_VARIANT_HEADER
is now deprecated and will be removed in a future update. - GridView: Added new
columnDividerFactory
andheaderDividerFactory
for displaying dividers between columns and column headers. - GridViewColumn: Added new constructor parameter to optionally set the width of the column.
- HorizontalLayout, VerticalLayout: Added new
justifyResetEnabled
property that will optionally reset the size of all items before measuring them. - HorizontalLayoutData, VerticalLayoutData: Added new
fillHorizontal()
,fillVertical()
, andfill()
static helper functions to quickly create an object withpercentWidth
,percentHeight
(or both) set to100.0
in a single function call. - HorizontalLineSkin, VerticalLineSkin: New skin classes that draw a simple line in the center.
- HorizontalListLayout, VerticalListLayout: Added new
heightResetEnabled
andwidthResetEnabled
(respectively) to reset the size of all items before measuring them. - IPopUpManager: Added new
hasModalPopUps()
,topLevelPopUpCount
, andgetPopUpAt()
APIs. - IScaleManager: New interface for custom application scaling behavior. Includes
ScreenDensityScaleManager
,LetterboxScaleManager
, andCustomScaleManager
implementations. - ItemRenderer: Addded new
accessoryView
property to optionally display a UI component on the right side of the item renderer. - ListView: Added new
VARIANT_POP_UP
static constant for list views that are added as pop-ups, for components likePopUpListView
andComboBox
. - NumericStepper: New UI component that displays a numeric value in a
TextInput
, with two buttons to increment or decrement the value. - PageIndicator: Added a new
indexToToggleButton()
method to access one of the current toggle butons based on its selection index. - PopUpUtil: Added new
isTopLevelPopUpOrIsContainedByTopLevelPopUp()
utility method. - TextArea, TextInput: All text is automatically selected when
showFocus(true)
is called. - TextArea, TextInput: Added new
errorString
property to optionally display validation errors in aTextCallout
when focused. - TextArea: Added new
displayAsPassword
property to mask the rendered text, similar to the same property thatTextInput
already had. - TextCallout: Added new
VARIANT_DANGER
static constant to optionally display the callout in a style that indicates something potentially dangerous or destructive. - TextInput: Added new
measureText
property, which can specify custom text to use when measuring the text input's ideal size. Similar toautoSizeWidth
, but uses a different value than the current value of thetext
property. - ValidationQueue: Uses
Event.RENDER
andstage.invalidate()
instead ofEvent.ENTER_FRAME
because it gives more stable results and doesn't run code every frame if no components need validation.
- Alert: New component to display a pop-up dialog with a message, a title, and an optional icon.
- AnchorLayoutData: New
fillHorizontal()
andfillVertical()
static methods. - Application: Added
topLevelApplication
static property to easily access the rootApplication
globally. - ArrayHierarchicalCollection: New collection type for hierarchical data containers, like
GroupListView
andTreeView
. - AssetLoader: Added missing
ProgressEvent.PROGRESS
dispatch when asset is loaded asynchronously. - BaseScrollContainer: New
getViewPortVisibleBounds()
utility method. - BaseScrollContainer: New
scrollPixelSnapping
property to allow snapping the scroll position to the nearest pixel. - BaseScrollContainer: New
scrollerFactory
property to customize theScroller
behavior. - BaseScrollContainer: New
showScrollBarMinimumDuration
style to ensure that scroll bars don't flicker when revealed by the mouse wheel. - ButtonBar: New component to display a set of buttons based on an
IFlatCollection
data provider. - Callout: Now automatically closes itself when its origin is removed from the stage.
- ComboBox: New
customButtonVariant
,customListViewVariant
andcustomTextInputVariant
styles to allow sub-component customization in themes. - ComboBox: New
openListViewOnFocus
property allows the pop-up list view to automatically open when theComboBox
receives focus. - ComboBox: Exposes
ListViewEvent.ITEM_TRIGGER
from the pop-up list view. - Drawer: New
clickOverlayToClose
,swipeOpenEnabled
andswipeCloseEnabled
properties. - DropDownPopUpAdapter: Forces the width of the pop-up to be at least as wide as the origin.
- Form: New component for displaying a group of fields to be submitted.
- FormItem: New component designed for use with
Form
to display a label next to each item. - General: Added new
setPadding()
convenience functions to allow settingpaddingTop
,paddingRight
,paddingBottom
, andpaddingLeft
to the same value in a single call. - GridView/GroupListView/ListView/TreeView: Methods like
scrollToIndex()
andscrollToLocation()
now accept an optional animation duration. - GridView: Added support for horizontal scrolling if the total width of the columns is larger than the width of the
GridView
. - GroupListView: New
customHeaderRendererVariant
property to allow sub-component customization in themes. - GroupListView/TreeView: New
locationToItemRenderer()
utilty method, similar toitemToItemRenderer()
. - Header: New component that displays a title in the center, plus optional views on the left and right sides.
- HScrollBar/VScrollBar: During touch interaction, if dragged out of range, the thumb will shrink like native scroll bars.
- HScrollBar/VScrollBar: New
hideThumbWhenDisabled
style that affects the thumb visiblility whenenabled
isfalse
. - IHierarchicalCollection: Added
filterFunction
andsortCompareFunction
, similar toIFlatCollection
. - IStageFocusDelegate: New interface that allows a component to specify one of its children to receive focus directly, when focus is passed by the
FocusManager
. - ITextControl: New
baseline
property, which may be used for alignment of multipleITextControl
instances together. - LeftAndRightBorderSkin: New skin class that is similar to
RectangleSkin
, but renders its border on the left and right sides only. - ListView: New
indexToItemRenderer()
utilty method, similar toitemToItemRenderer()
. - OverlineAndUnderlineSkin: Deprecated. Replaced by
TopAndBottomBorderSkin
. - PageNavigator: New
pageIndicatorFactory
andcustomPageIndicatorVariant
, andgap
properties. - PopUpListView: New
customButtonVariant
andcustomListViewVariant
styles to allow sub-component customization in themes. - Radio: Selection may now be changed with keyboard arrow keys when a radio in the group has focus.
- ScrollContainer: New
autoSizeMode
property, similar to the same property onLayoutGroup
. - TabBar: Dispatches
TabBarEvent.ITEM_TRIGGER
when a tab is triggered. - TabNavigator: New
tabBarFactory
andcustomTabBarVariant
styles to to allow sub-component customization. - TabNavigator: New
gap
style to add spacing between the active view and theTabBar
sub-component. - TabNavigator: Exposes
TabBarEvent.ITEM_TRIGGER
from the tab bar. - TextArea: If the
prompt
is too long to fit horizontally, it will now wrap to multiple lines. - TextArea/TextInput: New
maxChars
property to limit the number of allowed characters entered by the user. - TopAndBottomBorderSkin: New skin class that is similar to
RectangleSkin
, but renders its border on the top and bottom sides only. - TreeViewItemRenderer: New
branchIcon
,branchOpenIcon
,branchClosedIcon
, andleafIcon
styles.
- Restored support for OpenFL version 8.9.
- Application: Enables the new
ToolTipManager
by default. May usedisable_tool_tip_manager
haxedef to disable. - Application: Sets stage
scaleMode
andalign
for "flash" target so that using the compiled .swc in ActionScript behaves the same as compiling with Haxe. - AssetLoader: Added
@:styleContext
metadata. - FeathersControl: Added
toolTip
property. - FillStyle: Gradient matrix may now be specified as a
Float
for radians, aMatrix
instance, or a function that accepts the same arguments ascreateGradientBox()
and returns aMatrix
. - FillStyle: Added
None
to enum. - GridView: May optionally define a different
cellRendererRecycler
for each column. - GridView: Added
layout
style. - GridView: Added
extendedScrollBarY
style to allow the vertical scroll bar to extend up into the headers. - HorizontalListLayout: Added
requestedMinColumnCount
andrequestedMaxColumnCount
properties. - HorizontalListLayout: The
requestedColumnCount
property now defaults tonull
, instead of5.0
. - LineStyle: Gradient matrix may now be specified as a
Float
for radians, aMatrix
instance, or a function that accepts the same arguments ascreateGradientBox()
and returns aMatrix
. - LineStyle: Added
Bitmap()
to enum. - LineStyle: Added
None
to enum. - ListView: May optionally define multiple item renderer recyclers with
setItemRendererRecycler()
anditemRendererRecyclerIDFunction
. - ToolTipManager: listens for stage mouse events and displays tool tips for UI components with a
toolTip
property. - TreeView: May optionally define multiple item renderer recyclers with
setItemRendererRecycler()
anditemRendererRecyclerIDFunction
. - VerticalListFixedRowLayout: Added
requestedMinRowCount
andrequestedMaxRowCount
properties. - VerticalListFixedRowLayout: The
requestedRowCount
property now defaults tonull
, instead of5.0
. - VerticalListLayout: Added
requestedMinRowCount
andrequestedMaxRowCount
properties. - VerticalListLayout: The
requestedRowCount
property now defaults tonull
, instead of5.0
.
- animated-tween-skin: new sample project that demonstrates how to create a skin with animations.
- Button: added
textOffsetX
,textOffsetY
,iconOffsetX
, andiconOffsetY
properties. - BaseScrollContainer: allow multiple nested containers, where the deepest container gets precedence for touch gestures.
- Callout: added support for "arrow" skins.
- CellRenderer: removed because it is no longer needed. Use
ItemRenderer
forGridView
cell renderers instead. - custom-programmatic-skin: new sample project that demonstrates how to create a custom skin with programmatically drawn graphics.
- custom-programmatic-skin-with-states: new sample project that demonstrates how to create a custom skin that handles state changes from a UI component, like a button.
- Drawer: new component that supports opening a drawer modally above other content.
- EdgePuller: new utility used for "pullable" component edges, used by
Drawer
and navigators. - FeathersControl: dispatches
FeathersEvent.ENABLED
andDISABLED
when theenabled
property changes. - FocusManager: optionally supports multiple root containers.
- FocusManager: disables focus management under the overlay when the
PopUpManager
has a modal popup. - FocusManager: added
findNextFocus()
method. - FocusManager: can pass focus to web browser when reaching beginning or end of all focusable objects.
- LayoutGroupItemRenderer: new component to use as base type for custom item renderers.
- ListView: added
allowMultipleSelection
,selectedIndices
, andselectedItems
properties. - General: Added
@:event
metadata to all UI components, so that a list of events is available to macros. - GridView: added
resizableColumns
andcolumnResizeSkin
properties. - GridView: added
GridViewEvent.CELL_TRIGGER
andHEADER_TRIGGER
events. - GridView: added
allowMultipleSelection
,selectedIndices
, andselectedItems
properties. - GroupListView: added
GroupListView.ITEM_TRIGGER
event. - HDividedBox and VDividedBox: new containers that add resizing dividers between children.
- HScrollBar/VScrollBar: added
snapInterval
and changedstep
to apply to increment/decrement buttons only. - HSlider/VSlider: added
snapInterval
and changedstep
to apply to keyboard events only. - HSlider/VSlider:
step
defaults to0.01
because it is needed for keyboard events. - MultiSkin: a skin for UI components that switches between different display objects when the UI component's state changes. Useful for ensuring that
MouseEvent.CLICK
andTouchEvent.TOUCH_TAP
are correctly dispatched when the target below the pointer change. - PageNavigator: added a touch swipe gesture to go back and forward.
- PageNavigator: added
previousTransition
andnextTransition
properties. - PillSkin: a skin for UI components shaped like a "pill".
- ProgrammaticSkin: new base class for custom programmatic skins.
- RectangleSkin: fixed issue where
cornerRadius
was incorrectly drawn at half size. Developers may need to update code to use smaller values than before. - ResponsiveGridLayout: new layout
- StackNavigator: added
popSwipeEnabled
andpopSwipeActiveEdgeSize
properties to enable a touch swipe to go back gesture. - TabNavigator: added
swipeEnabled
property to enable a touch swipe gesture to go back and forward. - TabNavigator: added
previousTransition
andnextTransition
properties. - TabSkin: a skin for UI components shaped like a rectangle with two rounded corners on one side.
- TextInput: added
leftView
andrightView
properties to display icons or other UI components inside the input. - TextInput: added
VARIANT_SEARCH
for use in themes. - TextInput: added
autoSizeWidth
property to resize based on the entered text. - TreeView: instead of dispatching
Event.OPEN
andCLOSE
, dispatchesTreeViewEvent.BRANCH_OPEN
andBRANCH_CLOSE
. - TriangleSkin: a skin for UI components shaped like a triangle.
- GroupListView: new component
- ArrayCollection: added some functional methods, including
find()
,findIndex()
,some()
,forEach()
, andmap()
. - BaseScrollContainer: added
showScrollBars
property, which can be set tofalse
to hide scroll bars completely. - CLI: new projects compile to OpenFL's default bin folder, instead of the custom build folder.
- CLI: fixed issue where certain folder names could cause the main class name to contain invalid characters.
- Default Theme: some refinements to colors and sizing, especially on desktop.
- GridView: added
CHILD_VARIANT_HEADER
to customize styles of headers. - IHTMLTextControl: added a new interface for components with
htmlText
property, similar to the existingITextControl
. - IProgrammaticSkin: added a new interface for programmatic skins (plus a
ProgrammaticSkin
base class). - IStyleObject: added
themeEnabled
property, which can be set tofalse
to make a component and all of its children ignore the current theme. - InvalidationFlag: this type is now an enum, and custom flags may be defined like
InvalidationFlag.CUSTOM("my-custom-flag")
. - ItemRenderer: added optional
alternateBackgroundSkin
property to switch between backgrounds in data components likeListView
. - ValidatingSprite: added advanced
runWithoutInvalidation()
function for changing properties without an extra validation cycle. - ListView:
ListViewItemState
includes newowner
andenabled
properties (similar forTreeView
,GridView
and other data rendering components). - ListView: now handles
UPDATE_AT
andUPDATE_ALL
events from the data provider collection. - ListView: added
itemToItemRenderer()
anditemRendererToItem()
methods (similar forTreeView
,GridView
and other data rendering components). - RouterNavigator: added new
location
property to access the current location on all targets. - Scroller: added new
mouseWheelYScrollX
property to optionally make vertical mouse wheel scroll horizontally. - TabSkin: a new skin class with a tab-like shape (rounded corners on one side only), similar to the rectangle/circle/ellipse skins from previous versions.
- TextArea, TextInput: added new selection APIs, including
selectionAnchorIndex
,selectionActiveIndex
,selectRange()
, andselectAll()
. - TreeView: added
toggleBranch()
andisBranchOpen()
methods. - And many more bug fixes…
- CLI:
create-project
command - GridView: new component
- PageIndicator: new component
- PageNavigator: new component
- TabNavigator: new component
- TextArea: new component
- TreeView: new component
- AnchorLayoutData: anchors may optionally be relative to other children in the container
- HorizontalListLayout: new layout optimized for lists
- VerticalListLayout: new layout optimized for lists
- HorizontalDistributedLayout: new layout
- VerticalDistributedLayout: new layout
- ItemRenderer: added
secondaryText
property - Label: added
htmlText
property - TextInput: added
prompt
property - Scale9Bitmap: new custom display object for rendering
BitmapData
withscale9Grid
- Basic keyboard focus management
- Improved support for Neko and HashLink
- login-form: new sample
- router-navigator-pass-data-between-views: new sample
- Initial preview build