lukeed/clsxPublic

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

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

MI

micnic opened Β·

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

```js 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.

  1. LU

    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.

  2. MI
    Author

    As I know `Array.isArray()` is supported by IE9

    sources: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray#Browser_compatibility https://kangax.github.io/compat-table/es5/ (check "Show obsolete platforms")

  3. LU

    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.

  4. lukeedclosed 0d6023a0ab7e6 years ago on GitHub