- From: Andrea Giammarchi <notifications@github.com>
- Date: Fri, 09 Dec 2016 01:54:25 -0800
- To: w3c/webcomponents <webcomponents@noreply.github.com>
- Message-ID: <w3c/webcomponents/issues/509/265975522@github.com>
@trusktr
> If we follow the current `<button is="my-button">` in the current order, then there's also the question of what something like `<my-better-button is="my-button">` does, and how can that ever fall back to `<button>`?
you did one extend right but you lost it in the second attempt. If it's native that you want to preserve, you'd have `<button is="my-button">` **and** `<button is="my-better-button">`.
While you'd use `{extends: 'button'}` for the first case, you'll use `{extends: 'my-button'}` in the second because being inherited via `MyBetterButton` it needs to be known.
Accordingly, this is how it could be via current specs, since you have a dependency.
```js
customElements.whenDefined('my-button', () => {
// avoid concurrent re-definition if run more than once
if (customElements.get('my-better-button')) return;
// define my-better-button
customElements.define(
'my-better-button',
class MyBetterButton extends MyButton {},
{extends: 'my-button'}
);
});
```
That's it, you preserve backward compatible built-ins semantics, you have the freedom to inherit anything that implements at its root the same built-in.
Accordingly, I don't see your point as a real issue, it's just that `is=""` is ugly for devs, but like already stated before by others, designers behind templates or people on the FE won't ever complain about.
**It works**, and it's been working for years, which is why I believe we already have the pencil but few are not realizing it, and they are looking for a pen thinking it'd be simpler.
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/w3c/webcomponents/issues/509#issuecomment-265975522
Received on Friday, 9 December 2016 09:55:01 UTC