UNPKG

commerce-components

Version:

Vue.js installer plugin for Commerce.js with a global `<chec-payment-form>`, an enhanced Commerce.js aware `<form>` Vue component to facilitate rapid checkout development. (BETA v0.1.0)

49 lines (46 loc) 1.24 kB
/** * Provides a tailwind prop that can be used to override default tailwind classes on a component. * * Usage: * * Component: * { * mixins: [TailwindClasses('p-8 bg-white')], * } * * Template: * <div :class="tailwindClasses" /> */ export default (defaults, propName = 'tailwind') => ({ props: { [propName]: { type: [Array, Object, String], default: () => [], }, }, computed: { tailwindClasses() { // Convert ambiguous object/array/string syntax into an array const resolveClasses = input => { if (typeof input === 'object' && !Array.isArray(input)) { return Object.entries(input).reduce(([className, bool], acc) => { if (bool) { acc.push(className); } return acc; }, []); } if (!Array.isArray(input)) { return input.split(' '); } return input; }; const tailwind = resolveClasses(this[propName]); const definedPrefixes = tailwind.map(className => className.split('-')[0]); return [ ...resolveClasses(defaults).filter(className => !definedPrefixes.includes(className.split('-')[0])), ...tailwind, ]; }, }, });