Release Keyboard Release
Nucleic-Session: FD190A87-E8F7-4C72-A15E-E35B88EF5921
This commit is contained in:
@@ -103,6 +103,26 @@ extension Risk {
|
||||
}
|
||||
}
|
||||
|
||||
/// Adds a "Done" button to the keyboard's accessory toolbar so any focused composer can always
|
||||
/// dismiss the keyboard. The multiline composers (`axis: .vertical`) turn Return into a newline,
|
||||
/// so without this there's no way to release the keyboard once it opens. The modifier carries its
|
||||
/// own `@FocusState` and binds it to the field, keeping callers to a single `.keyboardDismissable()`.
|
||||
struct KeyboardDismissable: ViewModifier {
|
||||
@FocusState private var focused: Bool
|
||||
func body(content: Content) -> some View {
|
||||
content
|
||||
.focused($focused)
|
||||
.toolbar {
|
||||
ToolbarItemGroup(placement: .keyboard) {
|
||||
Spacer()
|
||||
Button { focused = false } label: {
|
||||
Label("Done", systemImage: "keyboard.chevron.compact.down")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// A lifted card surface with a hairline border — the mobile echo of `AppTheme.surface`.
|
||||
struct CardBackground: ViewModifier {
|
||||
var padding: CGFloat = 14
|
||||
|
||||
Reference in New Issue
Block a user