- Removed overload of
ViewModel<_,_>.ToString
because of slow performance (#370)
- Excluded 4.* prereleases from possibilities for version of Elmish dependency
- Added support for multiple validation errors
- Added target
net5.0-windows
ViewModel<'model, 'msg>
now overridesobject.ToString()
and returns a string representation of the current'model
instance. This is only intended for deubgging. No guarantees are given about the exact structure of the returned string.- Fixed incorrect spelling of a word in a log message
- The amount of time used to update
OneWaySeq
andSubModelSeq
bindings has been significantly decreased. This includes all cases of aSubModelSeq
binding and all cases of aOneWaySeq
binding for whichequals
returnsfalse
.
- Fix exception when showing sub-windows as part of
init
- Windows may now be created on any thread
- Fix crash when
init
returns a command opening asubModelWin
- Improved error handling when collection bindings contain duplicates
- Improve performance of
Binding.oneWaySeq
,Binding.oneWaySeqLazy
, andBinding.subModelSeq
- Add
netcoreapp3.0
target
- Corrected type parameter of
getId
inoneWaySeqLazy
- Make model/dispatch available to
getWindow
inBinding.subModelWin
- Added optional dispatch wrapper to two-way bindings and command bindings, which allows dispatches to be throttled/debounced etc.
- Fixed
ElmConfig.MeasureLimitMs
not being used
- Added proper dialog/window support using
Binding.subModelWin
. See the readme for more and the NewWindow sample for an example. - Deprecated
Cmd.showWindow
(useBinding.subModelWin
instead)
- Added
Program.withDebugTrace
which is similar towithConsoleTrace
but writes usingSystem.Diagnostics.Debug.WriteLine
(e.g. to the VS output window)
- The most massive (and hopefully useful) update yet!
- Breaking: Overload-based syntax for
Binding
. The oldBinding
module is deprecated and renamed toBindingFn
. The newBinding
is a static class with static methods, providing many overloads for flexibility. To migrate, replace all occurrences ofBinding.
withBindingFn.
and follow the deprecation warnings. - Breaking: The
Elmish.Uno.Internal
namespace has been removed and everything in it that should actually be internal has been markedinternal
. This includesViewModel
. - Breaking:
Elmish.Uno.Internal.BindingSpec<_,_>
has been moved/renamed toElmish.Uno.Binding<_,_>
. It should thus be more pleasant to use in type annotations. - Breaking:
Elmish.Uno.Utilities.ViewModel.designInstance
has been moved toElmish.Uno.ViewModel
. Furthermore, it returnsobj
sinceViewModel
is internal. - Breaking: Removed
twoWayIfValid
. It hasn’t worked for a while due to core Elmish internals, and was of suspect utility anyway. - New: Many more helpful
Binding
signatures available due to the new overload-based syntax. - New: More general
Binding.subModel
andBinding.subModelSeq
overloads that allow a more idiomatic Elm architecture even with static views. For background information, see #86 (the issue is otherwise outdated). - New: Sticky
subModelOpt
bindings that returns the last non-null model when model isNone
(useful when animating out stuff) - New:
elmEq
andrefEq
as useful equality defaults for lazy bindings.elmEq
efficiently uses reflection to do a comparison for each member that is referential for reference types except strings, and structural for strings and value types. - New:
Program.mkSimpleWpf
andProgram.mkProgramWpf
with more WPF-friendly signatures. - New:
Program.mkProgramWpfWithCmdMsg
for easily following theCmdMsg
pattern to allow testable commands. See the FAQ in the readme for details. - New:
Cmd.showWindow
helper to open a new window. - New: Slow calls can be logged (configurable threshold).
- New: Made available
Program.startElmishLoop
which is a low-level function that starts an Elmish loop given an ElmishProgram
and a WPFFrameworkElement
. You probably won’t need it. - Improvement: Logs now indicate the binding path.
- Improvement: Possibly better performance due to internals now using
ValueOption
instead ofOption
. - Improvement: Finally added (lots of) unit tests, so confidence of correct functionality is higher. (No critical bugs were found when creating the tests.)
- No changes, but updated for Elmish 3.0 so the package can finally move out of beta
- Add Binding.subModelSelectedItem
- Fix checkboxes erroneously being shown as failing validation (#78) by @BillHally
- The above fix also fixes binding warnings for two-way bindings
- Add new bindings
oneWayOpt
andtwoWayOpt
(#75) - Update to Elmish 3.0.0-beta-7
- Add new binding
subBindingSeq
, see readme for details.
- Fix Elmish dependency version in nuget spec
- Update to Elmish 3
- Dispatch on UI thread to block instead of getting weird UI behaviour from race conditions when updates take too long
- Fix
subModelSeq
items being unselected during updates
- Breaking: Change order of
oneWayLazyWith
arguments to and rename it tooneWayLazy
, removing the existingoneWayLazy
function. The rationale is explained in #60 . To migrate from 2.0.0-beta-3 to 2.0.0-beta-4: Add(=)
as theequals
parameter tooneWayLazy
usages, and renameoneWayLazyWith
usages tooneWayLazy
. - Add
Binding.oneWaySeqLazy
- Add convenience function to create design-time VMs
- Improve log messages
- Complete rewrite, several breaking changes and new features
twoWayValidation
is calledtwoWayIfValid
(because that’s what it is, and it clearly separates it from the newtwoWayValidate
)oneWayMap
is calledoneWayLazy
(its implementation has changed, and the use case has expanded, but is similar)cmd
andcmdIf
have been renamedparamCmd
andparamCmdIf
, because the old names have new signatures/use-casesmodel
has been renamedsubModel
because it’s more clear, and consistent with the newsubModelOpt
andsubModelSeq
Program.runDebugWindow
has been removed in favour ofProgram.runWindowWithConfig
- Bundled Elmish has been removed, and Elmish 2.0 is used as an external dependency
- Any
Application
instance instantiated before callingProgram.run...
will now be used - Several new functions in the
Binding
module; dot into it in your IDE or see the repository for samples or source code
- Fix for #19, model to view updates for validation bindings
- Implemented INotifyDataErrorInfo and corresponding bindings
- Added some documentation for binding assemblers
- Added message box error handler to Program module
- Target F# 4.1
- Lastest fable-elmish, includes memory leak fix
- Added Program.withExceptionHandler
- Fixing nuget framework version
- Added command parameter
- Renamed Binding.vm to Binding.model
- Reorganized samples and added performance sample (WIP)
- Fixing two way binding bugs
- Elmish all the WPF!