lukeed / clsx

A tiny (239B) utility for constructing `className` strings conditionally.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

No classname will be generated from objects that have the "push" member set to true

micnic opened this issue · comments

In the following case all the classnames defined in the object are missing from the result:

clsx('stack', { pop: true, push: true }); // => 'stack'

This is caused by the if (!!mix.push) { check for Array, this makes clsx so fast, but I think it should be replaced with Array.isArray() or at least add this case to readme to warn people that get into this issue.

Hey, thanks!

Yeah, I forgot to mention this. It actually wasn't for speed (Array.isArray is really fast) but it was mostly for 100% browser support, including all old versions of IE. Most people won't care about this, but not 100% of people have that luxury (even today).

A silly side effect was that !!mix.push was 6 fewer bytes 😆

Let me make the rounds and talk to some folks and see if they care about this change in support – the "floor" would still only be IE9.. still pretty far back.

I'd then release a minor with Array.isArray support and a note for those who care about anything older.

Yup, that's what I meant by "the floor would becomes IE9"

Still very good 👍 Especially when paired with a note for the ~6 people (maybe) who actually benefitted from the IE5-8 support 😜

I'll get to this this weekend – I started talking to some others & this does not appear to affect them.