diff options
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.js | 79 |
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 +}; |