diff --git a/Sources/MisticaSwiftUI/Components/Inputfield/InputField.swift b/Sources/MisticaSwiftUI/Components/Inputfield/InputField.swift index 9cde08c5f..640fe950a 100644 --- a/Sources/MisticaSwiftUI/Components/Inputfield/InputField.swift +++ b/Sources/MisticaSwiftUI/Components/Inputfield/InputField.swift @@ -69,6 +69,7 @@ public struct InputField: View { Text(placeholder) .font(.textPreset1(weight: .regular)) .opacity(0) + .lineLimit(1) HStack { leadingText @@ -91,6 +92,7 @@ public struct InputField: View { .offset(x: 0, y: placeholderOffset) .animation(.misticaTimingCurve, value: placeholderTextColor) .allowsHitTesting(false) + .lineLimit(1) } trailingImage diff --git a/Sources/MisticaSwiftUI/Components/Inputfield/LegacyTextField.swift b/Sources/MisticaSwiftUI/Components/Inputfield/LegacyTextField.swift index 1d4c2af2a..92549c7f5 100644 --- a/Sources/MisticaSwiftUI/Components/Inputfield/LegacyTextField.swift +++ b/Sources/MisticaSwiftUI/Components/Inputfield/LegacyTextField.swift @@ -171,6 +171,18 @@ extension LegacyTextFieldCoordinator { private class ActionsTextField: UITextField { var canPerformActions = true + + override func contentCompressionResistancePriority(for axis: NSLayoutConstraint.Axis) -> UILayoutPriority { + switch axis { + case .horizontal: + return .defaultLow + case .vertical: + fallthrough + @unknown default: + return super.contentCompressionResistancePriority(for: axis) + } + } + override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool { guard canPerformActions else { return false } return super.canPerformAction(action, withSender: sender) diff --git a/Tests/MisticaSwiftUITests/UI/InputFieldTests.swift b/Tests/MisticaSwiftUITests/UI/InputFieldTests.swift index 7096d20c7..78508d340 100644 --- a/Tests/MisticaSwiftUITests/UI/InputFieldTests.swift +++ b/Tests/MisticaSwiftUITests/UI/InputFieldTests.swift @@ -72,6 +72,33 @@ final class InputFieldTests: XCTestCase { as: .image ) } + + func testLongText() { + let input = makeTemplate(style: .text, text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ullamcorper at justo eget porta. Pellentesque sit amet felis vel eros commodo euismod vel quis nisl.") + + assertSnapshot( + matching: input, + as: .image + ) + } + + func testLongPlaceholder() { + let input = makeTemplate(style: .text, placeholder: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ullamcorper at justo eget porta. Pellentesque sit amet felis vel eros commodo euismod vel quis nisl.") + + assertSnapshot( + matching: input, + as: .image + ) + } + + func testLongAssistiveText() { + let input = makeTemplate(style: .text, assistiveText: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ullamcorper at justo eget porta. Pellentesque sit amet felis vel eros commodo euismod vel quis nisl.") + + assertSnapshot( + matching: input, + as: .image + ) + } } private extension InputFieldTests { diff --git a/Tests/MisticaSwiftUITests/UI/__Snapshots__/InputFieldTests/testLongAssistiveText.1.png b/Tests/MisticaSwiftUITests/UI/__Snapshots__/InputFieldTests/testLongAssistiveText.1.png new file mode 100644 index 000000000..375be9810 Binary files /dev/null and b/Tests/MisticaSwiftUITests/UI/__Snapshots__/InputFieldTests/testLongAssistiveText.1.png differ diff --git a/Tests/MisticaSwiftUITests/UI/__Snapshots__/InputFieldTests/testLongPlaceholder.1.png b/Tests/MisticaSwiftUITests/UI/__Snapshots__/InputFieldTests/testLongPlaceholder.1.png new file mode 100644 index 000000000..cba902414 Binary files /dev/null and b/Tests/MisticaSwiftUITests/UI/__Snapshots__/InputFieldTests/testLongPlaceholder.1.png differ diff --git a/Tests/MisticaSwiftUITests/UI/__Snapshots__/InputFieldTests/testLongText.1.png b/Tests/MisticaSwiftUITests/UI/__Snapshots__/InputFieldTests/testLongText.1.png new file mode 100644 index 000000000..502ada0e2 Binary files /dev/null and b/Tests/MisticaSwiftUITests/UI/__Snapshots__/InputFieldTests/testLongText.1.png differ