Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 0514a21

Browse files
committed
set offset to -9999px instead of -999
1 parent c4380da commit 0514a21

File tree

3 files changed

+10
-6
lines changed

3 files changed

+10
-6
lines changed

lib/web_ui/lib/src/engine/semantics/text_field.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,7 @@ class TextField extends RoleManager {
384384
}
385385

386386
_initializeEditableElement();
387-
activeEditableElement.style.transform = 'translate(-999px,-999px)';
387+
activeEditableElement.style.transform = 'translate(${offScreenOffset}px, ${offScreenOffset}px)';
388388
_positionInputElementTimer?.cancel();
389389
_positionInputElementTimer = Timer(_delayBeforePlacement, () {
390390
editableElement?.style.transform = '';

lib/web_ui/lib/src/engine/text_editing/text_editing.dart

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ bool _debugPrintTextInputCommands = false;
3434
/// The `keyCode` of the "Enter" key.
3535
const int _kReturnKeyCode = 13;
3636

37+
/// Offset in pixels to place an element outside of the screen.
38+
const int offScreenOffset = -9999;
39+
3740
/// Blink and Webkit engines, bring an overlay on top of the text field when it
3841
/// is autofilled.
3942
bool browserHasAutofillOverlay() =>
@@ -119,8 +122,8 @@ void _hideAutofillElements(DomHTMLElement domElement,
119122

120123
if (isOffScreen) {
121124
elementStyle
122-
..top = '-9999px'
123-
..left = '-9999px';
125+
..top = '${offScreenOffset}px'
126+
..left = '${offScreenOffset}px';
124127
}
125128

126129
if (browserHasAutofillOverlay()) {
@@ -1509,7 +1512,7 @@ class IOSTextEditingStrategy extends GloballyPositionedTextEditingStrategy {
15091512
/// Position the element outside of the page before focusing on it. This is
15101513
/// useful for not triggering a scroll when iOS virtual keyboard is
15111514
/// coming up.
1512-
activeDomElement.style.transform = 'translate(-9999px, -9999px)';
1515+
activeDomElement.style.transform = 'translate(${offScreenOffset}px, ${offScreenOffset}px)';
15131516

15141517
_canPosition = false;
15151518
}

lib/web_ui/test/engine/semantics/text_field_test.dart

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -776,8 +776,9 @@ void testMain() {
776776
value: 'hello',
777777
isFocused: true,
778778
);
779-
expect(strategy.activeDomElement.style.transform, 'translate(-999px, -999px)');
780-
await Future<void>.delayed(const Duration(milliseconds: 201) , (){});
779+
expect(strategy.activeDomElement.style.transform, 'translate(${offScreenOffset}px, ${offScreenOffset}px)');
780+
// See [_delayBeforePlacement].
781+
await Future<void>.delayed(const Duration(milliseconds: 120) , (){});
781782
expect(strategy.activeDomElement.style.transform, '');
782783
});
783784

0 commit comments

Comments
 (0)