diff --git a/sections/changes.include b/sections/changes.include
index 007269a32e..cc093cd8f6 100644
--- a/sections/changes.include
+++ b/sections/changes.include
@@ -13,8 +13,10 @@
- - Add the
:defined
psuedo-class selector definition
+ - Add the
slot
element
- Substantive change for custom elements.
+ - Add the
:defined
psuedo-class selector definition
+ - Substantive change for custom elements. This is at risk with only one known implementation
- Add autonomous custom elements
- Substantive change, implemented in Firefox, Blink, Webkit
- Includes the {{CustomElementRegistry}} object, the {{CEReactions}} and {{HTMLConstructor}}
diff --git a/sections/elements.include b/sections/elements.include
index dd544d9cea..621f0325e1 100644
--- a/sections/elements.include
+++ b/sections/elements.include
@@ -1204,6 +1204,18 @@
{{HTMLElement}} |
+
+ <{slot}> |
+ Shadow root slot |
+ flow;
+ phrasing |
+ phrasing |
+ transparent |
+ globals;
+ <{slot/name}> |
+ {{HTMLElement}} |
+
+
<{source}> |
Media source for <{video}> or <{audio}> or as image source for <{picture}> |
diff --git a/sections/semantics-scriptings.include b/sections/semantics-scriptings.include
index e7697c3bbc..a84ae810be 100644
--- a/sections/semantics-scriptings.include
+++ b/sections/semantics-scriptings.include
@@ -2350,4 +2350,95 @@
Some of these requirements are checked during [=create an element|element creation=],
and failing to follow them will result in a custom element that cannot be instantiated by the parser or DOM APIs.
+
+ The slot
element
+
+
+ - Categories:
+ - Flow content.
+ - Phrasing content.
+ - Contexts in which this element can be used:
+ - Where phrasing content is expected.
+ - Content model:
+ - Transparent
+ - Tag omission in text/html:
+ - Neither tag is omissible
+ - Content attributes:
+ - Global attributes
+ - <{slot/name}> - the name of the slot created.
+ - [=Allowed ARIA role attribute values=]:
+ -
+ Any role value.
+
+ - [=Allowed ARIA state and property attributes=]:
+ - Any
aria-*
attributes
+ applicable to the default or allowed roles.
+ - DOM interface:
+ -
+
+ [Exposed=Window, HTMLConstructor]
+ interface HTMLSlotElement : HTMLElement {
+ [CEReactions] attribute DOMString name;
+ sequence<Node> assignedNodes(optional AssignedNodesOptions options);
+ sequence<Element> assignedElements(optional AssignedNodesOptions options);
+ };
+
+ dictionary AssignedNodesOptions {
+ boolean flatten = false;
+ };
+
+
+ -
+ DPub Roles:
+
+ -
+ Any
+
+
+
+ The <{slot}> element creates a named slot within a shadow tree.
+ If it has an assigned node it represents that, if not it represents its contents.
+
+ The name attribute's value is a string.
+ It represents the name of the slot created in a shadow tree.
+
+ The {{slot/name}} IDL attribute must reflect the <{slot/name}> content attribute.
+
+
+ - slot .
name
+ - Get or set the slot's name.
+ - slot .
assignedNodes()
+ - Returns the slot's assigned nodes.
+ - slot .
assignedNodes({ flatten: true})
+ - Returns the slot's assigned nodes, including those of any <{slot}> elements that are descendants, calculated recursively. If there are not assigned nodes it returns the elements children.
+ - slot .
assignedElements()
+ - Returns the slot's assigned nodes that are Elements.
+ - slot .
assignedElements({ flatten: true})
+ - Returns only the Elements that would be returned by
+
assignedNodes({ flatten: true})
.
+
+
+ The assignedNodes()
, when invoked on an element element,
+ and given options
options, must run the following algorithm:
+
+
+ - If the
flatten
member of options is false
,
+ return the element's assigned nodes.
+ - otherwise, return the result of
+ [=find flattened slotables|finding flattened slottables=] for element.
+
+
+ The assignedElements()
, when invoked on an element element,
+ and given options
options, must run the following algorithm:
+
+
+ - Let result be empty.
+ - If the
flatten
member of options is false
,
+ set result to the element's assigned nodes.
+ - otherwise, set result to the result of
+ [=find flattened slotables|finding flattened slottables=] for element.
+ - Remove all nodes from result that are not elements.
+ - Return result.
+
+
diff --git a/single-page.bs b/single-page.bs
index 8482f6c9f5..d9d117ab34 100644
--- a/single-page.bs
+++ b/single-page.bs
@@ -954,6 +954,7 @@ urlPrefix: https://www.w3.org/TR/WebIDL-1/#; spec: WEBIDL-1
text: double
text: Error
text: long
+ text: sequence
text: unrestricted double
text: unsigned long
text: enumeration
@@ -963,6 +964,8 @@ urlPrefix: https://www.w3.org/TR/WebIDL-1/#; spec: WEBIDL-1
type: interface;
text: DOMString[]; url: DOMString
text: EmptyString; url: TreatNullAs
+ urlPrefix: slot-; type: dfn;
+ text: assigned nodes
# ****************************** XML (and related) ******************************************