Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(434)

Unified Diff: sdk/lib/html/templates/html/impl/impl_HTMLInputElement.darttemplate

Issue 11470025: Adding interfaces for various types of InputElement (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sdk/lib/html/dartium/html_dartium.dart ('k') | tests/html/html.status » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sdk/lib/html/templates/html/impl/impl_HTMLInputElement.darttemplate
diff --git a/sdk/lib/html/templates/html/impl/impl_HTMLInputElement.darttemplate b/sdk/lib/html/templates/html/impl/impl_HTMLInputElement.darttemplate
new file mode 100644
index 0000000000000000000000000000000000000000..a4c4e9a6383271f581b1aadf59ff0dbeacaf9d68
--- /dev/null
+++ b/sdk/lib/html/templates/html/impl/impl_HTMLInputElement.darttemplate
@@ -0,0 +1,498 @@
+// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+part of $LIBRARYNAME;
+
+/// @domName $DOMNAME
+class $CLASSNAME$EXTENDS implements
+ HiddenInputElement,
+ SearchInputElement,
+ TextInputElement,
+ UrlInputElement,
+ TelephoneInputElement,
+ EmailInputElement,
+ PasswordInputElement,
+ DateTimeInputElement,
+ DateInputElement,
+ MonthInputElement,
+ WeekInputElement,
+ TimeInputElement,
+ LocalDateTimeInputElement,
+ NumberInputElement,
+ RangeInputElement,
+ CheckboxInputElement,
+ RadioButtonInputElement,
+ FileUploadInputElement,
+ SubmitButtonInputElement,
+ ImageButtonInputElement,
+ ResetButtonInputElement,
+ ButtonInputElement
+ $NATIVESPEC {
+$!MEMBERS
+}
+
+
+// Interfaces representing the InputElement APIs which are supported
+// for the various types of InputElement.
+// From http://dev.w3.org/html5/spec/the-input-element.html#the-input-element.
+
+/**
+ * Exposes the functionality common between all InputElement types.
+ */
+abstract class InputElementBase implements Element {
+ /// @domName HTMLInputElement.autofocus
+ bool autofocus;
+
+ /// @domName HTMLInputElement.disabled
+ bool disabled;
+
+ /// @domName HTMLInputElement.incremental
+ bool incremental;
+
+ /// @domName HTMLInputElement.indeterminate
+ bool indeterminate;
+
+ /// @domName HTMLInputElement.labels
+ List<Node> get labels;
+
+ /// @domName HTMLInputElement.name
+ String name;
+
+ /// @domName HTMLInputElement.validationMessage
+ String get validationMessage;
+
+ /// @domName HTMLInputElement.validity
+ ValidityState get validity;
+
+ /// @domName HTMLInputElement.value
+ String value;
+
+ /// @domName HTMLInputElement.willValidate
+ bool get willValidate;
+
+ /// @domName HTMLInputElement.checkValidity
+ bool checkValidity();
+
+ /// @domName HTMLInputElement.setCustomValidity
+ void setCustomValidity(String error);
+}
+
+/**
+ * Hidden input which is not intended to be seen or edited by the user.
+ */
+abstract class HiddenInputElement implements Element {
+ factory HiddenInputElement() => new InputElement(type: 'hidden');
+}
+
+
+/**
+ * Base interface for all inputs which involve text editing.
+ */
+abstract class TextInputElementBase implements InputElementBase {
+ /// @domName HTMLInputElement.autocomplete
+ String autocomplete;
+
+ /// @domName HTMLInputElement.maxLength
+ int maxLength;
+
+ /// @domName HTMLInputElement.pattern
+ String pattern;
+
+ /// @domName HTMLInputElement.placeholder
+ String placeholder;
+
+ /// @domName HTMLInputElement.readOnly
+ bool readOnly;
+
+ /// @domName HTMLInputElement.required
+ bool required;
+
+ /// @domName HTMLInputElement.size
+ int size;
+
+ /// @domName HTMLInputElement.select
+ void select();
+
+ /// @domName HTMLInputElement.selectionDirection
+ String selectionDirection;
+
+ /// @domName HTMLInputElement.selectionEnd
+ int selectionEnd;
+
+ /// @domName HTMLInputElement.selectionStart
+ int selectionStart;
+
+ /// @domName HTMLInputElement.setSelectionRange
+ void setSelectionRange(int start, int end, [String direction]);
+}
+
+/**
+ * Similar to [TextInputElement], but on platforms where search is styled
+ * differently this will get the search style.
+ */
+abstract class SearchInputElement implements TextInputElementBase {
+ factory SearchInputElement() => new InputElement(type: 'search');
+
+ /// @domName HTMLInputElement.dirName;
+ String dirName;
+
+ /// @domName HTMLInputElement.list;
+ Element get list;
+}
+
+/**
+ * A basic text input editor control.
+ */
+abstract class TextInputElement implements TextInputElementBase {
+ factory TextInputElement() => new InputElement(type: 'text');
+
+ /// @domName HTMLInputElement.dirName;
+ String dirName;
+
+ /// @domName HTMLInputElement.list;
+ Element get list;
+}
+
+/**
+ * A control for editing an absolute URL.
+ */
+abstract class UrlInputElement implements TextInputElementBase {
+ factory UrlInputElement() => new InputElement(type: 'url');
+
+ /// @domName HTMLInputElement.list;
+ Element get list;
+}
+
+/**
+ * Represents a control for editing a telephone number.
+ *
+ * This provides a single line of text with minimal formatting help since
+ * there is a wide variety of telephone numbers.
+ */
+abstract class TelephoneInputElement implements TextInputElementBase {
+ factory TelephoneInputElement() => new InputElement(type: 'tel');
+
+ /// @domName HTMLInputElement.list;
+ Element get list;
+}
+
+/**
+ * An e-mail address or list of e-mail addresses.
+ */
+abstract class EmailInputElement implements TextInputElementBase {
+ factory EmailInputElement() => new InputElement(type: 'email');
+
+ /// @domName HTMLInputElement.autocomplete
+ String autocomplete;
+
+ /// @domName HTMLInputElement.autofocus
+ bool autofocus;
+
+ /// @domName HTMLInputElement.list;
+ Element get list;
+
+ /// @domName HTMLInputElement.maxLength
+ int maxLength;
+
+ /// @domName HTMLInputElement.multiple;
+ bool multiple;
+
+ /// @domName HTMLInputElement.pattern
+ String pattern;
+
+ /// @domName HTMLInputElement.placeholder
+ String placeholder;
+
+ /// @domName HTMLInputElement.readOnly
+ bool readOnly;
+
+ /// @domName HTMLInputElement.required
+ bool required;
+
+ /// @domName HTMLInputElement.size
+ int size;
+}
+
+/**
+ * Text with no line breaks (sensitive information).
+ */
+abstract class PasswordInputElement implements TextInputElementBase {
+ factory PasswordInputElement() => new InputElement(type: 'password');
+}
+
+/**
+ * Base interface for all input element types which involve ranges.
+ */
+abstract class RangeInputElementBase implements InputElementBase {
+
+ /// @domName HTMLInputElement.list
+ Element get list;
+
+ /// @domName HTMLInputElement.max
+ String max;
+
+ /// @domName HTMLInputElement.min
+ String min;
+
+ /// @domName HTMLInputElement.step
+ String step;
+
+ /// @domName HTMLInputElement.valueAsNumber
+ num valueAsNumber;
+
+ /// @domName HTMLInputElement.stepDown
+ void stepDown([int n]);
+
+ /// @domName HTMLInputElement.stepUp
+ void stepUp([int n]);
+}
+
+/**
+ * A date and time (year, month, day, hour, minute, second, fraction of a
+ * second) with the time zone set to UTC.
+ */
+abstract class DateTimeInputElement implements RangeInputElementBase {
+ factory DateTimeInputElement() => new InputElement(type: 'datetime');
+
+ /// @domName HTMLInputElement.valueAsDate
+ Date valueAsDate;
+
+ /// @domName HTMLInputElement.readOnly
+ bool readOnly;
+
+ /// @domName HTMLInputElement.required
+ bool required;
+}
+
+/**
+ * A date (year, month, day) with no time zone.
+ */
+abstract class DateInputElement implements RangeInputElementBase {
+ factory DateInputElement() => new InputElement(type: 'date');
+
+ /// @domName HTMLInputElement.valueAsDate
+ Date valueAsDate;
+
+ /// @domName HTMLInputElement.readOnly
+ bool readOnly;
+
+ /// @domName HTMLInputElement.required
+ bool required;
+}
+
+/**
+ * A date consisting of a year and a month with no time zone.
+ */
+abstract class MonthInputElement implements RangeInputElementBase {
+ factory MonthInputElement() => new InputElement(type: 'month');
+
+ /// @domName HTMLInputElement.valueAsDate
+ Date valueAsDate;
+
+ /// @domName HTMLInputElement.readOnly
+ bool readOnly;
+
+ /// @domName HTMLInputElement.required
+ bool required;
+}
+
+/**
+ * A date consisting of a week-year number and a week number with no time zone.
+ */
+abstract class WeekInputElement implements RangeInputElementBase {
+ factory WeekInputElement() => new InputElement(type: 'week');
+
+ /// @domName HTMLInputElement.valueAsDate
+ Date valueAsDate;
+
+ /// @domName HTMLInputElement.readOnly
+ bool readOnly;
+
+ /// @domName HTMLInputElement.required
+ bool required;
+}
+
+/**
+ * A time (hour, minute, seconds, fractional seconds) with no time zone.
+ */
+abstract class TimeInputElement implements RangeInputElementBase {
+ factory TimeInputElement() => new InputElement(type: 'time');
+
+ /// @domName HTMLInputElement.valueAsDate
+ Date valueAsDate;
+
+ /// @domName HTMLInputElement.readOnly
+ bool readOnly;
+
+ /// @domName HTMLInputElement.required
+ bool required;
+}
+
+/**
+ * A date and time (year, month, day, hour, minute, second, fraction of a
+ * second) with no time zone.
+ */
+abstract class LocalDateTimeInputElement implements RangeInputElementBase {
+ factory LocalDateTimeInputElement() =>
+ new InputElement(type: 'datetime-local');
+
+ /// @domName HTMLInputElement.readOnly
+ bool readOnly;
+
+ /// @domName HTMLInputElement.required
+ bool required;
+}
+
+/**
+ * A numeric editor control.
+ */
+abstract class NumberInputElement implements RangeInputElementBase {
+ factory NumberInputElement() => new InputElement(type: 'number');
+
+ /// @domName HTMLInputElement.placeholder
+ String placeholder;
+
+ /// @domName HTMLInputElement.readOnly
+ bool readOnly;
+
+ /// @domName HTMLInputElement.required
+ bool required;
+}
+
+/**
+ * Similar to [NumberInputElement] but the browser may provide more optimal
+ * styling (such as a slider control).
+ */
+abstract class RangeInputElement implements RangeInputElementBase {
+ factory RangeInputElement() => new InputElement(type: 'range');
+}
+
+/**
+ * A boolean editor control.
+ *
+ * Note that if [indeterminate] is set then this control is in a third
+ * indeterminate state.
+ */
+abstract class CheckboxInputElement implements InputElementBase {
+ factory CheckboxInputElement() => new InputElement(type: 'checkbox');
+
+ /// @domName HTMLInputElement.checked
+ bool checked;
+
+ /// @domName HTMLInputElement.required
+ bool required;
+}
+
+
+/**
+ * A control that when used with other [ReadioButtonInputElement] controls
+ * forms a radio button group in which only one control can be checked at a
+ * time.
+ *
+ * Radio buttons are considered to be in the same radio button group if:
+ *
+ * * They are all of type 'radio'.
+ * * They all have either the same [FormElement] owner, or no owner.
+ * * Their name attributes contain the same name.
+ */
+abstract class RadioButtonInputElement implements InputElementBase {
+ factory RadioButtonInputElement() => new InputElement(type: 'radio');
+
+ /// @domName HTMLInputElement.checked
+ bool checked;
+
+ /// @domName HTMLInputElement.required
+ bool required;
+}
+
+/**
+ * A control for picking files from the user's computer.
+ */
+abstract class FileUploadInputElement implements InputElementBase {
+ factory FileUploadInputElement() => new InputElement(type: 'file');
+
+ /// @domName HTMLInputElement.accept
+ String accept;
+
+ /// @domName HTMLInputElement.multiple
+ bool multiple;
+
+ /// @domName HTMLInputElement.required
+ bool required;
+
+ /// @domName HTMLInputElement.files
+ List<File> files;
+}
+
+/**
+ * A button, which when clicked, submits the form.
+ */
+abstract class SubmitButtonInputElement implements InputElementBase {
+ factory SubmitButtonInputElement() => new InputElement(type: 'submit');
+
+ /// @domName HTMLInputElement.formAction
+ String formAction;
+
+ /// @domName HTMLInputElement.formEnctype
+ String formEnctype;
+
+ /// @domName HTMLInputElement.formMethod
+ String formMethod;
+
+ /// @domName HTMLInputElement.formNoValidate
+ bool formNoValidate;
+
+ /// @domName HTMLInputElement.formTarget
+ String formTarget;
+}
+
+/**
+ * Either an image which the user can select a coordinate to or a form
+ * submit button.
+ */
+abstract class ImageButtonInputElement implements InputElementBase {
+ factory ImageButtonInputElement() => new InputElement(type: 'image');
+
+ /// @domName HTMLInputElement.alt
+ String alt;
+
+ /// @domName HTMLInputElement.formAction
+ String formAction;
+
+ /// @domName HTMLInputElement.formEnctype
+ String formEnctype;
+
+ /// @domName HTMLInputElement.formMethod
+ String formMethod;
+
+ /// @domName HTMLInputElement.formNoValidate
+ bool formNoValidate;
+
+ /// @domName HTMLInputElement.formTarget
+ String formTarget;
+
+ /// @domName HTMLInputElement.height
+ int height;
+
+ /// @domName HTMLInputElement.src
+ String src;
+
+ /// @domName HTMLInputElement.width
+ int width;
+}
+
+/**
+ * A button, which when clicked, resets the form.
+ */
+abstract class ResetButtonInputElement implements InputElementBase {
+ factory ResetButtonInputElement() => new InputElement(type: 'reset');
+}
+
+/**
+ * A button, with no default behavior.
+ */
+abstract class ButtonInputElement implements InputElementBase {
+ factory ButtonInputElement() => new InputElement(type: 'button');
+}
+
« no previous file with comments | « sdk/lib/html/dartium/html_dartium.dart ('k') | tests/html/html.status » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698