Re: [whatwg/dom] Add Imperative Slot API (#966)

@mfreed7 commented on this pull request.



> @@ -2192,6 +2192,10 @@ steps:</p>
  <li><p>If the <i>open flag</i> is set and <var>shadow</var>'s <a for=ShadowRoot>mode</a> is
  <em>not</em> "<code>open</code>", then return null.</p></li>
 
+ <li><p>If <var>shadow</var>'s <a for=ShadowRoot>slot assignment</a> is "<code>manual</code>",
+ then return the <a>slot</a> in <var>shadow</var>'s <a for=tree>descendants</a> whose <a>manually assigned nodes</a>

Hmm, I thought the purpose was allowing the movement of **light dom** children of the host, not the `<slot>` elements themselves. Is that an important use case?

The (potentially huge?) downside of allowing movement of both light dom children **and** slot elements is that the `manually assigned nodes` vector can start to contain duplicates all over the place. Since that vector is not developer-visible, it might get very confusing, if the order of the `<slot>` elements starts to dictate which manually-assigned node gets assigned to which slot. Consider:

```html
<div id=host>
  <template shadowroot=open shadowrootmanualslotting>
    <slot id=slot1></slot>
    <slot id=slot2></slot>
  </template>
  <div id=node1></div>
  <div id=node2></div>
</div>

<script>
slot1.assign([node1, node2]);
slot1.remove();
slot2.assign([node1, node2]);
// Here, both node1/node2 will be assigned to `slot2`.
host.shadowRoot.appendChild(slot1);
// Still, both node1/node2 will be assigned to `slot2`, because `slot1` comes last.
host.shadowRoot.appendChild(slot2);
// Now, both node1/node2 will be assigned to `slot1`.
</script>
```

It seems more tractable (from a developer's point of view) to have all slots within a shadow root contain unique sets of manually assigned nodes, no? Otherwise, they'll always have to call `.assign()` on any slots they append to the shadow root, to make sure the (invisible) manually assigned nodes are still what they think.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/dom/pull/966#discussion_r608283324

Received on Wednesday, 7 April 2021 01:41:45 UTC