mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 04:27:45 +00:00
LibWeb: Add Support for the ARIA Element Properties
Element now supports getting and setting ARIA properties from JS and HTML.
This commit is contained in:
parent
0a244b9c1f
commit
e63d9d4925
57 changed files with 976 additions and 1 deletions
|
@ -11,6 +11,7 @@
|
|||
#include <LibWeb/Bindings/ElementPrototype.h>
|
||||
#include <LibWeb/CSS/CSSStyleDeclaration.h>
|
||||
#include <LibWeb/CSS/StyleComputer.h>
|
||||
#include <LibWeb/DOM/ARIAMixin.h>
|
||||
#include <LibWeb/DOM/Attr.h>
|
||||
#include <LibWeb/DOM/ChildNode.h>
|
||||
#include <LibWeb/DOM/NamedNodeMap.h>
|
||||
|
@ -40,7 +41,8 @@ struct ScrollIntoViewOptions : public ScrollOptions {
|
|||
class Element
|
||||
: public ParentNode
|
||||
, public ChildNode<Element>
|
||||
, public NonDocumentTypeChildNode<Element> {
|
||||
, public NonDocumentTypeChildNode<Element>
|
||||
, public ARIAMixin {
|
||||
WEB_PLATFORM_OBJECT(Element, ParentNode);
|
||||
|
||||
public:
|
||||
|
@ -177,6 +179,72 @@ public:
|
|||
// https://w3c.github.io/csswg-drafts/cssom-view-1/#dom-element-scrollintoview
|
||||
ErrorOr<void> scroll_into_view(Optional<Variant<bool, ScrollIntoViewOptions>> = {});
|
||||
|
||||
// https://www.w3.org/TR/wai-aria-1.2/#ARIAMixin
|
||||
#define ARIA_IMPL(name, attribute) \
|
||||
DeprecatedString name() const override \
|
||||
{ \
|
||||
return get_attribute(attribute); \
|
||||
} \
|
||||
\
|
||||
WebIDL::ExceptionOr<void> set_##name(DeprecatedString const& value) override \
|
||||
{ \
|
||||
TRY(set_attribute(attribute, value)); \
|
||||
return {}; \
|
||||
}
|
||||
|
||||
// https://www.w3.org/TR/wai-aria-1.2/#accessibilityroleandproperties-correspondence
|
||||
ARIA_IMPL(role, "role");
|
||||
ARIA_IMPL(aria_active_descendant, "aria-activedescendant");
|
||||
ARIA_IMPL(aria_atomic, "aria-atomic");
|
||||
ARIA_IMPL(aria_auto_complete, "aria-autocomplete");
|
||||
ARIA_IMPL(aria_busy, "aria-busy");
|
||||
ARIA_IMPL(aria_checked, "aria-checked");
|
||||
ARIA_IMPL(aria_col_count, "aria-colcount");
|
||||
ARIA_IMPL(aria_col_index, "aria-colindex");
|
||||
ARIA_IMPL(aria_col_span, "aria-colspan");
|
||||
ARIA_IMPL(aria_controls, "aria-controls");
|
||||
ARIA_IMPL(aria_current, "aria-current");
|
||||
ARIA_IMPL(aria_described_by, "aria-describedby");
|
||||
ARIA_IMPL(aria_details, "aria-details");
|
||||
ARIA_IMPL(aria_drop_effect, "aria-dropeffect");
|
||||
ARIA_IMPL(aria_error_message, "aria-errormessage");
|
||||
ARIA_IMPL(aria_disabled, "aria-disabled");
|
||||
ARIA_IMPL(aria_expanded, "aria-expanded");
|
||||
ARIA_IMPL(aria_flow_to, "aria-flowto");
|
||||
ARIA_IMPL(aria_grabbed, "aria-grabbed");
|
||||
ARIA_IMPL(aria_has_popup, "aria-haspopup");
|
||||
ARIA_IMPL(aria_hidden, "aria-hidden");
|
||||
ARIA_IMPL(aria_invalid, "aria-invalid");
|
||||
ARIA_IMPL(aria_key_shortcuts, "aria-keyshortcuts");
|
||||
ARIA_IMPL(aria_label, "aria-label");
|
||||
ARIA_IMPL(aria_labelled_by, "aria-labelledby");
|
||||
ARIA_IMPL(aria_level, "aria-level");
|
||||
ARIA_IMPL(aria_live, "aria-live");
|
||||
ARIA_IMPL(aria_modal, "aria-modal");
|
||||
ARIA_IMPL(aria_multi_line, "aria-multiline");
|
||||
ARIA_IMPL(aria_multi_selectable, "aria-multiselectable");
|
||||
ARIA_IMPL(aria_orientation, "aria-orientation");
|
||||
ARIA_IMPL(aria_owns, "aria-owns");
|
||||
ARIA_IMPL(aria_placeholder, "aria-placeholder");
|
||||
ARIA_IMPL(aria_pos_in_set, "aria-posinset");
|
||||
ARIA_IMPL(aria_pressed, "aria-pressed");
|
||||
ARIA_IMPL(aria_read_only, "aria-readonly");
|
||||
ARIA_IMPL(aria_relevant, "aria-relevant");
|
||||
ARIA_IMPL(aria_required, "aria-required");
|
||||
ARIA_IMPL(aria_role_description, "aria-roledescription");
|
||||
ARIA_IMPL(aria_row_count, "aria-rowcount");
|
||||
ARIA_IMPL(aria_row_index, "aria-rowindex");
|
||||
ARIA_IMPL(aria_row_span, "aria-rowspan");
|
||||
ARIA_IMPL(aria_selected, "aria-selected");
|
||||
ARIA_IMPL(aria_set_size, "aria-setsize");
|
||||
ARIA_IMPL(aria_sort, "aria-sort");
|
||||
ARIA_IMPL(aria_value_max, "aria-valuemax");
|
||||
ARIA_IMPL(aria_value_min, "aria-valuemin");
|
||||
ARIA_IMPL(aria_value_now, "aria-valuenow");
|
||||
ARIA_IMPL(aria_value_text, "aria-valuetext");
|
||||
|
||||
#undef ARIA_IMPL
|
||||
|
||||
protected:
|
||||
Element(Document&, DOM::QualifiedName);
|
||||
virtual void initialize(JS::Realm&) override;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue