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

Commit 961791d

Browse files
committed
set offset to -9999px instead of -999
1 parent 0a29b79 commit 961791d

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
@@ -402,7 +402,7 @@ class TextField extends RoleManager {
402402
}
403403

404404
_initializeEditableElement();
405-
activeEditableElement.style.transform = 'translate(-999px,-999px)';
405+
activeEditableElement.style.transform = 'translate(${offScreenOffset}px, ${offScreenOffset}px)';
406406
_positionInputElementTimer?.cancel();
407407
_positionInputElementTimer = Timer(_delayBeforePlacement, () {
408408
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
@@ -687,8 +687,9 @@ void testMain() {
687687
value: 'hello',
688688
isFocused: true,
689689
);
690-
expect(strategy.activeDomElement.style.transform, 'translate(-999px, -999px)');
691-
await Future<void>.delayed(const Duration(milliseconds: 201) , (){});
690+
expect(strategy.activeDomElement.style.transform, 'translate(${offScreenOffset}px, ${offScreenOffset}px)');
691+
// See [_delayBeforePlacement].
692+
await Future<void>.delayed(const Duration(milliseconds: 120) , (){});
692693
expect(strategy.activeDomElement.style.transform, '');
693694
});
694695

0 commit comments

Comments
 (0)