HTMLButtonElement-impl.js
1.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
"use strict";
const HTMLElementImpl = require("./HTMLElement-impl").implementation;
const DefaultConstraintValidationImpl =
require("../constraint-validation/DefaultConstraintValidation-impl").implementation;
const { mixin } = require("../../utils");
const { isDisabled, formOwner, getLabelsForLabelable } = require("../helpers/form-controls");
const { asciiLowercase } = require("../helpers/strings");
class HTMLButtonElementImpl extends HTMLElementImpl {
constructor(globalObject, args, privateData) {
super(globalObject, args, privateData);
this._customValidityErrorMessage = "";
this._labels = null;
this._hasActivationBehavior = true;
}
_activationBehavior() {
const { form } = this;
if (form && !isDisabled(this)) {
if (this.type === "submit") {
form._doRequestSubmit(this);
}
if (this.type === "reset") {
form._doReset();
}
}
}
_getValue() {
const valueAttr = this.getAttributeNS(null, "value");
return valueAttr === null ? "" : valueAttr;
}
get labels() {
return getLabelsForLabelable(this);
}
get form() {
return formOwner(this);
}
get type() {
const typeAttr = asciiLowercase(this.getAttributeNS(null, "type") || "");
switch (typeAttr) {
case "submit":
case "reset":
case "button":
return typeAttr;
default:
return "submit";
}
}
set type(v) {
v = asciiLowercase(String(v));
switch (v) {
case "submit":
case "reset":
case "button":
this.setAttributeNS(null, "type", v);
break;
default:
this.setAttributeNS(null, "type", "submit");
break;
}
}
_barredFromConstraintValidationSpecialization() {
return this.type === "reset" || this.type === "button";
}
}
mixin(HTMLButtonElementImpl.prototype, DefaultConstraintValidationImpl.prototype);
module.exports = {
implementation: HTMLButtonElementImpl
};