@@ -8,17 +8,116 @@ package org.scalajs.dom
8
8
9
9
import scala .scalajs .js
10
10
import scala .scalajs .js .annotation ._
11
+ import scala .scalajs .js .|
11
12
12
13
/** XMLHttpRequest Level 2 adds support for the new FormData interface. FormData objects provide a way to easily
13
14
* construct a set of key/value pairs representing form fields and their values, which can then be easily sent using
14
15
* the XMLHttpRequest send() method.
15
16
*/
16
17
@ js.native
17
18
@ JSGlobal
18
- class FormData ( form : HTMLFormElement = js.native) extends js.Object {
19
+ class FormData extends js.Iterable [ js.Tuple2 [ String , String | Blob ]] {
19
20
20
- /** Appends a key/value pair to the FormData object. */
21
- def append (name : js.Any , value : js.Any , blobName : String = js.native): Unit = js.native
21
+ def this (form : HTMLFormElement ) = this ()
22
+
23
+ def this (form : HTMLFormElement , submitter : HTMLElement ) = this ()
24
+
25
+ /** The `append()` method of the `FormData` interface appends a new value onto an existing key inside a `FormData`
26
+ * object, or adds the key if it does not already exist.
27
+ *
28
+ * @param name
29
+ * The name of the field whose data is contained in value.
30
+ * @param value
31
+ * The field's value. This can be a string or `Blob` (including subclasses such as File). If none of these are
32
+ * specified the value is converted to a string.
33
+ */
34
+ def append (name : String , value : String ): Unit = js.native
35
+
36
+ /** The `append()` method of the `FormData` interface appends a new value onto an existing key inside a `FormData`
37
+ * object, or adds the key if it does not already exist.
38
+ *
39
+ * @param name
40
+ * The name of the field whose data is contained in value.
41
+ * @param value
42
+ * The field's value. This can be a string or `Blob` (including subclasses such as File). If none of these are
43
+ * specified the value is converted to a string.
44
+ * @param blobName
45
+ * The filename reported to the server (a string), when a `Blob` or `File` is passed as the second parameter. The
46
+ * default filename for `Blob` objects is "blob". The default filename for `File` objects is the file's filename.
47
+ */
48
+ def append (name : String , value : Blob , blobName : String = js.native): Unit = js.native
49
+
50
+ /** The `delete()` method of the `FormData` interface deletes a key and its value(s) from a `FormData` object.
51
+ * @param name
52
+ * The name of the key you want to delete.
53
+ */
54
+ def delete (name : String ): Unit = js.native
55
+
56
+ /** The `get()` method of the `FormData` interface returns the first value associated with a given key from within a
57
+ * `FormData` object. If you expect multiple values and want all of them, use the `getAll()` method instead.
58
+ *
59
+ * @param name
60
+ * A string representing the name of the key you want to retrieve.
61
+ * @return
62
+ * A value whose key matches the specified name. Otherwise, `null`.
63
+ */
64
+ def get (name : String ): String | Blob = js.native
65
+
66
+ /** The `has()` method of the `FormData` interface returns whether a `FormData` object contains a certain key.
67
+ *
68
+ * @param name
69
+ * A string representing the name of the key you want to test for.
70
+ * @return
71
+ * `true` if a key of `FormData` matches the specified name. Otherwise, `false`.
72
+ */
73
+ def has (name : String ): Boolean = js.native
74
+
75
+ /** The `set()` method of the `FormData` interface sets a new value for an existing key inside a `FormData` object, or
76
+ * adds the key/value if it does not already exist.
77
+ *
78
+ * @param name
79
+ * The name of the field whose data is contained in value.
80
+ * @param value
81
+ * The field's value.
82
+ */
83
+ def set (
84
+ name : String , value : String
85
+ ): Unit = js.native
86
+
87
+ /** The `set()` method of the `FormData` interface sets a new value for an existing key inside a `FormData` object, or
88
+ * adds the key/value if it does not already exist.
89
+ *
90
+ * @param name
91
+ * The name of the field whose data is contained in value.
92
+ * @param value
93
+ * The field's value.
94
+ */
95
+ def set (
96
+ name : String , value : Blob , blobName : String = js.native
97
+ ): Unit = js.native
98
+
99
+ @ JSName (js.Symbol .iterator)
100
+ override def jsIterator (): js.Iterator [js.Tuple2 [String , String | Blob ]] = js.native
101
+
102
+ /** The `FormData.entries()` method returns an iterator which iterates through all key/value pairs contained in the
103
+ * `FormData`. The key of each pair is a string object, and the value is either a string or a `Blob`.
104
+ */
105
+ def entries (): js.Iterator [js.Tuple2 [String , String | Blob ]] = js.native
106
+
107
+ /** The `getAll()` method of the `FormData` interface returns all the values associated with a given key from within a
108
+ * `FormData` object.
109
+ */
110
+ def getAll (name : String ): js.Array [String | Blob ] = js.native
111
+
112
+ /** The `FormData.keys()` method returns an iterator which iterates through all keys contained in the `FormData`. The
113
+ * keys are strings.
114
+ */
115
+ def keys (): js.Iterator [String ] = js.native
116
+
117
+ /** The `FormData.values()` method returns an iterator which iterates through all values contained in the `FormData`.
118
+ * The values are strings or `Blob` objects.
119
+ */
120
+ def values (): js.Iterator [String | Blob ] = js.native
22
121
}
23
122
24
123
@ js.native
0 commit comments