mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-27 10:00:24 +00:00
LibWeb: Implement HTMLButtonElement.type
This commit is contained in:
parent
432d496ed6
commit
29f9947ff9
Notes:
sideshowbarker
2024-07-17 18:05:00 +09:00
Author: https://github.com/Lubrsi Commit: https://github.com/SerenityOS/serenity/commit/29f9947ff9 Pull-request: https://github.com/SerenityOS/serenity/pull/12837
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 {
|
||||
|
||||
#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 {
|
||||
public:
|
||||
using WrapperType = Bindings::HTMLButtonElementWrapper;
|
||||
|
@ -17,6 +22,16 @@ public:
|
|||
HTMLButtonElement(DOM::Document&, DOM::QualifiedName);
|
||||
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
|
||||
// https://html.spec.whatwg.org/multipage/forms.html#category-listed
|
||||
virtual bool is_listed() const override { return true; }
|
||||
|
|
|
@ -6,5 +6,6 @@ interface HTMLButtonElement : HTMLElement {
|
|||
[Reflect=formtarget] attribute DOMString formTarget;
|
||||
[Reflect] attribute DOMString name;
|
||||
[Reflect] attribute DOMString value;
|
||||
[CEReactions] attribute DOMString type;
|
||||
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue