Skip to content

Commit

Permalink
fix(between): added error case when to/from unit is differs from mix/…
Browse files Browse the repository at this point in the history
…max (#511)

* chore(library): update dependencies

Update dependencies and fix new flow error in triangle.test.js

* refactor(stripunit): fully deprecate returnUnit

Fully deprecate returnUnit functionality and refactor return.

* refactor(readablecolor): make strict mode default

Make strict mode default when passing custom colors.

* build(babel): enable bugfix: true

Enable bugfix:true in build and target explicit browser list

* build(lint-staged): remove superfulous git add

* build(lerna): lerna init

* feat(normalize): upgrade to normalize 8.0.1

* build(docs): removed documentation.js auto generation

* feat(fontface): now defaults to looking for local font first

Default is now to look for a local font of the same family-name before downloading. Can be turned
off by passing null to localFonts.

BREAKING CHANGE: localFont will now be populated by default and may have unexpected behavior.

* feat(important): important helper for module rule specificity

important helper for targeting specific rules in module returns for adding `!important`-level
specificity.

* chore(important): update to not mutate original parameter

* chore(important): add to index.js

* fix(triangle): triangle now properly supports inherit

triangle now returns properties in a way that allows inherit to work by declaring an individual side
for the triangle color.

* feat(cssvar): allow a default value for cssVar

Allow the user to pass a default value to cssVar for when a variable is not found.

* fix(between): added error case when to/from unit is different than min/max

Added an error case when the unit for to/fromSize is different than min/maxScreen. This was causing
bad calculations based on the differing scales.

BREAKING CHANGE: If you were using a mix of unit and unitless measure or working with different
units with similar scales (em/rem) you will now get an error where you may have been getting a
seemingly valid calculation.

fix #445
  • Loading branch information
bhough committed Sep 16, 2020
1 parent 767fb78 commit 7019c4a
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 11 deletions.
4 changes: 4 additions & 0 deletions src/internalHelpers/errors.md
Expand Up @@ -302,3 +302,7 @@ CSS variable not found and no default was provided.
## 75

important requires a valid style object, got a %s instead.

## 76

fromSize and toSize must be provided as stringified numbers with the same units as minScreen and maxScreen.
4 changes: 4 additions & 0 deletions src/mixins/between.js
Expand Up @@ -54,6 +54,10 @@ export default function between(
throw new PolishedError(48)
}

if (fromSizeUnit !== minScreenUnit || toSizeUnit !== maxScreenUnit) {
throw new PolishedError(76)
}

const slope = (unitlessFromSize - unitlessToSize)
/ (unitlessMinScreen - unitlessMaxScreen)
const base = unitlessToSize - slope * unitlessMaxScreen
Expand Down
4 changes: 0 additions & 4 deletions src/mixins/test/__snapshots__/between.test.js.snap
Expand Up @@ -3,7 +3,3 @@
exports[`between should return a valid calc formula when not passed min/max screen sizes 1`] = `"calc(-9.09px + 9.09vw)"`;

exports[`between should return a valid calc formula when passed min/max screen sizes 1`] = `"calc(-33.33px + 13.33vw)"`;

exports[`between should return a valid calc formula when passed unitless to/from values as numbers 1`] = `"calc(-9.09 + 9.09vw)"`;

exports[`between should return a valid calc formula when passed unitless to/from values as strings 1`] = `"calc(-9.09 + 9.09vw)"`;
25 changes: 18 additions & 7 deletions src/mixins/test/between.test.js
Expand Up @@ -10,13 +10,6 @@ describe('between', () => {
expect(between('20px', '100px')).toMatchSnapshot()
})

it('should return a valid calc formula when passed unitless to/from values as numbers', () => {
expect(between(20, 100)).toMatchSnapshot()
})

it('should return a valid calc formula when passed unitless to/from values as strings', () => {
expect(between('20', '100')).toMatchSnapshot()
})
// Errors
it('should throw an error when not passed min/max screen size as a string', () => {
expect(() => {
Expand Down Expand Up @@ -44,4 +37,22 @@ describe('between', () => {
'fromSize and toSize must be provided as stringified numbers with the same units.',
)
})

it('should throw an error when passed to/from size with different units than mix/max screen', () => {
expect(() => {
// $FlowFixMe
between('1em', '100em', '400px', '1000px')
}).toThrow(
'fromSize and toSize must be provided as stringified numbers with the same units as minScreen and maxScreen.',
)
})

it('should throw an error when passed to/from size with no units but mix/max with units', () => {
expect(() => {
// $FlowFixMe
between(20, 100)
}).toThrow(
'fromSize and toSize must be provided as stringified numbers with the same units as minScreen and maxScreen.',
)
})
})

0 comments on commit 7019c4a

Please sign in to comment.