nathantannar4 / Transmission

Bridges UIKit presentation APIs to a SwiftUI API so you can use presentation controllers, interactive transitions and more.
BSD 2-Clause "Simplified" License
378 stars 13 forks source link

ButtonStyle unexpectedly leaks through destination link in 1.1.2 #32

Closed PhilipDukhov closed 8 months ago

PhilipDukhov commented 8 months ago

When .buttonStyle is applied in the code below, I expect it to apply the style to button created by DestinationLink, but destination view shouldn't be decorated.

Since we have a wrapper around DestinationLink, I can easily apply .buttonStyle(.plain) to destination to prevent such issue, but not sure if this behavior is expected - it changed between 1.1.0 and 1.1.2.

struct ContentView: View {
    @State var presented = false

    var body: some View {
        NavigationView {
            DestinationLink {
                ViewToDismiss()
            } label: {
                Text("show")
            }
            .buttonStyle(.bordered)
        }
    }
}

struct ViewToDismiss: View {
    @Environment(\.destinationCoordinator) var destinationCoordinator

    var body: some View {
        Button("Dismiss") {
            destinationCoordinator.pop()
        }
    }
}
nathantannar4 commented 8 months ago

Attempting to fix #24 broke this, fixed in 1.1.3 but mutating the binding cannot dismiss with animation. DestinationCoordinator must be used.