diff --git a/README.md b/README.md index 0d67b8a..ae1188e 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,7 @@ classNames({ foo: true, bar: true }); // => 'foo bar' classNames('foo', { bar: true, duck: false }, 'baz', { quux: true }); // => 'foo bar baz quux' // other falsy values are just ignored -classNames(null, false, 'bar', undefined, 0, 1, { baz: null }, ''); // => 'bar 1' +classNames(null, false, 'bar', undefined, 0, { baz: null }, ''); // => 'bar' ``` Arrays will be recursively flattened as per the rules above: diff --git a/benchmarks/benchmarks.js b/benchmarks/benchmarks.js index b80d744..5428c6b 100644 --- a/benchmarks/benchmarks.js +++ b/benchmarks/benchmarks.js @@ -33,7 +33,7 @@ const benchmarks = [ }, { description: 'mix', - args: ['one', {two: true, three: false}, {four: 'four', five: true}, 6, {}] + args: ['one', {two: true, three: false}, {four: 'four', five: true}, {}] }, { description: 'arrays', diff --git a/bind.js b/bind.js index 70c342f..eaa1eaa 100644 --- a/bind.js +++ b/bind.js @@ -14,7 +14,7 @@ export default function classNames () { } function parseValue (arg) { - if (typeof arg === 'string' || typeof arg === 'number') { + if (typeof arg === 'string') { return this && this[arg] || arg; } diff --git a/dedupe.js b/dedupe.js index 6951e84..093c6f0 100644 --- a/dedupe.js +++ b/dedupe.js @@ -27,8 +27,6 @@ function appendValue (classSet, arg) { appendArray(classSet, arg); } else if (argType === 'object') { appendObject(classSet, arg); - } else if (argType === 'number') { - appendNumber(classSet, arg); } } @@ -51,10 +49,6 @@ function appendArray (classSet, array) { } } -function appendNumber (classSet, num) { - classSet[num] = true; -} - const hasOwn = {}.hasOwnProperty; function appendObject (classSet, object) { diff --git a/index.d.ts b/index.d.ts index 97f52b4..7220bea 100644 --- a/index.d.ts +++ b/index.d.ts @@ -7,7 +7,7 @@ // Sean Kelley // Michal Adamczyk // Marvin Hagemeister -export type Value = string | number | boolean | undefined | null; +export type Value = string | boolean | undefined | null; export type Mapping = Record; export interface ArgumentArray extends Array {} export interface ReadonlyArgumentArray extends ReadonlyArray {} diff --git a/index.js b/index.js index b0bda7a..8915411 100644 --- a/index.js +++ b/index.js @@ -14,7 +14,7 @@ export default function classNames () { } function parseValue (arg) { - if (typeof arg === 'string' || typeof arg === 'number') { + if (typeof arg === 'string') { return arg; } diff --git a/tests/bind.js b/tests/bind.js index cf5b84b..ba375e6 100644 --- a/tests/bind.js +++ b/tests/bind.js @@ -27,7 +27,7 @@ describe('bind', () => { }); it('joins arrays of class names and ignore falsy values', () => { - assert.equal(classNames('a', 0, null, undefined, true, 1, 'b'), 'a 1 b'); + assert.equal(classNames('a', 0, null, undefined, false, 'b'), 'a b'); }); it('supports heterogenous arguments', () => { @@ -105,7 +105,7 @@ describe('bind', () => { }); it('joins arrays of class names and ignore falsy values', () => { - assert.equal(classNamesBound('a', 0, null, undefined, true, 1, 'b'), '#a 1 #b'); + assert.equal(classNamesBound('a', 0, null, undefined, false, 1, 'b'), '#a #b'); }); it('supports heterogenous arguments', () => { diff --git a/tests/bind.test-d.ts b/tests/bind.test-d.ts index 71878a4..7211951 100644 --- a/tests/bind.test-d.ts +++ b/tests/bind.test-d.ts @@ -22,17 +22,17 @@ bound(null); bound(undefined); bound(true); bound(false); -bound(42); bound({ conditional: true }); bound({ conditional: {} }); bound({ conditional: Symbol() }); bound([]); -bound([['bar', null, undefined, true, false, 1234]]); -bound(['bar', null, undefined, true, false, 1234]); -bound('bar', null, undefined, true, false, 1234); +bound([['bar', null, undefined, true, false]]); +bound(['bar', null, undefined, true, false]); +bound('bar', null, undefined, true, false); bound('bar', ['abc', { foo: true }]); -bound('bar', ['abc', { foo: true }], { def: false, ijk: 1234 }); -bound('abc', 1234, true, false, undefined, null, { foo: true }, ['abc', 1234, true, false, undefined, null, { foo: true }]); +bound('bar', ['abc', { foo: true }], { def: false }); +bound('abc', true, false, undefined, null, { foo: true }, ['abc', true, false, undefined, null, { foo: true }]); bound(foo); bound(ifoo); expectError(bound(Symbol())); +expectError(bound(42)); diff --git a/tests/dedupe.js b/tests/dedupe.js index ac7de52..c1c51d1 100644 --- a/tests/dedupe.js +++ b/tests/dedupe.js @@ -23,14 +23,14 @@ describe('dedupe', () => { }); it('should make sure object with falsy value wipe out previous classes', () => { - assert.equal(dedupe('foo foo', 0, null, undefined, true, 1, 'b', { 'foo': false }), '1 b'); + assert.equal(dedupe('foo foo', 0, null, undefined, false, 'b', { 'foo': false }), 'b'); assert.equal(dedupe('foo', 'foobar', 'bar', { foo: false }), 'foobar bar'); assert.equal(dedupe('foo', 'foo-bar', 'bar', { foo: false }), 'foo-bar bar'); assert.equal(dedupe('foo', '-moz-foo-bar', 'bar', { foo: false }), '-moz-foo-bar bar'); }); it('joins arrays of class names and ignore falsy values', () => { - assert.equal(dedupe('a', 0, null, undefined, true, 1, 'b'), '1 a b'); + assert.equal(dedupe('a', 0, null, undefined, false, 'b'), 'a b'); }); it('supports heterogenous arguments', () => { diff --git a/tests/dedupe.test-d.ts b/tests/dedupe.test-d.ts index 693562a..ae4349b 100644 --- a/tests/dedupe.test-d.ts +++ b/tests/dedupe.test-d.ts @@ -19,17 +19,17 @@ dedupe(null); dedupe(undefined); dedupe(true); dedupe(false); -dedupe(42); dedupe({ conditional: true }); dedupe({ conditional: {} }); dedupe({ conditional: Symbol() }); dedupe([]); -dedupe([['bar', null, undefined, true, false, 1234]]); -dedupe(['bar', null, undefined, true, false, 1234]); -dedupe('bar', null, undefined, true, false, 1234); +dedupe([['bar', null, undefined, true, false]]); +dedupe(['bar', null, undefined, true, false]); +dedupe('bar', null, undefined, true, false); dedupe('bar', ['abc', { foo: true }]); -dedupe('bar', ['abc', { foo: true }], { def: false, ijk: 1234 }); -dedupe('abc', 1234, true, false, undefined, null, { foo: true }, ['abc', 1234, true, false, undefined, null, { foo: true }]); +dedupe('bar', ['abc', { foo: true }], { def: false }); +dedupe('abc', true, false, undefined, null, { foo: true }, ['abc', true, false, undefined, null, { foo: true }]); dedupe(foo); dedupe(ifoo); expectError(dedupe(Symbol())); +expectError(dedupe(42)); diff --git a/tests/index.js b/tests/index.js index 260b32c..d7f276d 100644 --- a/tests/index.js +++ b/tests/index.js @@ -16,7 +16,7 @@ describe('classNames', () => { }); it('joins arrays of class names and ignore falsy values', () => { - assert.equal(classNames('a', 0, null, undefined, true, 1, 'b'), 'a 1 b'); + assert.equal(classNames('a', 0, null, undefined, false, 'b'), 'a b'); }); it('supports heterogenous arguments', () => { diff --git a/tests/index.test-d.ts b/tests/index.test-d.ts index 90b092d..1254943 100644 --- a/tests/index.test-d.ts +++ b/tests/index.test-d.ts @@ -19,25 +19,25 @@ classNames(null); classNames(undefined); classNames(true); classNames(false); -classNames(42); classNames({ conditional: true }); classNames({ conditional: {} }); classNames({ conditional: Symbol() }); classNames([]); -classNames([['bar', null, undefined, true, false, 1234]]); -classNames(['bar', null, undefined, true, false, 1234]); -classNames('bar', null, undefined, true, false, 1234); +classNames([['bar', null, undefined, true, false]]); +classNames(['bar', null, undefined, true, false]); +classNames('bar', null, undefined, true, false); classNames('bar', ['abc', { foo: true }]); -classNames('bar', ['abc', { foo: true }], { def: false, ijk: 1234 }); -classNames('abc', 1234, true, false, undefined, null, { foo: true }, ['abc', 1234, true, false, undefined, null, { foo: true }]); -classNames('abc', 1234, true, false, undefined, null, { foo: true }, ['abc', 1234, true, false, undefined, null, { foo: true }], ['abc', 1234, true, false, undefined, null, { foo: true }] as const); +classNames('bar', ['abc', { foo: true }], { def: false }); +classNames('abc', true, false, undefined, null, { foo: true }, ['abc', true, false, undefined, null, { foo: true }]); +classNames('abc', true, false, undefined, null, { foo: true }, ['abc', true, false, undefined, null, { foo: true }], ['abc', 1234, true, false, undefined, null, { foo: true }] as const); classNames(foo); classNames(ifoo); expectError(classNames(Symbol())); +expectError(classNames(42)); // should match tests/index.js classNames('c', ['a', 'b']); classNames('', 'b', {}, ''); -classNames('a', 0, null, undefined, true, 1, 'b'); +classNames('a', null, undefined, true, 'b'); classNames('a', [[]]); classNames('a', []); classNames('c', ['a', 'b']); @@ -48,5 +48,5 @@ classNames(['a', 0, null, undefined, false, true, 'b']); classNames(['a', ['b', 'c']]); classNames(['a', ['b', ['c', {d: true}]]]); classNames(['a', {b: true, c: false}]); -classNames({a: true}, 'b', 0); -classNames({}, Infinity, [{}, []]); +classNames({a: true}, 'b'); +classNames({}, [{}, []]);