|
@@ -4,13 +4,49 @@
|
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
|
*/
|
|
|
|
|
|
+#include <LibWeb/DOM/Document.h>
|
|
|
#include <LibWeb/HTML/HTMLButtonElement.h>
|
|
|
+#include <LibWeb/HTML/HTMLFormElement.h>
|
|
|
|
|
|
namespace Web::HTML {
|
|
|
|
|
|
HTMLButtonElement::HTMLButtonElement(DOM::Document& document, DOM::QualifiedName qualified_name)
|
|
|
: FormAssociatedElement(document, move(qualified_name))
|
|
|
{
|
|
|
+ // https://html.spec.whatwg.org/multipage/form-elements.html#the-button-element:activation-behaviour
|
|
|
+ activation_behavior = [this](auto&) {
|
|
|
+ // 1. If element is disabled, then return.
|
|
|
+ if (!enabled())
|
|
|
+ return;
|
|
|
+
|
|
|
+ // 2. If element does not have a form owner, then return.
|
|
|
+ if (!form())
|
|
|
+ return;
|
|
|
+
|
|
|
+ // 3. If element's node document is not fully active, then return.
|
|
|
+ if (!this->document().is_fully_active())
|
|
|
+ return;
|
|
|
+
|
|
|
+ // 4. Switch on element's type attribute's state:
|
|
|
+ switch (type_state()) {
|
|
|
+ case TypeAttributeState::Submit:
|
|
|
+ // Submit Button
|
|
|
+ // Submit element's form owner from element.
|
|
|
+ form()->submit_form(this);
|
|
|
+ break;
|
|
|
+ case TypeAttributeState::Reset:
|
|
|
+ // Reset Button
|
|
|
+ // FIXME: Reset element's form owner.
|
|
|
+ TODO();
|
|
|
+ break;
|
|
|
+ case TypeAttributeState::Button:
|
|
|
+ // Button
|
|
|
+ // Do nothing.
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ VERIFY_NOT_REACHED();
|
|
|
+ }
|
|
|
+ };
|
|
|
}
|
|
|
|
|
|
HTMLButtonElement::~HTMLButtonElement()
|