001/*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements.  See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License.  You may obtain a copy of the License at
008 *
009 *      http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017package org.apache.juneau.bean.html5;
018
019import java.net.*;
020
021import org.apache.juneau.annotation.*;
022import org.apache.juneau.internal.*;
023
024/**
025 * DTO for an HTML <a class="doclink" href="https://www.w3.org/TR/html5/forms.html#the-input-element">&lt;input&gt;</a>
026 * element.
027 *
028 * <p>
029 * The input element represents a form control that allows users to input data. It is a void element
030 * that can take many different forms depending on the type attribute, including text fields, checkboxes,
031 * radio buttons, file uploads, and more. The input element is one of the most versatile and commonly
032 * used form controls in HTML.
033 *
034 * <h5 class='section'>Examples:</h5>
035 * <p class='bcode w800'>
036 *    <jk>import static</jk> org.apache.juneau.bean.html5.HtmlBuilder.*;
037 * 
038 *    <jc>// Text input field</jc>
039 *    Input <jv>input1</jv> = <jsm>input</jsm>(<js>"text"</js>)
040 *       .name(<js>"username"</js>)
041 *       .placeholder(<js>"Enter your username"</js>)
042 *       .required(<jk>true</jk>);
043 * 
044 *    <jc>// Email input with validation</jc>
045 *    Input <jv>input2</jv> = <jsm>input</jsm>(<js>"email"</js>)
046 *       .name(<js>"email"</js>)
047 *       .placeholder(<js>"your@email.com"</js>)
048 *       .autocomplete(<js>"email"</js>);
049 * 
050 *    <jc>// File upload input</jc>
051 *    Input <jv>input3</jv> = <jsm>input</jsm>(<js>"file"</js>)
052 *       .name(<js>"avatar"</js>)
053 *       .accept(<js>"image/*"</js>)
054 *       .multiple(<jk>true</jk>);
055 * 
056 *    <jc>// Checkbox input</jc>
057 *    Input <jv>input4</jv> = <jsm>input</jsm>(<js>"checkbox"</js>)
058 *       .name(<js>"subscribe"</js>)
059 *       .value(<js>"yes"</js>)
060 *       .checked(<jk>true</jk>);
061 * 
062 *    <jc>// Password input with pattern</jc>
063 *    Input <jv>input5</jv> = <jsm>input</jsm>(<js>"password"</js>)
064 *       .name(<js>"password"</js>)
065 *       .pattern(<js>".{8,}"</js>)
066 *       .title(<js>"Password must be at least 8 characters"</js>);
067 * </p>
068 *
069 * <p>
070 * The following convenience methods are provided for constructing instances of this bean:
071 * <ul class='javatree'>
072 *    <li class='jc'>{@link HtmlBuilder}
073 *    <ul class='javatree'>
074 *       <li class='jm'>{@link HtmlBuilder#input() input()}
075 *       <li class='jm'>{@link HtmlBuilder#input(String) input(String)}
076 *    </ul>
077 * </ul>
078 * </p>
079 *
080 * <h5 class='section'>See Also:</h5><ul>
081 *    <li class='link'><a class="doclink" href="https://juneau.apache.org/docs/topics/JuneauBeanHtml5">juneau-bean-html5</a>
082 * </ul>
083 */
084@Bean(typeName="input")
085public class Input extends HtmlElementVoid {
086
087   /**
088    * Creates an empty {@link Input} element.
089    */
090   public Input() {}
091
092   /**
093    * Creates an {@link Input} element with the specified {@link Input#type(String)} attribute.
094    *
095    * @param type The {@link Input#type(String)} attribute.
096    */
097   public Input(String type) {
098      type(type);
099   }
100
101   /**
102    * <a class="doclink" href="https://www.w3.org/TR/html5/forms.html#attr-input-accept">accept</a> attribute.
103    *
104    * <p>
105    * Specifies which file types the file input should accept. Used with <c>type="file"</c>.
106    *
107    * <p>
108    * Examples:
109    * <ul>
110    *    <li><js>"image/*"</js> - Accept all image files</li>
111    *    <li><js>".pdf,.doc,.docx"</js> - Accept specific file extensions</li>
112    *    <li><js>"image/png,image/jpeg"</js> - Accept specific MIME types</li>
113    * </ul>
114    *
115    * @param accept File type restrictions for file uploads.
116    * @return This object.
117    */
118   public Input accept(String value) {
119      attr("accept", value);
120      return this;
121   }
122
123   /**
124    * <a class="doclink" href="https://www.w3.org/TR/html5/forms.html#attr-input-alt">alt</a> attribute.
125    *
126    * <p>
127    * Alternative text for image submit buttons. Used with <c>type="image"</c> to provide
128    * accessible text when the image cannot be displayed.
129    *
130    * @param alt Alternative text for image submit buttons.
131    * @return This object.
132    */
133   public Input alt(String value) {
134      attr("alt", value);
135      return this;
136   }
137
138   /**
139    * <a class="doclink" href="https://www.w3.org/TR/html5/forms.html#attr-fe-autocomplete">autocomplete</a> attribute.
140    *
141    * <p>
142    * Controls whether the browser can automatically complete the input field.
143    *
144    * <p>
145    * Common values:
146    * <ul>
147    *    <li><js>"on"</js> - Allow autocomplete (default)</li>
148    *    <li><js>"off"</js> - Disable autocomplete</li>
149    *    <li><js>"name"</js> - Full name</li>
150    *    <li><js>"email"</js> - Email address</li>
151    *    <li><js>"username"</js> - Username or login</li>
152    *    <li><js>"current-password"</js> - Current password</li>
153    *    <li><js>"new-password"</js> - New password</li>
154    *    <li><js>"tel"</js> - Telephone number</li>
155    *    <li><js>"url"</js> - URL</li>
156    *    <li><js>"address-line1"</js> - Street address</li>
157    *    <li><js>"country"</js> - Country name</li>
158    *    <li><js>"postal-code"</js> - Postal code</li>
159    * </ul>
160    *
161    * @param autocomplete Autocomplete hint for the input field.
162    * @return This object.
163    */
164   public Input autocomplete(String value) {
165      attr("autocomplete", value);
166      return this;
167   }
168
169   /**
170    * <a class="doclink" href="https://www.w3.org/TR/html5/forms.html#attr-fe-autofocus">autofocus</a> attribute.
171    *
172    * <p>
173    * Automatically focuses the form control when the page loads.
174    * Only one element per page should have this attribute.
175    *
176    * @param autofocus
177    *    The new value for this attribute.
178    *    Typically a {@link Boolean} or {@link String}.
179    * @return This object.
180    */
181   public Input autofocus(Object value) {
182      attr("autofocus", value);
183      return this;
184   }
185
186   /**
187    * <a class="doclink" href="https://www.w3.org/TR/html5/forms.html#attr-input-checked">checked</a> attribute.
188    *
189    * <p>
190    * Whether the command or control is checked.
191    *
192    * <p>
193    * This attribute uses deminimized values:
194    * <ul>
195    *    <li><jk>false</jk> - Attribute is not added</li>
196    *    <li><jk>true</jk> - Attribute is added as <js>"checked"</js></li>
197    *    <li>Other values - Passed through as-is</li>
198    * </ul>
199    *
200    * @param checked
201    *    The new value for this attribute.
202    *    Typically a {@link Boolean} or {@link String}.
203    * @return This object.
204    */
205   public Input checked(Object value) {
206      attr("checked", deminimize(value, "checked"));
207      return this;
208   }
209
210   /**
211    * <a class="doclink" href="https://www.w3.org/TR/html5/forms.html#attr-fe-dirname">dirname</a> attribute.
212    *
213    * <p>
214    * Specifies the name of a hidden form field that will be submitted along with the input value,
215    * containing the text direction (ltr or rtl) of the input content.
216    *
217    * <p>
218    * This is useful for forms that need to preserve text direction information when submitted.
219    * The hidden field will contain either "ltr" or "rtl" based on the input's direction.
220    *
221    * @param dirname The name of the hidden field for directionality information.
222    * @return This object.
223    */
224   public Input dirname(String value) {
225      attr("dirname", value);
226      return this;
227   }
228
229   /**
230    * <a class="doclink" href="https://www.w3.org/TR/html5/forms.html#attr-fe-disabled">disabled</a> attribute.
231    *
232    * <p>
233    * Whether the form control is disabled.
234    *
235    * <p>
236    * This attribute uses deminimized values:
237    * <ul>
238    *    <li><jk>false</jk> - Attribute is not added</li>
239    *    <li><jk>true</jk> - Attribute is added as <js>"disabled"</js></li>
240    *    <li>Other values - Passed through as-is</li>
241    * </ul>
242    *
243    * @param disabled
244    *    The new value for this attribute.
245    *    Typically a {@link Boolean} or {@link String}.
246    * @return This object.
247    */
248   public Input disabled(Object value) {
249      attr("disabled", deminimize(value, "disabled"));
250      return this;
251   }
252
253   /**
254    * <a class="doclink" href="https://www.w3.org/TR/html5/forms.html#attr-fae-form">form</a> attribute.
255    *
256    * <p>
257    * Associates the input with a form element by specifying the form's ID. This allows the input
258    * to be placed outside the form element while still being part of the form.
259    *
260    * <p>
261    * The value should match the ID of a form element in the same document.
262    *
263    * @param form The ID of the form element to associate with this input.
264    * @return This object.
265    */
266   public Input form(String value) {
267      attr("form", value);
268      return this;
269   }
270
271   /**
272    * <a class="doclink" href="https://www.w3.org/TR/html5/forms.html#attr-fs-formaction">formaction</a> attribute.
273    *
274    * <p>
275    * URL to use for form submission.
276    *
277    * @param formaction The new value for this attribute.
278    * @return This object.
279    */
280   public Input formaction(String value) {
281      attr("formaction", value);
282      return this;
283   }
284
285   /**
286    * <a class="doclink" href="https://www.w3.org/TR/html5/forms.html#attr-fs-formenctype">formenctype</a> attribute.
287    *
288    * <p>
289    * Form data set encoding type to use for form submission.
290    *
291    * @param formenctype The new value for this attribute.
292    * @return This object.
293    */
294   public Input formenctype(String value) {
295      attr("formenctype", value);
296      return this;
297   }
298
299   /**
300    * <a class="doclink" href="https://www.w3.org/TR/html5/forms.html#attr-fs-formmethod">formmethod</a> attribute.
301    *
302    * <p>
303    * HTTP method to use for form submission.
304    *
305    * @param formmethod The new value for this attribute.
306    * @return This object.
307    */
308   public Input formmethod(String value) {
309      attr("formmethod", value);
310      return this;
311   }
312
313   /**
314    * <a class="doclink" href="https://www.w3.org/TR/html5/forms.html#attr-fs-formnovalidate">formnovalidate</a>
315    * attribute.
316    *
317    * <p>
318    * Bypass form control validation for form submission.
319    *
320    * @param formnovalidate The new value for this attribute.
321    * @return This object.
322    */
323   public Input formnovalidate(String value) {
324      attr("formnovalidate", value);
325      return this;
326   }
327
328   /**
329    * <a class="doclink" href="https://www.w3.org/TR/html5/forms.html#attr-fs-formtarget">formtarget</a> attribute.
330    *
331    * <p>
332    * Browsing context for form submission.
333    *
334    * @param formtarget The new value for this attribute.
335    * @return This object.
336    */
337   public Input formtarget(String value) {
338      attr("formtarget", value);
339      return this;
340   }
341
342   /**
343    * <a class="doclink" href="https://www.w3.org/TR/html5/embedded-content-0.html#attr-dim-height">height</a>
344    * attribute.
345    *
346    * <p>
347    * Vertical dimension.
348    *
349    * @param height
350    *    The new value for this attribute.
351    *    Typically a {@link Number} or {@link String}.
352    * @return This object.
353    */
354   public Input height(Object value) {
355      attr("height", value);
356      return this;
357   }
358
359   /**
360    * <a class="doclink" href="https://www.w3.org/TR/html5/embedded-content-0.html#attr-input-inputmode">inputmode</a>
361    * attribute.
362    *
363    * <p>
364    * Provides a hint to browsers about the type of virtual keyboard to display on mobile devices.
365    *
366    * <p>
367    * Possible values:
368    * <ul>
369    *    <li><js>"none"</js> - No virtual keyboard</li>
370    *    <li><js>"text"</js> - Standard text keyboard (default)</li>
371    *    <li><js>"tel"</js> - Numeric keypad for telephone numbers</li>
372    *    <li><js>"url"</js> - Keyboard optimized for URLs</li>
373    *    <li><js>"email"</js> - Keyboard optimized for email addresses</li>
374    *    <li><js>"numeric"</js> - Numeric keypad</li>
375    *    <li><js>"decimal"</js> - Numeric keypad with decimal point</li>
376    *    <li><js>"search"</js> - Keyboard optimized for search</li>
377    * </ul>
378    *
379    * @param inputmode The input modality hint for mobile keyboards.
380    * @return This object.
381    */
382   public Input inputmode(String value) {
383      attr("inputmode", value);
384      return this;
385   }
386
387   /**
388    * <a class="doclink" href="https://www.w3.org/TR/html5/forms.html#attr-input-list">list</a> attribute.
389    *
390    * <p>
391    * References a <c>&lt;datalist&gt;</c> element that provides predefined options
392    * for the input field. Creates a dropdown with autocomplete suggestions.
393    *
394    * @param list The ID of a datalist element (without the # prefix).
395    * @return This object.
396    */
397   public Input list(String value) {
398      attr("list", value);
399      return this;
400   }
401
402   /**
403    * <a class="doclink" href="https://www.w3.org/TR/html5/forms.html#attr-input-max">max</a> attribute.
404    *
405    * <p>
406    * Maximum value.
407    *
408    * @param max
409    *    The new value for this attribute.
410    *    Typically a {@link Number} or {@link String}.
411    * @return This object.
412    */
413   public Input max(Object value) {
414      attr("max", value);
415      return this;
416   }
417
418   /**
419    * <a class="doclink" href="https://www.w3.org/TR/html5/forms.html#attr-input-maxlength">maxlength</a> attribute.
420    * Maximum length of value.
421    *
422    * @param maxlength The new value for this attribute.
423    * Typically a {@link Number} or {@link String}.
424    * @return This object.
425    */
426   public Input maxlength(Object value) {
427      attr("maxlength", value);
428      return this;
429   }
430
431   /**
432    * <a class="doclink" href="https://www.w3.org/TR/html5/forms.html#attr-input-min">min</a> attribute.
433    *
434    * <p>
435    * Minimum value.
436    *
437    * @param min
438    *    The new value for this attribute.
439    *    Typically a {@link Number} or {@link String}.
440    * @return This object.
441    */
442   public Input min(Object value) {
443      attr("min", value);
444      return this;
445   }
446
447   /**
448    * <a class="doclink" href="https://www.w3.org/TR/html5/forms.html#attr-input-minlength">minlength</a> attribute.
449    *
450    * <p>
451    * Minimum length of value.
452    *
453    * @param minlength
454    *    The new value for this attribute.
455    *    Typically a {@link Number} or {@link String}.
456    * @return This object.
457    */
458   public Input minlength(Object value) {
459      attr("minlength", value);
460      return this;
461   }
462
463   /**
464    * <a class="doclink" href="https://www.w3.org/TR/html5/forms.html#attr-input-multiple">multiple</a> attribute.
465    *
466    * <p>
467    * Whether to allow multiple values.
468    *
469    * <p>
470    * This attribute uses deminimized values:
471    * <ul>
472    *    <li><jk>false</jk> - Attribute is not added</li>
473    *    <li><jk>true</jk> - Attribute is added as <js>"multiple"</js></li>
474    *    <li>Other values - Passed through as-is</li>
475    * </ul>
476    *
477    * @param multiple
478    *    The new value for this attribute.
479    *    Typically a {@link Boolean} or {@link String}.
480    * @return This object.
481    */
482   public Input multiple(Object value) {
483      attr("multiple", deminimize(value, "multiple"));
484      return this;
485   }
486
487   /**
488    * <a class="doclink" href="https://www.w3.org/TR/html5/forms.html#attr-fe-name">name</a> attribute.
489    *
490    * <p>
491    * Name of form control to use for form submission and in the form.elements API.
492    *
493    * @param name The new value for this attribute.
494    * @return This object.
495    */
496   public Input name(String value) {
497      attr("name", value);
498      return this;
499   }
500
501   /**
502    * <a class="doclink" href="https://www.w3.org/TR/html5/forms.html#attr-input-pattern">pattern</a> attribute.
503    *
504    * <p>
505    * Specifies a regular expression that the input's value must match for the form to be valid.
506    * Works with the <c>title</c> attribute to provide user feedback.
507    *
508    * @param pattern A regular expression pattern (e.g., <js>"[0-9]{3}-[0-9]{3}-[0-9]{4}"</js> for phone numbers).
509    * @return This object.
510    */
511   public Input pattern(String value) {
512      attr("pattern", value);
513      return this;
514   }
515
516   /**
517    * <a class="doclink" href="https://www.w3.org/TR/html5/forms.html#attr-input-placeholder">placeholder</a> attribute.
518    *
519    * <p>
520    * Provides a hint to the user about what to enter in the input field.
521    * The placeholder text appears when the field is empty and disappears when the user starts typing.
522    *
523    * @param placeholder Hint text to display in the empty input field.
524    * @return This object.
525    */
526   public Input placeholder(String value) {
527      attr("placeholder", value);
528      return this;
529   }
530
531   /**
532    * <a class="doclink" href="https://www.w3.org/TR/html5/forms.html#attr-input-readonly">readonly</a> attribute.
533    *
534    * <p>
535    * Makes the input field read-only, preventing user modification while still allowing
536    * the value to be submitted with the form.
537    *
538    * @param readonly If <jk>true</jk>, makes the input read-only.
539    * @return This object.
540    */
541   public Input readonly(Object value) {
542      attr("readonly", value);
543      return this;
544   }
545
546
547   /**
548    * <a class="doclink" href="https://www.w3.org/TR/html5/forms.html#attr-input-readonly">readonly</a> attribute.
549    *
550    * <p>
551    * Whether to allow the value to be edited by the user.
552    *
553    * @param value If <jk>true</jk>, adds <c>readonly="readonly"</c>.
554    * @return This object.
555    */
556   public Input readonly(boolean value) {
557      if (value)
558         value("value");
559      return this;
560   }
561
562   /**
563    * <a class="doclink" href="https://www.w3.org/TR/html5/forms.html#attr-input-readonly">required</a> attribute.
564    *
565    * <p>
566    * Indicates that the input field must be filled out before the form can be submitted.
567    * Browsers will show validation messages for empty required fields.
568    *
569    * @param required If <jk>true</jk>, makes the input required for form submission.
570    * @return This object.
571    */
572   public Input required(Object value) {
573      attr("required", value);
574      return this;
575   }
576
577   /**
578    * <a class="doclink" href="https://www.w3.org/TR/html5/forms.html#attr-input-size">size</a> attribute.
579    *
580    * <p>
581    * Size of the control.
582    *
583    * @param size
584    *    The new value for this attribute.
585    *    Typically a {@link Number} or {@link String}.
586    * @return This object.
587    */
588   public Input size(Object value) {
589      attr("size", value);
590      return this;
591   }
592
593   /**
594    * <a class="doclink" href="https://www.w3.org/TR/html5/forms.html#attr-input-src">src</a> attribute.
595    *
596    * <p>
597    * Address of the resource.
598    *
599    * @param src
600    *    The new value for this attribute.
601    *    Typically a {@link URL} or {@link String}.
602    * @return This object.
603    */
604   public Input src(Object value) {
605      attr("src", value);
606      return this;
607   }
608
609   /**
610    * <a class="doclink" href="https://www.w3.org/TR/html5/forms.html#attr-input-step">step</a> attribute.
611    *
612    * <p>
613    * Granularity to be matched by the form control's value.
614    *
615    * @param step The new value for this attribute.
616    * @return This object.
617    */
618   public Input step(String value) {
619      attr("step", value);
620      return this;
621   }
622
623   /**
624    * <a class="doclink" href="https://www.w3.org/TR/html5/forms.html#attr-input-type">type</a> attribute.
625    *
626    * <p>
627    * Specifies the type of form control to display.
628    *
629    * <p>
630    * Common values:
631    * <ul>
632    *    <li><js>"text"</js> - Single-line text input (default)</li>
633    *    <li><js>"password"</js> - Password input (characters are masked)</li>
634    *    <li><js>"email"</js> - Email address input with validation</li>
635    *    <li><js>"number"</js> - Numeric input with spinner controls</li>
636    *    <li><js>"tel"</js> - Telephone number input</li>
637    *    <li><js>"url"</js> - URL input with validation</li>
638    *    <li><js>"search"</js> - Search input field</li>
639    *    <li><js>"date"</js> - Date picker</li>
640    *    <li><js>"time"</js> - Time picker</li>
641    *    <li><js>"datetime-local"</js> - Date and time picker</li>
642    *    <li><js>"checkbox"</js> - Checkbox input</li>
643    *    <li><js>"radio"</js> - Radio button input</li>
644    *    <li><js>"file"</js> - File upload input</li>
645    *    <li><js>"submit"</js> - Submit button</li>
646    *    <li><js>"button"</js> - Generic button</li>
647    *    <li><js>"reset"</js> - Reset form button</li>
648    *    <li><js>"hidden"</js> - Hidden input field</li>
649    * </ul>
650    *
651    * @param type The input type for the form control.
652    * @return This object.
653    */
654   public Input type(String value) {
655      attr("type", value);
656      return this;
657   }
658
659   /**
660    * <a class="doclink" href="https://www.w3.org/TR/html5/forms.html#attr-input-value">value</a> attribute.
661    *
662    * <p>
663    * Value of the form control.
664    *
665    * @param value
666    *    The new value for this attribute.
667    *    Typically a {@link Number} or {@link String}.
668    * @return This object.
669    */
670   public Input value(Object value) {
671      attr("value", value);
672      return this;
673   }
674
675   /**
676    * <a class="doclink" href="https://www.w3.org/TR/html5/embedded-content-0.html#attr-dim-width">width</a> attribute.
677    *
678    * <p>
679    * Horizontal dimension.
680    *
681    * @param width
682    *    The new value for this attribute.
683    *    Typically a {@link Number} or {@link String}.
684    * @return This object.
685    */
686   public Input width(Object value) {
687      attr("width", value);
688      return this;
689   }
690
691   //-----------------------------------------------------------------------------------------------------------------
692   // Overridden methods
693   //-----------------------------------------------------------------------------------------------------------------
694   @Override /* Overridden from HtmlElement */
695   public Input _class(String value) {  // NOSONAR - Intentional naming.
696      super._class(value);
697      return this;
698   }
699
700   @Override /* Overridden from HtmlElement */
701   public Input accesskey(String value) {
702      super.accesskey(value);
703      return this;
704   }
705
706   @Override /* Overridden from HtmlElement */
707   public Input contenteditable(Object value) {
708      super.contenteditable(value);
709      return this;
710   }
711
712   @Override /* Overridden from HtmlElement */
713   public Input dir(String value) {
714      super.dir(value);
715      return this;
716   }
717
718   @Override /* Overridden from HtmlElement */
719   public Input hidden(Object value) {
720      super.hidden(value);
721      return this;
722   }
723
724   @Override /* Overridden from HtmlElement */
725   public Input id(String value) {
726      super.id(value);
727      return this;
728   }
729
730   @Override /* Overridden from HtmlElement */
731   public Input lang(String value) {
732      super.lang(value);
733      return this;
734   }
735
736   @Override /* Overridden from HtmlElement */
737   public Input onabort(String value) {
738      super.onabort(value);
739      return this;
740   }
741
742   @Override /* Overridden from HtmlElement */
743   public Input onblur(String value) {
744      super.onblur(value);
745      return this;
746   }
747
748   @Override /* Overridden from HtmlElement */
749   public Input oncancel(String value) {
750      super.oncancel(value);
751      return this;
752   }
753
754   @Override /* Overridden from HtmlElement */
755   public Input oncanplay(String value) {
756      super.oncanplay(value);
757      return this;
758   }
759
760   @Override /* Overridden from HtmlElement */
761   public Input oncanplaythrough(String value) {
762      super.oncanplaythrough(value);
763      return this;
764   }
765
766   @Override /* Overridden from HtmlElement */
767   public Input onchange(String value) {
768      super.onchange(value);
769      return this;
770   }
771
772   @Override /* Overridden from HtmlElement */
773   public Input onclick(String value) {
774      super.onclick(value);
775      return this;
776   }
777
778   @Override /* Overridden from HtmlElement */
779   public Input oncuechange(String value) {
780      super.oncuechange(value);
781      return this;
782   }
783
784   @Override /* Overridden from HtmlElement */
785   public Input ondblclick(String value) {
786      super.ondblclick(value);
787      return this;
788   }
789
790   @Override /* Overridden from HtmlElement */
791   public Input ondurationchange(String value) {
792      super.ondurationchange(value);
793      return this;
794   }
795
796   @Override /* Overridden from HtmlElement */
797   public Input onemptied(String value) {
798      super.onemptied(value);
799      return this;
800   }
801
802   @Override /* Overridden from HtmlElement */
803   public Input onended(String value) {
804      super.onended(value);
805      return this;
806   }
807
808   @Override /* Overridden from HtmlElement */
809   public Input onerror(String value) {
810      super.onerror(value);
811      return this;
812   }
813
814   @Override /* Overridden from HtmlElement */
815   public Input onfocus(String value) {
816      super.onfocus(value);
817      return this;
818   }
819
820   @Override /* Overridden from HtmlElement */
821   public Input oninput(String value) {
822      super.oninput(value);
823      return this;
824   }
825
826   @Override /* Overridden from HtmlElement */
827   public Input oninvalid(String value) {
828      super.oninvalid(value);
829      return this;
830   }
831
832   @Override /* Overridden from HtmlElement */
833   public Input onkeydown(String value) {
834      super.onkeydown(value);
835      return this;
836   }
837
838   @Override /* Overridden from HtmlElement */
839   public Input onkeypress(String value) {
840      super.onkeypress(value);
841      return this;
842   }
843
844   @Override /* Overridden from HtmlElement */
845   public Input onkeyup(String value) {
846      super.onkeyup(value);
847      return this;
848   }
849
850   @Override /* Overridden from HtmlElement */
851   public Input onload(String value) {
852      super.onload(value);
853      return this;
854   }
855
856   @Override /* Overridden from HtmlElement */
857   public Input onloadeddata(String value) {
858      super.onloadeddata(value);
859      return this;
860   }
861
862   @Override /* Overridden from HtmlElement */
863   public Input onloadedmetadata(String value) {
864      super.onloadedmetadata(value);
865      return this;
866   }
867
868   @Override /* Overridden from HtmlElement */
869   public Input onloadstart(String value) {
870      super.onloadstart(value);
871      return this;
872   }
873
874   @Override /* Overridden from HtmlElement */
875   public Input onmousedown(String value) {
876      super.onmousedown(value);
877      return this;
878   }
879
880   @Override /* Overridden from HtmlElement */
881   public Input onmouseenter(String value) {
882      super.onmouseenter(value);
883      return this;
884   }
885
886   @Override /* Overridden from HtmlElement */
887   public Input onmouseleave(String value) {
888      super.onmouseleave(value);
889      return this;
890   }
891
892   @Override /* Overridden from HtmlElement */
893   public Input onmousemove(String value) {
894      super.onmousemove(value);
895      return this;
896   }
897
898   @Override /* Overridden from HtmlElement */
899   public Input onmouseout(String value) {
900      super.onmouseout(value);
901      return this;
902   }
903
904   @Override /* Overridden from HtmlElement */
905   public Input onmouseover(String value) {
906      super.onmouseover(value);
907      return this;
908   }
909
910   @Override /* Overridden from HtmlElement */
911   public Input onmouseup(String value) {
912      super.onmouseup(value);
913      return this;
914   }
915
916   @Override /* Overridden from HtmlElement */
917   public Input onmousewheel(String value) {
918      super.onmousewheel(value);
919      return this;
920   }
921
922   @Override /* Overridden from HtmlElement */
923   public Input onpause(String value) {
924      super.onpause(value);
925      return this;
926   }
927
928   @Override /* Overridden from HtmlElement */
929   public Input onplay(String value) {
930      super.onplay(value);
931      return this;
932   }
933
934   @Override /* Overridden from HtmlElement */
935   public Input onplaying(String value) {
936      super.onplaying(value);
937      return this;
938   }
939
940   @Override /* Overridden from HtmlElement */
941   public Input onprogress(String value) {
942      super.onprogress(value);
943      return this;
944   }
945
946   @Override /* Overridden from HtmlElement */
947   public Input onratechange(String value) {
948      super.onratechange(value);
949      return this;
950   }
951
952   @Override /* Overridden from HtmlElement */
953   public Input onreset(String value) {
954      super.onreset(value);
955      return this;
956   }
957
958   @Override /* Overridden from HtmlElement */
959   public Input onresize(String value) {
960      super.onresize(value);
961      return this;
962   }
963
964   @Override /* Overridden from HtmlElement */
965   public Input onscroll(String value) {
966      super.onscroll(value);
967      return this;
968   }
969
970   @Override /* Overridden from HtmlElement */
971   public Input onseeked(String value) {
972      super.onseeked(value);
973      return this;
974   }
975
976   @Override /* Overridden from HtmlElement */
977   public Input onseeking(String value) {
978      super.onseeking(value);
979      return this;
980   }
981
982   @Override /* Overridden from HtmlElement */
983   public Input onselect(String value) {
984      super.onselect(value);
985      return this;
986   }
987
988   @Override /* Overridden from HtmlElement */
989   public Input onshow(String value) {
990      super.onshow(value);
991      return this;
992   }
993
994   @Override /* Overridden from HtmlElement */
995   public Input onstalled(String value) {
996      super.onstalled(value);
997      return this;
998   }
999
1000   @Override /* Overridden from HtmlElement */
1001   public Input onsubmit(String value) {
1002      super.onsubmit(value);
1003      return this;
1004   }
1005
1006   @Override /* Overridden from HtmlElement */
1007   public Input onsuspend(String value) {
1008      super.onsuspend(value);
1009      return this;
1010   }
1011
1012   @Override /* Overridden from HtmlElement */
1013   public Input ontimeupdate(String value) {
1014      super.ontimeupdate(value);
1015      return this;
1016   }
1017
1018   @Override /* Overridden from HtmlElement */
1019   public Input ontoggle(String value) {
1020      super.ontoggle(value);
1021      return this;
1022   }
1023
1024   @Override /* Overridden from HtmlElement */
1025   public Input onvolumechange(String value) {
1026      super.onvolumechange(value);
1027      return this;
1028   }
1029
1030   @Override /* Overridden from HtmlElement */
1031   public Input onwaiting(String value) {
1032      super.onwaiting(value);
1033      return this;
1034   }
1035
1036   @Override /* Overridden from HtmlElement */
1037   public Input spellcheck(Object value) {
1038      super.spellcheck(value);
1039      return this;
1040   }
1041
1042   @Override /* Overridden from HtmlElement */
1043   public Input style(String value) {
1044      super.style(value);
1045      return this;
1046   }
1047
1048   @Override /* Overridden from HtmlElement */
1049   public Input tabindex(Object value) {
1050      super.tabindex(value);
1051      return this;
1052   }
1053
1054   @Override /* Overridden from HtmlElement */
1055   public Input title(String value) {
1056      super.title(value);
1057      return this;
1058   }
1059
1060   @Override /* Overridden from HtmlElement */
1061   public Input translate(Object value) {
1062      super.translate(value);
1063      return this;
1064   }
1065}