Find our new Documentation at boden.io!
- ui/ListView: Added
ListViewDataSource::shouldSelectRow
function to allow customizing row selection behaviour. - ui/Checkbox: Added support for dark mode to the Checkbox control.
- cmake: cmake minimum version for iOS is now 3.15.
- ui/iOS 13: Fixed deprecated functions being used and fixed Color selection to comply with dark mode.
- ui/iOS 13: Fixed detection of std::filesystem implementation.
- ui/ListView: Fixed iOS ListView implementation on iOS 13.0 where the list entries would randomly appear/disappear.
- cmake: Fixed std::filesystem check for iOS 13 / XCode 11
- ui/Button: The
Button
now supports an imageURL to display an Image instead of Text. - ui/TextField: The
TextField
now supports a placeholder text that is displayed while no text was entered. - ui/TextField: The
TextField
now supports obscuring the users input and configuring the appearance of the Keyboard. - ui/TextField: Added textInputType and obscureInput properties.
- ui/Label: The
Label
's method of handling overflow can now be set with thetextOverflow
property. - foundation/Application: The new function
Application::copyToClipboard
copies a string to the global clipboard. Thanks @mrexodia! - foundation/path: Added the
bdn::path
namespace featuring functions to retrieve platform-specific paths like e.g. the path of the temporary directory readable/writable by the application. - foundation/Application: Added
Application
base class to the foundation module to makeContext
accessible from within the module. - ui/ListView: Added
std::optional<size_t> ListView::rowIndexForView(const std::shared_ptr<View>& view) const
- foundation/NeedsInit: Added specialization of std::make_shared for types that have an init function but no Constructor Arguments to allow calling std::make_shared<>() without having to specify bdn::needsInit.
- foundation/c++: Added std:filesystem implementation.
- ui/View: The View hierarchy functions have been reworked extensively.
View::childViews
returns astd::vector
instead of astd::list
and the parentView
is accessible via a read-only propertyView::parentView
. Functions that change the hierarchy have been moved out ofView
. - ui/View: The
offerLayout
function has been renamed tosetFallbackLayout
- foundation/Context: Renamed
UIContext
toContext
and moved it to foundation. - ui/ListView: Added
listView
parameter toListViewDataSource
functions - cmake: use_boden_template_info_plist() now accepts a bundle id and bundle name.
- cmake: Renamed ANDROID_PACKAGEID to ANDROID_APP_ID.
- tooling The template used by
./boden new
now uses file(GLOB_RECURSE ...) to discover sources instead of manually listing the files.
- String: The
String
alias has been deprecated and replaced withstd::string
.
- ui/Label: The
Label
's wrap property is now by defaultfalse
on all platforms. - cmake: Setting ANDROID_PACKAGEID to custom values no longer breaks resource lookup.
- tooling: Various path related issues fixed in `./boden.
- foundation/AttributedString: Added the
AttributedString
class.AttributedString
wraps the native platform implementation, i.e.NSAttributedString
on iOS andSpanned
on Android. You can use thefromHTML()
andtoHTML()
functions to convert HTML markup code to/from an attributed strings. - ui/TextField: Added the
font
property to theTextField
class. You can now set a customFont
on a text field using this property. - ui/TextField: The
TextField
's return key type can now be set using thereturnKeyType
property. - ui/TextField: The
TextField
's auto correction can now be turned on/off explicitly using theautocorrectionType
property. - ui/TextField: Text fields can now be focussed programatically using the
setFocus()
action method. We've also added an example of how to implement navigation through multiple text fields within a form using the software keyboard's "next" button.
- ui/TriState:
TriState
enum values are now capitalized to remain consistent with Boden's enum value capitalization style. Please make sure to change your code accordingly when updating to v0.3.
- Symlinks in the Boden working tree's parent path are now supported by the
boden
command line tool.
- layout: New Flexbox layout engine based on Facebook's Yoga
- foundation: Properties as data members: intuitive data bindings, change notifications, comprehensive type support
- ui/ListView: Fully native
ListView
with support for custom item views - ui/Slider:
Slider
- ui/NavigationView:
NavigationView
- ui/ImageView:
ImageView
- ui/WebView:
WebView
- ui/LottieView:
LottieView
- platform: Support for bundling resources (images, binary assets, etc.)
- platform: Support for device orientation
- net: HTTP request API — easily make requests to web services without non-native net library dependencies
- ui/View: Generalized stylesheet support for views
- ui/View: Support for conditional stylesheet properties, similar to CSS media queries (e.g. different layouts per device)
- ui/View: Background color support
- platform: Support for App Icons
- platform/android: Support for day/night mode
- ui:
ViewCoreFactory
mechanism to allow for independent UI modules - foundation:
init()
pattern viastd::make_shared
- foundation: nlohmann::json
- ui: Improved
ViewCore
initialization: controls can now be fully used before added to the view graph - ui:
CoreLess
class for easier subclassing of container views that do not useViewCore
- foundation/java New, more convenient template-based Java wrapping classes
- ui/ListView: Improved single selection set/get
- ui/ListView: Support for swipe down gesture
- ui/ListView: Support for custom item views
- foundation: Consolidated Notifier architecture
- website: Built boden.io
- documentation: Improved getting started guides
- documentation: LottieView documentation
- documentation: Net module documentation
- documentation: Switch documentation
- documentation: WebView documentation
- documentation: Property documentation
- documentation: Guides on how to write new views
- examples: Improved demo app
- examples: Exemplary Reddit browser app
- foundation: Use
std::shared_ptr
instead of custom reference pointer - foundation: Use
std::string
instead of custom string implementation - foundation: Removed
Base
class - ui/Label: Renamed
TextView
toLabel
- platform/ios: Soft keyboard overlaps textfields
- tooling: Fixed
boden new
command
We added LGPL as a new licensing option! Boden can now be licensed under GPL 2/3 or LGPL 2.1/3. This allows you to release iOS apps based on Boden on the iOS App Store without running into any licensing issues.