mirror of
https://github.com/RGBCube/serenity
synced 2025-07-02 22:22:07 +00:00
LibWeb: Implement HTMLButtonElement.type
This commit is contained in:
parent
432d496ed6
commit
29f9947ff9
3 changed files with 49 additions and 0 deletions
|
@ -17,4 +17,37 @@ HTMLButtonElement::~HTMLButtonElement()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String HTMLButtonElement::type() const
|
||||||
|
{
|
||||||
|
auto value = attribute(HTML::AttributeNames::type);
|
||||||
|
|
||||||
|
#define __ENUMERATE_HTML_BUTTON_TYPE_ATTRIBUTE(keyword, _) \
|
||||||
|
if (value.equals_ignoring_case(#keyword)) \
|
||||||
|
return #keyword;
|
||||||
|
ENUMERATE_HTML_BUTTON_TYPE_ATTRIBUTES
|
||||||
|
#undef __ENUMERATE_HTML_BUTTON_TYPE_ATTRIBUTE
|
||||||
|
|
||||||
|
// The missing value default and invalid value default are the Submit Button state.
|
||||||
|
return "submit";
|
||||||
|
}
|
||||||
|
|
||||||
|
HTMLButtonElement::TypeAttributeState HTMLButtonElement::type_state() const
|
||||||
|
{
|
||||||
|
auto value = attribute(HTML::AttributeNames::type);
|
||||||
|
|
||||||
|
#define __ENUMERATE_HTML_BUTTON_TYPE_ATTRIBUTE(keyword, state) \
|
||||||
|
if (value.equals_ignoring_case(#keyword)) \
|
||||||
|
return HTMLButtonElement::TypeAttributeState::state;
|
||||||
|
ENUMERATE_HTML_BUTTON_TYPE_ATTRIBUTES
|
||||||
|
#undef __ENUMERATE_HTML_BUTTON_TYPE_ATTRIBUTE
|
||||||
|
|
||||||
|
// The missing value default and invalid value default are the Submit Button state.
|
||||||
|
return HTMLButtonElement::TypeAttributeState::Submit;
|
||||||
|
}
|
||||||
|
|
||||||
|
void HTMLButtonElement::set_type(String const& type)
|
||||||
|
{
|
||||||
|
set_attribute(HTML::AttributeNames::type, type);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,11 @@
|
||||||
|
|
||||||
namespace Web::HTML {
|
namespace Web::HTML {
|
||||||
|
|
||||||
|
#define ENUMERATE_HTML_BUTTON_TYPE_ATTRIBUTES \
|
||||||
|
__ENUMERATE_HTML_BUTTON_TYPE_ATTRIBUTE(submit, Submit) \
|
||||||
|
__ENUMERATE_HTML_BUTTON_TYPE_ATTRIBUTE(reset, Reset) \
|
||||||
|
__ENUMERATE_HTML_BUTTON_TYPE_ATTRIBUTE(button, Button)
|
||||||
|
|
||||||
class HTMLButtonElement final : public FormAssociatedElement {
|
class HTMLButtonElement final : public FormAssociatedElement {
|
||||||
public:
|
public:
|
||||||
using WrapperType = Bindings::HTMLButtonElementWrapper;
|
using WrapperType = Bindings::HTMLButtonElementWrapper;
|
||||||
|
@ -17,6 +22,16 @@ public:
|
||||||
HTMLButtonElement(DOM::Document&, DOM::QualifiedName);
|
HTMLButtonElement(DOM::Document&, DOM::QualifiedName);
|
||||||
virtual ~HTMLButtonElement() override;
|
virtual ~HTMLButtonElement() override;
|
||||||
|
|
||||||
|
enum class TypeAttributeState {
|
||||||
|
#define __ENUMERATE_HTML_BUTTON_TYPE_ATTRIBUTE(_, state) state,
|
||||||
|
ENUMERATE_HTML_BUTTON_TYPE_ATTRIBUTES
|
||||||
|
#undef __ENUMERATE_HTML_BUTTON_TYPE_ATTRIBUTE
|
||||||
|
};
|
||||||
|
|
||||||
|
String type() const;
|
||||||
|
TypeAttributeState type_state() const;
|
||||||
|
void set_type(String const&);
|
||||||
|
|
||||||
// ^FormAssociatedElement
|
// ^FormAssociatedElement
|
||||||
// https://html.spec.whatwg.org/multipage/forms.html#category-listed
|
// https://html.spec.whatwg.org/multipage/forms.html#category-listed
|
||||||
virtual bool is_listed() const override { return true; }
|
virtual bool is_listed() const override { return true; }
|
||||||
|
|
|
@ -6,5 +6,6 @@ interface HTMLButtonElement : HTMLElement {
|
||||||
[Reflect=formtarget] attribute DOMString formTarget;
|
[Reflect=formtarget] attribute DOMString formTarget;
|
||||||
[Reflect] attribute DOMString name;
|
[Reflect] attribute DOMString name;
|
||||||
[Reflect] attribute DOMString value;
|
[Reflect] attribute DOMString value;
|
||||||
|
[CEReactions] attribute DOMString type;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue