|
| 1 | +import _ from 'lodash' |
| 2 | +import escapeClassName from '../../src/util/escapeClassName' |
| 3 | +import plugin from '../../src/plugins/boxShadow' |
| 4 | + |
| 5 | +test('box shadow can use default keyword and negative prefix syntax', () => { |
| 6 | + const addedUtilities = [] |
| 7 | + |
| 8 | + const config = { |
| 9 | + theme: { |
| 10 | + boxShadow: { |
| 11 | + default: '0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)', |
| 12 | + md: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)', |
| 13 | + '-': 'inset 0 2px 4px 0 rgba(0, 0, 0, 0.06)', |
| 14 | + '-md': '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)', |
| 15 | + }, |
| 16 | + }, |
| 17 | + variants: { |
| 18 | + boxShadow: ['responsive'], |
| 19 | + }, |
| 20 | + } |
| 21 | + |
| 22 | + const getConfigValue = (path, defaultValue) => _.get(config, path, defaultValue) |
| 23 | + const pluginApi = { |
| 24 | + config: getConfigValue, |
| 25 | + e: escapeClassName, |
| 26 | + theme: (path, defaultValue) => getConfigValue(`theme.${path}`, defaultValue), |
| 27 | + variants: (path, defaultValue) => { |
| 28 | + if (_.isArray(config.variants)) { |
| 29 | + return config.variants |
| 30 | + } |
| 31 | + |
| 32 | + return getConfigValue(`variants.${path}`, defaultValue) |
| 33 | + }, |
| 34 | + addUtilities(utilities, variants) { |
| 35 | + addedUtilities.push({ |
| 36 | + utilities, |
| 37 | + variants, |
| 38 | + }) |
| 39 | + }, |
| 40 | + } |
| 41 | + |
| 42 | + plugin()(pluginApi) |
| 43 | + |
| 44 | + expect(addedUtilities).toEqual([ |
| 45 | + { |
| 46 | + utilities: { |
| 47 | + '.shadow': { |
| 48 | + 'box-shadow': '0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)', |
| 49 | + }, |
| 50 | + '.shadow-md': { |
| 51 | + 'box-shadow': '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)', |
| 52 | + }, |
| 53 | + '.-shadow': { |
| 54 | + 'box-shadow': 'inset 0 2px 4px 0 rgba(0, 0, 0, 0.06)', |
| 55 | + }, |
| 56 | + '.-shadow-md': { |
| 57 | + 'box-shadow': '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)', |
| 58 | + }, |
| 59 | + }, |
| 60 | + variants: ['responsive'], |
| 61 | + }, |
| 62 | + ]) |
| 63 | +}) |
0 commit comments