"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const HTMLElement_1 = __importDefault(require("../html-element/HTMLElement")); const BUTTON_TYPES = ['submit', 'reset', 'button', 'menu']; /** We can improve performance a bit if we make the types as a constant. * HTML Button Element. * * Reference: * https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement. */ class HTMLButtonElement extends HTMLElement_1.default { /** * Returns value. * * @returns Value. */ get value() { return this.getAttributeNS(null, 'value'); } /** * Sets value. * * @param value Value. */ set value(value) { this.setAttributeNS(null, 'value', value); } /** * Returns disabled. * * @returns Disabled. */ get disabled() { return this.getAttributeNS(null, 'disabled') !== null; } /** * Sets disabled. * * @param disabled Disabled. */ set disabled(disabled) { if (!disabled) { this.removeAttributeNS(null, 'disabled'); } else { this.setAttributeNS(null, 'disabled', ''); } } /** * Returns type * * @returns Type */ get type() { return this._sanitizeType(this.getAttributeNS(null, 'type')); } /** * Sets type * * @param v Type */ set type(v) { this.setAttributeNS(null, 'type', this._sanitizeType(v)); } /** * * @param type */ _sanitizeType(type) { type = (type && type.toLowerCase()) || 'submit'; if (!BUTTON_TYPES.includes(type)) { type = 'submit'; } return type; } } exports.default = HTMLButtonElement; //# sourceMappingURL=HTMLButtonElement.js.map