v0.23.0
Pre-release
Pre-release
Notable changes
- Scrollbars have been completely re-created from the ground up
- Windows/Linux and macOS styles
- macOS scrollbars can be AlwaysVisible or only visible WhenScrolling
- In IJP 242, on macOS, Jewel can automatically pick the right style (not available in 233/241 due to missing IJP APIs)
ScrollingContainer
API makes it easier to implement a scrolling container with the looks and behaviour that match Swing- Layout adapts automatically to AlwaysVisible vs WhenScrolling
- You can adapt by applying an end padding to "important" content (e.g., text) provided by
scrollbarContentSafePadding()
- You should not apply it to the scrollable container or the items' roots, because "unimportant" stuff (e.g., selection bg, dividers, etc) should extend all the way
- TextArea has a new BTF2-based overload, which can show vertical scrollbars
- String- and TextFieldValue-based text components have been deprecated and will be removed before Jewel 1.0
- You should migrate to the new TextFieldState-backed overloads as soon as possible!
- Why moving to the new API? Find out here
- There is a new preliminary API to provide data to the IJP Actions system:
Modifier.provideData()
- It is key-value based, modeled after the
UiDataProvider
API in the IJP - It's not fully tested nor fleshed out yet, so use at your own risk
- Not available in IJP 233/241 (should be a no-op, may cause issues — please report them)
- It is key-value based, modeled after the
Breaking changes
- The
IntUiScrollbarStyling
's API has been significantly modified, affecting how scrollbar styles are defined.- Migration: Adapt your scrollbar styling code to use the new API, which includes changes to function names, parameters, and the introduction of new functions for different operating systems and themes.
- The
TabStyle
constructor now requires an additional parameter:scrollbarStyle
.- Migration: When creating a
TabStyle
, provide a value for the newscrollbarStyle
parameter.
- Migration: When creating a
Deprecated
- The
TextArea
andTextField
overloads that acceptvalue
andonValueChange
parameters have been deprecated in favor of the respective overloads that useTextFieldState
.- If you need to observe text changes with the new overloads, use
snapshotFlow { state.text }
.
- If you need to observe text changes with the new overloads, use
What's Changed
- New iteration on scrollbars by @hamen in #515
- Remove obsolete expui icons folder by @hamen in #519
- Switch reflection-based system in standalone demo to simpler mechanism by @hamen in #520
- Clean up work on scrollbars by @hamen in #521
- Make Studio releases task triggered on demand by @rock3r in #523
- Fix glitch in selected menu item background by @hamen in #524
- Update IJP and IJP Gradle plugin by @rock3r in #526
- Expose PopupProperties in PopupMenu by @francisconoriega in #531
- Add scrollbar style and behavior reactive update for Mac OS by @hamen in #535
- Fix Markdown loading in standalone sample by @rock3r in #539
- Fix button border alignement by @hamen in #543
- Exclude generated files from formatKotlinMain by @hamen in #548
- Improve OverrideDarkMode kdocs by @rock3r in #552
- Iterate on keyboard shortcuts by @hamen in #549
- Migrate TitleBarView to new Icon API by @hamen in #546
- Migrated ActionSystem to Compose Traversal API & UiDataProvider API by @jakub-senohrabek-jb in #532
- Improve string-based Icon deprecation by @rock3r in #555
- Bump and clean by @rock3r in #557
- Reimplement/fix/complete implementation of scrollbars by @rock3r in #554
- Iterate on TextField and TextArea focused state UI by @hamen in #540
Full Changelog: v0.22.2...v0.23.0