Find our new Documentation at boden.io!
- ui/ListView: Added
ListViewDataSource::shouldSelectRowfunction 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
Buttonnow supports an imageURL to display an Image instead of Text. - ui/TextField: The
TextFieldnow supports a placeholder text that is displayed while no text was entered. - ui/TextField: The
TextFieldnow 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 thetextOverflowproperty. - foundation/Application: The new function
Application::copyToClipboardcopies a string to the global clipboard. Thanks @mrexodia! - foundation/path: Added the
bdn::pathnamespace featuring functions to retrieve platform-specific paths like e.g. the path of the temporary directory readable/writable by the application. - foundation/Application: Added
Applicationbase class to the foundation module to makeContextaccessible 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::childViewsreturns astd::vectorinstead of astd::listand the parentViewis accessible via a read-only propertyView::parentView. Functions that change the hierarchy have been moved out ofView. - ui/View: The
offerLayoutfunction has been renamed tosetFallbackLayout - foundation/Context: Renamed
UIContexttoContextand moved it to foundation. - ui/ListView: Added
listViewparameter toListViewDataSourcefunctions - 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 newnow uses file(GLOB_RECURSE ...) to discover sources instead of manually listing the files.
- String: The
Stringalias has been deprecated and replaced withstd::string.
- ui/Label: The
Label's wrap property is now by defaultfalseon 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
AttributedStringclass.AttributedStringwraps the native platform implementation, i.e.NSAttributedStringon iOS andSpannedon Android. You can use thefromHTML()andtoHTML()functions to convert HTML markup code to/from an attributed strings. - ui/TextField: Added the
fontproperty to theTextFieldclass. You can now set a customFonton a text field using this property. - ui/TextField: The
TextField's return key type can now be set using thereturnKeyTypeproperty. - ui/TextField: The
TextField's auto correction can now be turned on/off explicitly using theautocorrectionTypeproperty. - 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:
TriStateenum 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
bodencommand 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
ListViewwith 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:
ViewCoreFactorymechanism to allow for independent UI modules - foundation:
init()pattern viastd::make_shared - foundation: nlohmann::json
- ui: Improved
ViewCoreinitialization: controls can now be fully used before added to the view graph - ui:
CoreLessclass 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_ptrinstead of custom reference pointer - foundation: Use
std::stringinstead of custom string implementation - foundation: Removed
Baseclass - ui/Label: Renamed
TextViewtoLabel
- platform/ios: Soft keyboard overlaps textfields
- tooling: Fixed
boden newcommand
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.