aboutsummaryrefslogtreecommitdiff
path: root/node_modules/jsdom/lib/jsdom/living/nodes/HTMLButtonElement-impl.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/jsdom/lib/jsdom/living/nodes/HTMLButtonElement-impl.js')
-rw-r--r--node_modules/jsdom/lib/jsdom/living/nodes/HTMLButtonElement-impl.js79
1 files changed, 79 insertions, 0 deletions
diff --git a/node_modules/jsdom/lib/jsdom/living/nodes/HTMLButtonElement-impl.js b/node_modules/jsdom/lib/jsdom/living/nodes/HTMLButtonElement-impl.js
new file mode 100644
index 0000000..783a608
--- /dev/null
+++ b/node_modules/jsdom/lib/jsdom/living/nodes/HTMLButtonElement-impl.js
@@ -0,0 +1,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._doSubmit();
+ }
+ 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
+};