1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 15:17:36 +00:00

LibWeb: Implement bare-bones HTMLElement.dir

This commit is contained in:
Igor Pissolati 2022-11-04 22:56:42 -03:00 committed by Andrew Kaster
parent de494ccf38
commit bfdb30c74a
4 changed files with 29 additions and 0 deletions

View file

@ -55,6 +55,7 @@ namespace AttributeNames {
__ENUMERATE_HTML_ATTRIBUTE(declare) \ __ENUMERATE_HTML_ATTRIBUTE(declare) \
__ENUMERATE_HTML_ATTRIBUTE(default_) \ __ENUMERATE_HTML_ATTRIBUTE(default_) \
__ENUMERATE_HTML_ATTRIBUTE(defer) \ __ENUMERATE_HTML_ATTRIBUTE(defer) \
__ENUMERATE_HTML_ATTRIBUTE(dir) \
__ENUMERATE_HTML_ATTRIBUTE(direction) \ __ENUMERATE_HTML_ATTRIBUTE(direction) \
__ENUMERATE_HTML_ATTRIBUTE(dirname) \ __ENUMERATE_HTML_ATTRIBUTE(dirname) \
__ENUMERATE_HTML_ATTRIBUTE(disabled) \ __ENUMERATE_HTML_ATTRIBUTE(disabled) \

View file

@ -53,6 +53,24 @@ void HTMLElement::visit_edges(Cell::Visitor& visitor)
visitor.visit(m_dataset.ptr()); visitor.visit(m_dataset.ptr());
} }
// https://html.spec.whatwg.org/multipage/dom.html#dom-dir
String HTMLElement::dir() const
{
auto dir = attribute(HTML::AttributeNames::dir);
#define __ENUMERATE_HTML_ELEMENT_DIR_ATTRIBUTE(keyword) \
if (dir.equals_ignoring_case(#keyword##sv)) \
return #keyword##sv;
ENUMERATE_HTML_ELEMENT_DIR_ATTRIBUTES
#undef __ENUMERATE_HTML_ELEMENT_DIR_ATTRIBUTE
return {};
}
void HTMLElement::set_dir(String const& dir)
{
MUST(set_attribute(HTML::AttributeNames::dir, dir));
}
HTMLElement::ContentEditableState HTMLElement::content_editable_state() const HTMLElement::ContentEditableState HTMLElement::content_editable_state() const
{ {
auto contenteditable = attribute(HTML::AttributeNames::contenteditable); auto contenteditable = attribute(HTML::AttributeNames::contenteditable);

View file

@ -12,6 +12,12 @@
namespace Web::HTML { namespace Web::HTML {
// https://html.spec.whatwg.org/multipage/dom.html#attr-dir
#define ENUMERATE_HTML_ELEMENT_DIR_ATTRIBUTES \
__ENUMERATE_HTML_ELEMENT_DIR_ATTRIBUTE(ltr) \
__ENUMERATE_HTML_ELEMENT_DIR_ATTRIBUTE(rtl) \
__ENUMERATE_HTML_ELEMENT_DIR_ATTRIBUTE(auto)
class HTMLElement class HTMLElement
: public DOM::Element : public DOM::Element
, public HTML::GlobalEventHandlers { , public HTML::GlobalEventHandlers {
@ -22,6 +28,9 @@ public:
String title() const { return attribute(HTML::AttributeNames::title); } String title() const { return attribute(HTML::AttributeNames::title); }
String dir() const;
void set_dir(String const&);
virtual bool is_editable() const final; virtual bool is_editable() const final;
String content_editable() const; String content_editable() const;
WebIDL::ExceptionOr<void> set_content_editable(String const&); WebIDL::ExceptionOr<void> set_content_editable(String const&);

View file

@ -7,6 +7,7 @@ interface HTMLElement : Element {
[Reflect] attribute DOMString title; [Reflect] attribute DOMString title;
[Reflect] attribute DOMString lang; [Reflect] attribute DOMString lang;
attribute DOMString dir;
[Reflect] attribute boolean hidden; [Reflect] attribute boolean hidden;