@@ -220,6 +220,23 @@ extension DomElementExtension on DomElement {
220220 external void remove ();
221221 external void setAttribute (String name, Object value);
222222 void appendText (String text) => append (createDomText (text));
223+ external void removeAttribute (String name);
224+ external set tabIndex (int ? value);
225+ external int ? get tabIndex;
226+ external void focus ();
227+
228+ /// [scrollTop] and [scrollLeft] can both return non-integers when using
229+ /// display scaling.
230+ ///
231+ /// The setters have a spurious round just in case the supplied [int] flowed
232+ /// from the non-static interop JS API. When all of Flutter Web has been
233+ /// migrated to static interop we can probably remove the rounds.
234+ int get scrollTop => js_util.getProperty (this , 'scrollTop' ).round ();
235+ set scrollTop (int value) =>
236+ js_util.setProperty <num >(this , 'scrollTop' , value.round ());
237+ int get scrollLeft => js_util.getProperty (this , 'scrollLeft' ).round ();
238+ set scrollLeft (int value) =>
239+ js_util.setProperty <num >(this , 'scrollLeft' , value.round ());
223240}
224241
225242@JS ()
@@ -287,6 +304,10 @@ extension DomCSSStyleDeclarationExtension on DomCSSStyleDeclaration {
287304 set alignItems (String value) => setProperty ('align-items' , value);
288305 set margin (String value) => setProperty ('margin' , value);
289306 set background (String value) => setProperty ('background' , value);
307+ set touchAction (String value) => setProperty ('touch-action' , value);
308+ set overflowY (String value) => setProperty ('overflow-y' , value);
309+ set overflowX (String value) => setProperty ('overflow-x' , value);
310+ set outline (String value) => setProperty ('outline' , value);
290311 String get width => getPropertyValue ('width' );
291312 String get height => getPropertyValue ('height' );
292313 String get position => getPropertyValue ('position' );
@@ -342,6 +363,10 @@ extension DomCSSStyleDeclarationExtension on DomCSSStyleDeclaration {
342363 String get alignItems => getPropertyValue ('align-items' );
343364 String get margin => getPropertyValue ('margin' );
344365 String get background => getPropertyValue ('background' );
366+ String get touchAction => getPropertyValue ('touch-action' );
367+ String get overflowY => getPropertyValue ('overflow-y' );
368+ String get overflowX => getPropertyValue ('overflow-x' );
369+ String get outline => getPropertyValue ('outline' );
345370
346371 external String getPropertyValue (String property);
347372 void setProperty (String propertyName, String value, [String ? priority]) {
@@ -359,7 +384,6 @@ class DomHTMLElement extends DomElement {}
359384
360385extension DomHTMLElementExtension on DomHTMLElement {
361386 int get offsetWidth => js_util.getProperty <num >(this , 'offsetWidth' ) as int ;
362- external void focus ();
363387}
364388
365389@JS ()
@@ -977,6 +1001,23 @@ extension DomTouchExtension on DomTouch {
9771001 external num ? get clientY;
9781002}
9791003
1004+ @JS ()
1005+ @staticInterop
1006+ class DomHTMLInputElement extends DomHTMLElement {}
1007+
1008+ extension DomHTMLInputElementExtension on DomHTMLInputElement {
1009+ external set type (String ? value);
1010+ external set max (String ? value);
1011+ external set min (String value);
1012+ external set value (String ? value);
1013+ external String ? get value;
1014+ external bool ? get disabled;
1015+ external set disabled (bool ? value);
1016+ }
1017+
1018+ DomHTMLInputElement createDomHTMLInputElement () =>
1019+ domDocument.createElement ('input' ) as DomHTMLInputElement ;
1020+
9801021Object ? domGetConstructor (String constructorName) =>
9811022 js_util.getProperty (domWindow, constructorName);
9821023
0 commit comments