From 8779a3ea7080a7ecfba8da4cbd1a1b9d8dd32a55 Mon Sep 17 00:00:00 2001 From: Keith Cirkel Date: Mon, 16 Mar 2026 16:09:46 +0000 Subject: [PATCH 1/3] Add shadowrootslotassignment attribute --- source | 50 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/source b/source index 9f6bfcc10b4..699ae869d02 100644 --- a/source +++ b/source @@ -68244,6 +68244,7 @@ not-slash = %x0000-002E / %x0030-10FFFF
shadowrootclonable
shadowrootserializable
shadowrootcustomelementregistry
+
shadowrootslotassignment
Accessibility considerations:
For authors.
@@ -68312,6 +68313,32 @@ interface HTMLTemplateElement : HTMLElement { data-x="attr-template-shadowrootcustomelementregistry">shadowrootcustomelementregistry content attribute is a boolean attribute.

+

The shadowrootslotassignment content + attribute is an enumerated attribute with the following keywords and states:

+ + + + + + + +
Keyword + State + Brief description +
named + Named + The declarative shadow root uses named slot assignment. +
manual + Manual + The declarative shadow root uses manual slot assignment. +
+ +

The shadowrootslotassignment + attribute's invalid value default and missing value default are both the Named state.

+

The template contents of a template element are not children of the element itself.

@@ -141138,6 +141165,14 @@ document.body.appendChild(text); data-x="attr-template-shadowrootdelegatesfocus">shadowrootdelegatesfocus attribute; otherwise false.

+
  • Let slotAssignment be "named".

  • + +
  • If templateStartTag has a shadowrootslotassignment attribute + whose value is an ASCII case-insensitive match for "manual", then set slotAssignment to "manual".

  • +
  • If declarativeShadowHostElement is a shadow host, then insert an element at the adjusted insertion location with template.

  • @@ -141154,7 +141189,7 @@ document.body.appendChild(text);
  • Attach a shadow root with declarativeShadowHostElement, mode, clonable, - serializable, delegatesFocus, "named", and + serializable, delegatesFocus, slotAssignment, and registry.

    If an exception is thrown, then catch it and:

    @@ -144949,6 +144984,10 @@ document.body.appendChild(text);
  • If shadow's clonable is set, then append " shadowrootclonable=""".

  • +
  • If shadow's slot assignment is "manual", then append " shadowrootslotassignment="manual"".

  • +
  • Let shouldAppendRegistryAttribute be the result of running these steps:

    @@ -152882,7 +152921,8 @@ interface External { shadowrootdelegatesfocus; shadowrootclonable; shadowrootserializable; - shadowrootcustomelementregistry + shadowrootcustomelementregistry; + shadowrootslotassignment HTMLTemplateElement @@ -154438,6 +154478,12 @@ interface External { template Sets serializable on a declarative shadow root Boolean attribute + + shadowrootslotassignment + template + Sets slot assignment on a declarative shadow root + "named"; + "manual" shape area From c78ef20c5b9247b86707736207f50e4aba4d344c Mon Sep 17 00:00:00 2001 From: Keith Cirkel Date: Tue, 17 Mar 2026 09:09:21 +0000 Subject: [PATCH 2/3] Add template IDL reflection --- source | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source b/source index 699ae869d02..231af4b9a4b 100644 --- a/source +++ b/source @@ -68261,6 +68261,7 @@ interface HTMLTemplateElement : HTMLElement { [CEReactions, Reflect] attribute boolean shadowRootClonable; [CEReactions, Reflect] attribute boolean shadowRootSerializable; [CEReactions, Reflect] attribute DOMString shadowRootCustomElementRegistry; + [CEReactions] attribute DOMString shadowRootSlotAssignment; };
    Uses HTMLTemplateElement.
    @@ -68496,6 +68497,14 @@ interface HTMLTemplateElement : HTMLElement { data-x="dom-template-shadowRootCustomElementRegistry">shadowRootCustomElementRegistry IDL attribute intentionally does not have a boolean type so it can be extended.

    +
    +

    The shadowRootSlotAssignment IDL attribute + must reflect the shadowrootslotassignment content attribute, + limited to only known values.

    +
    +
    From f71532c7e31e28de036535bbf6892dee94428644 Mon Sep 17 00:00:00 2001 From: Keith Cirkel Date: Tue, 17 Mar 2026 09:09:59 +0000 Subject: [PATCH 3/3] Reword spec to use attribute state not value --- source | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/source b/source index 231af4b9a4b..1a9cd887869 100644 --- a/source +++ b/source @@ -141176,11 +141176,10 @@ document.body.appendChild(text);
  • Let slotAssignment be "named".

  • -
  • If templateStartTag has a shadowrootslotassignment attribute - whose value is an ASCII case-insensitive match for "manual", then set slotAssignment to "manual".

  • +
  • If templateStartTag's shadowrootslotassignment attribute is + in the Manual state, then + set slotAssignment to "manual".

  • If declarativeShadowHostElement is a shadow host, then insert an element at the adjusted insertion location with