swordev / suid

A port of Material-UI (MUI) built with SolidJS.
https://suid.io
MIT License
660 stars 47 forks source link

Inspector improvements for dynamic <Select> and <Menu> support. #292

Open Azq2 opened 3 months ago

Azq2 commented 3 months ago

Fixing issue #223. This done by dynamic linking between HTML nodes and components.

Of course, this is a hacky and bad workaround. But, I think, it is better than, broken <Select> and <Menu> which makes this awesome lib unusable in most cases. :(

Azq2 commented 3 months ago

Demo with fix: https://github.com/Azq2/suid-select-bug

BierDav commented 3 months ago

@Azq2 does this also fix the issues with ssr though?

BierDav commented 3 months ago

Ok now, I've understood what you are doing here, but for my taste this is a bit too hacky. I would prefer a solution with an excessive use of contexts, because it also would solve the issue with ssr.

Azq2 commented 3 months ago

Yes, you are right. This doesn't help with SSR and is too hacky. But I positioned this fix as an intermediate solution before a better variant was implemented.

BierDav commented 3 months ago

If you need a solution to get csr with for working, you may use my implmentation: https://github.com/BierDav/suid-extensions You have to download the code and add it to your codebase. This btw. also supports SSR

Azq2 commented 3 months ago

This PR is not for me, I have already fixed this problem in my project.

This PR is for people who first use this library. They want a working library, not a lot of hours of debugging, because nowhere said about these problems.

And this PR is a first step to fixing that. The next step - reimplementing all the similar code to using contexts instead of hacky inspect().


@juanrgm What you think about this?

I know that open-source is always “as is” and no one is obliged to anyone. But I believe that we all have a responsibility for the future of front-end development. And a broken library of this level will only repel people who decide to try SolidJS.

We must join effort to fix this.