Doug Gibson

Doug Gibson

@dgibson.bsky.social

Front-end/design systems engineer (web components, a11y, CSS, JS; former full-stack/ColdFusion developer), metalhead, geek, father.

369 Followers 332 Following 83 Posts Joined Nov 2024
1 month ago

Looks like they've pulled the pages down already too.

2 1 1 0
1 month ago

Is the code to this "design system" public somewhere like uswds?

2 0 1 0
1 month ago

I actually like the other one since it's more backward compatible without @property.

1 0 0 0
1 month ago

Amazing! I tried this on a coldfusion test page for my components that was showing a terrible fouc and it's much improved. I don't generally see it so bad on production sites but this is a nice snippet to have in my back pocket just in case.

1 0 1 0
2 months ago

And web components work pretty well with Angular out of the box last I checked.

0 0 1 0
2 months ago

And I completely agree with this. One of the best places I'd use the Shadow DOM is for the calendar/popover part of a date input/picker. The real issue is using Shadow DOM as the default without understanding all the limitations and issues it may cause.

2 0 0 0
2 months ago

Because we can't extend native elements, a custom element's host tag is usually an inert wrapper and the interactive element is rendered within, in the shadow DOM. ElementInternals patches its form participation, but still doesn't allow it to be labelled by a label outside it's shadow DOM.

0 0 1 0
2 months ago

One cannot easily create interactive elements that exist in the light DOM and only have parts in the Shadow DOM like you see for native form field implementations in the browser.

1 0 2 0
2 months ago

I think this is misleading. It's important to look at how they use shadow DOM as well. The fact that a select uses it is completely different than creating your own select component that is entirely in the Shadow DOM. I use shadow DOM very sparingly.

2 0 1 0
6 months ago

Devs should be included in it though. I see a lot of issues that come from design centric decisions that don't consider the native platform, including naming of things.

2 0 1 0
6 months ago

How long ago? I wrote one with aria-activedescendant and tested it (just recently) across all screen readers and browsers and platforms and it seemed to work fine in Safari.

0 0 1 0
7 months ago

Been there. I learned 2 things from this experience:

I really needed to up my attention to detail to reduce this because designers will notice all those things.

But also I needed a detailed spec sheet that spelled things out visually as well as proper requirements. A picture != requirements.

0 0 0 0
7 months ago
Me and my son at the concert Volbeat in concert Volbeat in concert Volbeat in concert

Saw Volbeat for the first time in over a decade with my son last night at Jiffy Lube Live. Seats were great - front and center in the orchestra section behind the pit. They do an amazing job of creating headbanging riffs with catchy hooks and vocal melodies and the singing was spot-on.

1 0 0 0
8 months ago

I don't use shadow dom so my components set their public variables in :root. The part about not overriding them with selectors deeper than the host (wc selector) still applies because of how I write my css though. It took a while to fully work through and understand that part.

3 0 1 0
8 months ago

I think I may have it handled already with a @watch (this is stencil) on the value prop that sets the child selected states.

2 0 0 0
8 months ago

Honestly I haven't dealt with a form reset in quite a while. I'll have to consider the impacts on some of my components. Good point. I tend to slot the native controls so most just work. But there's always some like dropdowns...

0 0 1 0
8 months ago

I would use the attribute selector because unlike the native element, you would likely manage this prop like a state based on user interaction. Web components should be reactive to work with modern frameworks, so this behavior fits the paradigm better.

1 0 1 0
9 months ago

Maybe you're saying the same thing but I've seen some storybooks that have dozens of stories for a component, most of which are just a control toggle away.

0 0 0 0
9 months ago

In some cases I think the control is enough vs separate stories. If my button has 3 fills and 3 colors (conservatively), I don't really need 9 stories to represent them. I use individual stories when there's complexity or different implementation necessities (e.g., complex slotted content).

0 0 1 0
9 months ago

I have been using stencil for 7 years on 2 design systems/ 3 major releases. I've never written a component from scratch but it sounds horrible πŸ˜€.

1 0 0 0
9 months ago

I use stencil and it uses jsx, which I like. That and the polyfilled slots makes it hard to move to something else.

1 0 1 0
9 months ago

I didn't know you could use jsx with lit. Is that out of the box?

1 0 1 0
9 months ago

Sounds like you should check out stencil to build your components - it's the best of both worlds.

1 0 1 0
10 months ago

Has it? I don't think it did.

1 0 1 0
10 months ago

That solid foundation is a big investment, but hopefully worth it in the end.

1 0 0 0
10 months ago

I'll try to start up a new project and see what's up. I'm stuck on a previous version on my work project for reasons... You are doing a web components project, not stencil app, correct?

1 0 1 0
10 months ago

I've been in stencil-land for too long to notice. I have my own gripes there, but was just reading the FAST docs the other day and feel you there.

1 0 1 0
10 months ago

Identifying what's a web component from a pattern made up of web components isn't trivial. In my first design system, we made components that did too much or were overly complex. Only after supporting those did we realize how and why to focus on building blocks and reuse more.

2 0 0 0
10 months ago

Well played.

4 0 0 0
10 months ago

This was my first thought as well. Using a CSS API for customizing components has so many benefits. I've been planning to write an article on it but never got around to it.

0 0 0 0