diff --git a/change/@griffel-core-69be5d24-4050-4443-a10d-75722b29e744.json b/change/@griffel-core-69be5d24-4050-4443-a10d-75722b29e744.json new file mode 100644 index 0000000000..38738b4dcc --- /dev/null +++ b/change/@griffel-core-69be5d24-4050-4443-a10d-75722b29e744.json @@ -0,0 +1,7 @@ +{ + "type": "patch", + "comment": "fix: handle empty strings in mergeClasses()", + "packageName": "@griffel/core", + "email": "olfedias@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/packages/core/src/mergeClasses.test.ts b/packages/core/src/mergeClasses.test.ts index 876d29c85b..47d5aff474 100644 --- a/packages/core/src/mergeClasses.test.ts +++ b/packages/core/src/mergeClasses.test.ts @@ -52,6 +52,11 @@ describe('mergeClasses', () => { expect(mergeClasses(undefined, false)).toBe(''); }); + it('handles empty classes', () => { + expect(mergeClasses('ui-button', '', 'ui-toogle-button')).toBe('ui-button ui-toogle-button'); + expect(mergeClasses('', '')).toBe(''); + }); + it('performs deduplication for multiple arguments', () => { const classes = makeStyles({ block: { display: 'block' }, diff --git a/packages/core/src/mergeClasses.ts b/packages/core/src/mergeClasses.ts index 3cf7a6e26e..d780977750 100644 --- a/packages/core/src/mergeClasses.ts +++ b/packages/core/src/mergeClasses.ts @@ -46,7 +46,7 @@ export function mergeClasses(): string { for (let i = 0; i < arguments.length; i++) { const className = arguments[i]; - if (typeof className === 'string') { + if (typeof className === 'string' && className !== '') { // All classes generated by `makeStyles()` are prefixed by a sequence hash, this allows to identify class sets // without parsing each className in a string const sequenceIndex = className.indexOf(SEQUENCE_PREFIX);