- Removed overload of
ViewModel<_,_>.ToStringbecause 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'modelinstance. 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
OneWaySeqandSubModelSeqbindings has been significantly decreased. This includes all cases of aSubModelSeqbinding and all cases of aOneWaySeqbinding for whichequalsreturnsfalse.
- Fix exception when showing sub-windows as part of
init
- Windows may now be created on any thread
- Fix crash when
initreturns a command opening asubModelWin
- Improved error handling when collection bindings contain duplicates
- Improve performance of
Binding.oneWaySeq,Binding.oneWaySeqLazy, andBinding.subModelSeq
- Add
netcoreapp3.0target
- Corrected type parameter of
getIdinoneWaySeqLazy
- Make model/dispatch available to
getWindowinBinding.subModelWin
- Added optional dispatch wrapper to two-way bindings and command bindings, which allows dispatches to be throttled/debounced etc.
- Fixed
ElmConfig.MeasureLimitMsnot 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.subModelWininstead)
- Added
Program.withDebugTracewhich is similar towithConsoleTracebut 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 oldBindingmodule is deprecated and renamed toBindingFn. The newBindingis 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.Internalnamespace 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.designInstancehas been moved toElmish.Uno.ViewModel. Furthermore, it returnsobjsinceViewModelis 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
Bindingsignatures available due to the new overload-based syntax. - New: More general
Binding.subModelandBinding.subModelSeqoverloads that allow a more idiomatic Elm architecture even with static views. For background information, see #86 (the issue is otherwise outdated). - New: Sticky
subModelOptbindings that returns the last non-null model when model isNone(useful when animating out stuff) - New:
elmEqandrefEqas useful equality defaults for lazy bindings.elmEqefficiently 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.mkSimpleWpfandProgram.mkProgramWpfwith more WPF-friendly signatures. - New:
Program.mkProgramWpfWithCmdMsgfor easily following theCmdMsgpattern to allow testable commands. See the FAQ in the readme for details. - New:
Cmd.showWindowhelper to open a new window. - New: Slow calls can be logged (configurable threshold).
- New: Made available
Program.startElmishLoopwhich is a low-level function that starts an Elmish loop given an ElmishProgramand a WPFFrameworkElement. You probably won’t need it. - Improvement: Logs now indicate the binding path.
- Improvement: Possibly better performance due to internals now using
ValueOptioninstead 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
oneWayOptandtwoWayOpt(#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
subModelSeqitems being unselected during updates
- Breaking: Change order of
oneWayLazyWitharguments to and rename it tooneWayLazy, removing the existingoneWayLazyfunction. The rationale is explained in #60 . To migrate from 2.0.0-beta-3 to 2.0.0-beta-4: Add(=)as theequalsparameter tooneWayLazyusages, and renameoneWayLazyWithusages tooneWayLazy. - Add
Binding.oneWaySeqLazy
- Add convenience function to create design-time VMs
- Improve log messages
- Complete rewrite, several breaking changes and new features
twoWayValidationis calledtwoWayIfValid(because that’s what it is, and it clearly separates it from the newtwoWayValidate)oneWayMapis calledoneWayLazy(its implementation has changed, and the use case has expanded, but is similar)cmdandcmdIfhave been renamedparamCmdandparamCmdIf, because the old names have new signatures/use-casesmodelhas been renamedsubModelbecause it’s more clear, and consistent with the newsubModelOptandsubModelSeqProgram.runDebugWindowhas been removed in favour ofProgram.runWindowWithConfig- Bundled Elmish has been removed, and Elmish 2.0 is used as an external dependency
- Any
Applicationinstance instantiated before callingProgram.run...will now be used - Several new functions in the
Bindingmodule; 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!