From a7c410656db54390954e29c5e35831e9db09fbb3 Mon Sep 17 00:00:00 2001 From: Adam Wathan Date: Thu, 6 Aug 2020 15:42:52 -0400 Subject: [PATCH] Add test coverage for default letter-spacing feature --- __tests__/plugins/fontSize.test.js | 56 ++++++++++++++++++++++++++++++ src/plugins/fontSize.js | 9 ++--- 2 files changed, 61 insertions(+), 4 deletions(-) diff --git a/__tests__/plugins/fontSize.test.js b/__tests__/plugins/fontSize.test.js index 431ccc052..5ffa31f7b 100644 --- a/__tests__/plugins/fontSize.test.js +++ b/__tests__/plugins/fontSize.test.js @@ -28,3 +28,59 @@ test('font-size utilities can include a default line-height', () => { ], ]) }) + +test('font-size utilities can include a default letter-spacing', () => { + const config = { + theme: { + fontSize: { + sm: '12px', + md: ['16px', { letterSpacing: '-0.01em' }], + lg: ['20px', { letterSpacing: '-0.02em' }], + }, + }, + variants: { + fontSize: ['responsive'], + }, + } + + const { utilities } = invokePlugin(plugin(), config) + + expect(utilities).toEqual([ + [ + { + '.text-sm': { 'font-size': '12px' }, + '.text-md': { 'font-size': '16px', 'letter-spacing': '-0.01em' }, + '.text-lg': { 'font-size': '20px', 'letter-spacing': '-0.02em' }, + }, + ['responsive'], + ], + ]) +}) + +test('font-size utilities can include a default line-height and letter-spacing', () => { + const config = { + theme: { + fontSize: { + sm: '12px', + md: ['16px', { lineHeight: '24px', letterSpacing: '-0.01em' }], + lg: ['20px', { lineHeight: '28px', letterSpacing: '-0.02em' }], + }, + }, + variants: { + fontSize: ['responsive'], + }, + } + + const { utilities } = invokePlugin(plugin(), config) + + expect(utilities).toEqual([ + [ + { + '.text-sm': { 'font-size': '12px' }, + '.text-md': { 'font-size': '16px', 'line-height': '24px', 'letter-spacing': '-0.01em' }, + '.text-lg': { 'font-size': '20px', 'line-height': '28px', 'letter-spacing': '-0.02em' }, + }, + ['responsive'], + ], + ]) +}) diff --git a/src/plugins/fontSize.js b/src/plugins/fontSize.js index 28ebf07ac..e5667db55 100644 --- a/src/plugins/fontSize.js +++ b/src/plugins/fontSize.js @@ -5,10 +5,11 @@ export default function() { const utilities = _.fromPairs( _.map(theme('fontSize'), (value, modifier) => { const [fontSize, options] = Array.isArray(value) ? value : [value] - // Tailwind 1.3+ syntax allowed line height to be specified in the array like - // ['16px', '24px'], so we can get it from there as well as from object syntax - const lineHeight = options instanceof Object ? options.lineHeight : options - const letterSpacing = options && options.letterSpacing + const { lineHeight, letterSpacing } = _.isPlainObject(options) + ? options + : { + lineHeight: options, + } return [ `.${e(`text-${modifier}`)}`,