Features
Forms
Doodle now supports Forms. They make data collection simple, while still preserving flexibility to build just the right experience. The new Form hides a lot of the complexity associated with mapping visual components to fields, state management, and validation. The result is an intuitive metaphor modeled around the idea of a constructor.
There is also a set of helpful forms controls that cover a reasonable range of data-types. These make its easy to create forms without much hassle. Forms are also extensible, allowing full customization of the data they bind to and how each fields is visualized.
Customizable Text Fields
TextFields that use the NativeTextFieldBehavior can now be customized using the new NativeTextFieldBehaviorModifier. This allows custom background and foregrounds for TextFields, which allows a wide range of styling when combined with the ability to hide borders and change background/foreground color.
APIs
- View now exposes mirrored property that indicates whether it has been horizontally flipped due to
contentDirection - New
limitsChangedproperty toProgressIndicator - New list-based API for constrain layout that removes the need to …
- New math APIs for AffineTransform and underlying matrix types
SimpleMutableListModel's constructor is no longerprotected- Moved Extractor to top-level util and deprecated local versions
- Extended
toStringItemVisualizerso it takes a custom string mapper - Encoder expanded to use Result based mappers
- Replaced
NativeHyperLinkBehaviorBuilderwithNativeHyperLinkStylerand made it available viaThemeslibrary so it can be used on all platforms
Fixes | Improvements
General
ListLayoutso it no longer sets ideal/minSize of container whenwidthSourceisParent- List/TreeRow, which wrap the item visualizers for each view are no longer focusable
- Improvements to
BasicCheckBoxBehaviorandBasicRadioBehavior ThemePickerno longer directly focusable since the spinner within it isListLayoutnow uses the container's width instead ofidealSize.widthwhenwidthSourceis set toParentInspector.contains(Point)now delegates tobehaviorwhen presentBasicButtonBehaviorandCheckRadioButtonBehaviornow respond tomirroredstate- Removed focusability for sub views generated by behaviors
- Improved
Path.toString - Improved default focus traversal
- Fixed bug in
ConfinedRangeModelthat allowed range to exceedlimits - Fixed bug where View not properly handled when moved from parent to Display
- Fixed ambiguity with calls to
Display.plusAssign(Container)andContainer.plusAssign(Container) - Fixed bug where
BasicDropdownBehaviorcould assign a negative height to an item - Fixed issue where
Dropdownlist not sized correctly after bounds change - Fixed bug where
listItemVisualizerwas not being used - Fixed visual bug in browser rendering
- Fixed rendering for List with null items
- Fixed focus traversal bug
- Fixed
ScrollPanellayout bug when content changes - Fixed empty List bug
Browser
- Suppress pointer for canvas rendered elements
- Fixed rendering issue with importing data into Canvas
- Fixed Display cleanup on shutdown
- Fixed clicking bug in native behaviors, and
AccessibilityManagerImpl
Desktop
- Improved focus traversal
- Improved drag-drop support
- Fixed text decoration bug
Dependencies
- Kotlin -> 1.5.31
- Removed old repositories