From 8779a3ea7080a7ecfba8da4cbd1a1b9d8dd32a55 Mon Sep 17 00:00:00 2001 From: Keith Cirkel Date: Mon, 16 Mar 2026 16:09:46 +0000 Subject: [PATCH 1/7] 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/7] 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/7] 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 From e04d299ce12c521eff3e770190b721880a2343e1 Mon Sep 17 00:00:00 2001 From: Keith Cirkel Date: Mon, 13 Apr 2026 11:33:20 +0100 Subject: [PATCH 4/7] re-order attribute to before clonable --- source | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/source b/source index 1a9cd887869..a9c0166cafd 100644 --- a/source +++ b/source @@ -68302,18 +68302,6 @@ interface HTMLTemplateElement : HTMLElement { data-x="attr-template-shadowrootdelegatesfocus">shadowrootdelegatesfocus content attribute is a boolean attribute.

    -

    The shadowrootclonable content attribute is a - boolean attribute.

    - -

    The shadowrootserializable content - attribute is a boolean attribute.

    - -

    The shadowrootcustomelementregistry - content attribute is a boolean attribute.

    -

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

    @@ -68340,6 +68328,18 @@ interface HTMLTemplateElement : HTMLElement { value default">missing value default are both the Named state.

    +

    The shadowrootclonable content attribute is a + boolean attribute.

    + +

    The shadowrootserializable content + attribute is a boolean attribute.

    + +

    The shadowrootcustomelementregistry + content attribute is a boolean attribute.

    +

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

    @@ -144989,13 +144989,13 @@ document.body.appendChild(text);
  • If shadow's serializable is set, then append " shadowrootserializable=""".

  • -
  • If shadow's clonable is set, then append - " shadowrootclonable=""".

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

  • +
  • If shadow's clonable is set, then append + " shadowrootclonable=""".

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

    From 794d13ab1143bb3911ff559d3d4747557403c08f Mon Sep 17 00:00:00 2001 From: Keith Cirkel Date: Mon, 13 Apr 2026 16:15:02 +0100 Subject: [PATCH 5/7] re-order some more --- source | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/source b/source index a9c0166cafd..2d901c4ecc9 100644 --- a/source +++ b/source @@ -68241,10 +68241,10 @@ not-slash = %x0000-002E / %x0030-10FFFF
    Global attributes
    shadowrootmode
    shadowrootdelegatesfocus
    +
    shadowrootslotassignment
    shadowrootclonable
    shadowrootserializable
    shadowrootcustomelementregistry
    -
    shadowrootslotassignment
    Accessibility considerations:
    For authors.
    @@ -68258,10 +68258,10 @@ interface HTMLTemplateElement : HTMLElement { readonly attribute DocumentFragment content; [CEReactions] attribute DOMString shadowRootMode; [CEReactions, Reflect] attribute boolean shadowRootDelegatesFocus; + [CEReactions] attribute DOMString shadowRootSlotAssignment; [CEReactions, Reflect] attribute boolean shadowRootClonable; [CEReactions, Reflect] attribute boolean shadowRootSerializable; [CEReactions, Reflect] attribute DOMString shadowRootCustomElementRegistry; - [CEReactions] attribute DOMString shadowRootSlotAssignment; };
    Uses HTMLTemplateElement.
    @@ -68493,10 +68493,6 @@ interface HTMLTemplateElement : HTMLElement { attribute, limited to only known values.

    -

    The shadowRootCustomElementRegistry IDL - attribute intentionally does not have a boolean type so it can be extended.

    -

    The shadowRootSlotAssignment IDL attribute @@ -68505,6 +68501,10 @@ interface HTMLTemplateElement : HTMLElement { limited to only known values.

    +

    The shadowRootCustomElementRegistry IDL + attribute intentionally does not have a boolean type so it can be extended.

    +
    @@ -141162,6 +141162,13 @@ document.body.appendChild(text);
  • Let mode be templateStartTag's shadowrootmode attribute's value.

  • +
  • Let slotAssignment be "named".

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

  • +
  • Let clonable be true if templateStartTag has a shadowrootclonable attribute; otherwise false.

  • @@ -141174,13 +141181,6 @@ document.body.appendChild(text); data-x="attr-template-shadowrootdelegatesfocus">shadowrootdelegatesfocus attribute; otherwise false.

    -
  • Let slotAssignment be "named".

  • - -
  • 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 template.

  • @@ -152927,10 +152927,10 @@ interface External { globals; shadowrootmode; shadowrootdelegatesfocus; + shadowrootslotassignment shadowrootclonable; shadowrootserializable; shadowrootcustomelementregistry; - shadowrootslotassignment HTMLTemplateElement From cff9f5915e6cccf939d455aeb58cb8bf9792c37f Mon Sep 17 00:00:00 2001 From: Keith Cirkel Date: Mon, 13 Apr 2026 16:25:07 +0100 Subject: [PATCH 6/7] fix td --- source | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source b/source index 2d901c4ecc9..72b1eaf6ce0 100644 --- a/source +++ b/source @@ -152927,10 +152927,10 @@ interface External { globals; shadowrootmode; shadowrootdelegatesfocus; - shadowrootslotassignment - shadowrootclonable; - shadowrootserializable; - shadowrootcustomelementregistry; + shadowrootslotassignment; + shadowrootclonable; + shadowrootserializable; + shadowrootcustomelementregistry HTMLTemplateElement From f8c27b7fc3d9d39ea25a63f6f137530ca7e38f9f Mon Sep 17 00:00:00 2001 From: Keith Cirkel Date: Tue, 14 Apr 2026 16:28:56 +0100 Subject: [PATCH 7/7] Be gone spaces! we hardly knew ye --- source | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source b/source index 72b1eaf6ce0..d75f1720c93 100644 --- a/source +++ b/source @@ -152927,10 +152927,10 @@ interface External { globals; shadowrootmode; shadowrootdelegatesfocus; - shadowrootslotassignment; - shadowrootclonable; - shadowrootserializable; - shadowrootcustomelementregistry + shadowrootslotassignment; + shadowrootclonable; + shadowrootserializable; + shadowrootcustomelementregistry HTMLTemplateElement