Re: [csswg-drafts] [css-scoping] Allow elements to expose a subset of their shadow tree, which can then be styled with regular CSS (#10939)

I guess my question is about the priority of the pain points.

I wonder how much of a pain point learning part names would be if we could compare it to brittle selectors? As a component author and consumer, if some third-party component pushes a patch bump and breaks my code and tests without me knowing that was going to happen, that strikes me as a MUCH bigger pain the butt than reading the docs for some names?

We can't compare because parts doesn't have the brittle code/test concern because of the naming feature. But I do know that shoelace/web awesome will update constantly. As a component consumer I would want component authors to be updating constantly if they can do those updates in patch bumps that are seamless and backwards compatible.

Broken code and tests leads to junk GH issues ("update your code, the internals have changed"). An API that forces component authors into a choice of "if I use the `export` attribute everything about this element is basically permanent" will undoubtedly mean less usage of the feature.

If we were to try to compare the pain of establishing and learning disconnected names vs the pain of having to update your entire application because a component changed its internals in a patch bump, I would argue that the pain of the latter is much greater.

I would also argue that exposing internals via names isn't actually going to do much in the way of lessening the pain of learning which pieces are exposed. Component authors are still going to have to document the exposed subtree. Component consumers are still going to have to read those docs to know which elements are available for custom styling. What difference does it really make if the string in the docs is `input` vs `main-input`? Component consumers can't really make any assumptions about the exposed sub tree, so they cant just write generic styles and then set them loose on a component library and see what happens. Each component in a library will have a different set of elements in their exposed subtree so the list of what is available will just go in the same place as the `parts` table currently is on shoelace's docs. It'll just be a list of elements to learn instead of names to learn.

-- 
GitHub Notification of comment by michaelwarren1106
Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/10939#issuecomment-2379971488 using your GitHub account


-- 
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config

Received on Friday, 27 September 2024 20:04:16 UTC