Feathers UI v1.3 — Drag-and-drop, Collapsible component, dispose() method, and tons of bugs fixed

Today, Feathers UI v1.3.0 is now officially available on Haxelib. This release includes a new DragDropManager used by components like ListView and GridView, a new Collapsible component with a clickable header to toggle the visibility of its content, and a new dispose() method to help with UI component cleanup. It also includes over a year of bug fixes, which means even more stability for your projects.

If you're not aware, Feathers UI is an open source framework of graphical user interface (GUI) components for creative, cross-platform projects. Using the Haxe programming language, Feathers UI is built on OpenFL — a user-friendly library for rendering, input, networking, and more. Deploy native apps to iOS, Android, Windows, macOS, Linux (and even publish your project to the web!) all using the same Haxe codebase.

What's new in 1.3.0

Drag and Drop

Drag and drop is now supported using either mouse or touch. Both ListView and GridView support drag-and-drop by enabling a few built-in properties.

var listView = new ListView();
listView.dragEnabled = true;
listView.dropEnabled = true;
listView.removeOnDragDropComplete = true;

Custom components may also implement the IDragSource and IDropTarget interfaces, and add listeners for certain DragDropEvent constants to add their own support for drag-and-drop.

See the Drag and drop page for more details, and try out the new sample projects.

Collapsible component

The new Collapsible component displays a clickable header that collapses or expands its content. It might be useful for hiding long, detailed text or for creating your own accordion view.

var collapsible = new Collapsible();
collapsible.text = "Who is Wolverine?";
collapsible.opened = false;
var textContent = new Label();
textContent.width = 200.0;
textContent.wordWrap = true;
textContent.text = "Wolverine is a mutant with animal-keen senses, a powerful regenerative healing factor, an adamantium skeleton, prolonged lifespan, and retractable claws in each hand.";
collapsible.content = textContent;
addChild(collapsible);

The dispose() method

All UI components in Feathers UI now have a new dispose() method that may be used to clean things up before the object will be garbage collected. Disposal can perform actions like clearing data providers, removing and disposing children, unloading assets, and removing event listeners. It's basically intended to make things a little bit easier for the garbage collector when you know that a UI component will no longer be used in your app.

myComponent.dispose();
myComponent = null;

Calling the dispose() method is optional. Don't feel obligated to use it, and don't feel like you're required to update your existing apps to use it. Components still work the same as before, so skipping disposal won't create memory leaks. It's basically just a hint to Feathers UI that you won't need a certain component anymore, so maybe it can optimize memory cleanup to go a bit faster.

Install Feathers UI v1.3.0

Feathers UI v1.3.0 may be installed using the haxelib install command in your terminal.

haxelib install feathersui 1.3.0

Be sure to take a look at the complete installation instructions for details about installing required dependencies, along with links to step-by-step tutorials for setting up supported editors and IDEs.

Documentation

  • The Feathers UI Getting Started guide provides the most essential links for creating your first Feathers UI project. Start there to learn about all of the UI components, layouts, skins, and the many other features that are available in the framework.
  • The v1.3.0 API Reference includes descriptions of all classes, interfaces, enums, utility functions, and the various other APIs available to developers working with Feathers UI.

Community

How to help the project

Send a monthly or one-time donation to Josh Tynjala on Github Sponsors to show your support for Feathers UI.

Questions or comments?

I've created an official v1.3.0 discussion thread in the community forums. Do you love one of the new features? Ran into a strange bug that wasn't in the last release? Head over there to leave a comment about this release!