Commit Graph

3 Commits

Author SHA1 Message Date
Daniel Haight c6a98f06c2 Add `WithStateBinding`
This is a way to add back some of the "free" animations that we lose when
creating custom bindings instead of using `@State` variables, which is
extremely common in TCA / unidirectional architecture.

For an example check out the live preview in the `WithStateBinding` file.
The first is with a standard State binding, click to get the detail and then
drag from the leading edge slowly. You will notice the selection highlight _gradually_
gets less the more you drag (or stronger if you go back).

For the second one with a custom binding, drag back and you will notice it is either
entirely selected, or deselected.

The third uses `WithStateBinding` to give _back_ the nice animations to custom bindings.
2021-11-15 23:36:16 +00:00
Daniel Haight 9724d22235 Add `NavigationLinks` and `Bindings`
This gives us a more readable approach to set up navigation links
that mirrors other `SwiftUI` navigation paradigms such as `.sheet`.

We use the modifier to simplify navigation link setup for `TransactionHistoryView`

We also include some `Binding` extensions to help creating them.
2021-11-15 23:36:14 +00:00
Daniel Haight 0ce7d14c81 Add `History` TCA feature
This adds a "TCA" feature of a (very) basic transaction history and detail.

It demonstrates a purely state driven navigation stack.
Specifically, a `route: Route?` value is tracked in the state.
This value is driven by the selection of a transaction in the list,
setting it to to `.selectedTransaction(transaction)`,
which then pushes the detail view for that `transaction` onto the `NavigationView`.
Popping the detail view sets the property to `nil`.

Take a look at the previews in `TransactionHistoryView` try them "live" as well.

**N.B** The models are _not_ correct in any way, though are meant to be somewhat representative
and give something to display.
2021-11-15 23:32:54 +00:00