Browse Source

LibWeb: Implement ShadowRoot.onslotchange

Jamie Mansfield 1 year ago
parent
commit
1b043d259a

+ 12 - 0
Userland/Libraries/LibWeb/DOM/ShadowRoot.cpp

@@ -36,6 +36,18 @@ void ShadowRoot::initialize(JS::Realm& realm)
     WEB_SET_PROTOTYPE_FOR_INTERFACE(ShadowRoot);
 }
 
+// https://dom.spec.whatwg.org/#dom-shadowroot-onslotchange
+void ShadowRoot::set_onslotchange(WebIDL::CallbackType* event_handler)
+{
+    set_event_handler_attribute(HTML::EventNames::slotchange, event_handler);
+}
+
+// https://dom.spec.whatwg.org/#dom-shadowroot-onslotchange
+WebIDL::CallbackType* ShadowRoot::onslotchange()
+{
+    return event_handler_attribute(HTML::EventNames::slotchange);
+}
+
 // https://dom.spec.whatwg.org/#ref-for-get-the-parent%E2%91%A6
 EventTarget* ShadowRoot::get_parent(Event const& event)
 {

+ 3 - 0
Userland/Libraries/LibWeb/DOM/ShadowRoot.h

@@ -25,6 +25,9 @@ public:
     bool delegates_focus() const { return m_delegates_focus; }
     void set_delegates_focus(bool delegates_focus) { m_delegates_focus = delegates_focus; }
 
+    void set_onslotchange(WebIDL::CallbackType*);
+    WebIDL::CallbackType* onslotchange();
+
     bool available_to_element_internals() const { return m_available_to_element_internals; }
     void set_available_to_element_internals(bool available_to_element_internals) { m_available_to_element_internals = available_to_element_internals; }
 

+ 1 - 1
Userland/Libraries/LibWeb/DOM/ShadowRoot.idl

@@ -9,7 +9,7 @@ interface ShadowRoot : DocumentFragment {
     readonly attribute boolean delegatesFocus;
     readonly attribute SlotAssignmentMode slotAssignment;
     readonly attribute Element host;
-    // FIXME: attribute EventHandler onslotchange;
+    attribute EventHandler onslotchange;
 };
 
 ShadowRoot includes InnerHTML;