diff --git a/src/mergeClasses.js b/src/mergeClasses.js index 4e275ac..cba8979 100644 --- a/src/mergeClasses.js +++ b/src/mergeClasses.js @@ -1,7 +1,13 @@ import _ from 'lodash' export const mergeClasses = (classes, activeNames = []) => { + + if(!classes.default && activeNames.length === 0){ + classes = { default: classes } + } + const styles = (classes.default && _.cloneDeep(classes.default)) || {} + activeNames.map((name) => { const toMerge = classes[name] if (toMerge) { diff --git a/test/mergeClasses.test.js b/test/mergeClasses.test.js index 6654f95..1cb11cf 100644 --- a/test/mergeClasses.test.js +++ b/test/mergeClasses.test.js @@ -129,3 +129,41 @@ describe('Combine', () => { expect(mergeClasses(classes, [])).toEqual(after2) }) }) + +describe('Combine with optional default ', () => { + it('should assume all properties are under the default property when "default" is omitted with no activeNames', () => { + const classes = { + header: { + margin: '0px', + }, + logo: { + color: 'blue', + }, + } + const after = { + header: { + margin: '0px', + }, + logo: { + color: 'blue', + }, + } + expect(mergeClasses(classes)).toEqual(after) + }) + + it('should not assume properties are nested under default when "default" is omitted but activeNames are present', () => { + const classes = { + header: { + margin: '0px', + }, + logo: { + color: 'blue', + }, + } + const after = {} + + const names = ['active'] + + expect(mergeClasses(classes, names)).toEqual(after) + }) +})