From bd9628141ff3c1699a7561f2f22b0105bd61006d Mon Sep 17 00:00:00 2001 From: vitalets Date: Mon, 5 Jun 2017 12:55:33 +0300 Subject: [PATCH] Use native percents when possible, fix #32 --- CHANGELOG.md | 2 ++ README.md | 64 +++++++++++++++++++---------------- examples/readme/component.js | 17 +++++----- examples/screenshot.png | Bin 60383 -> 0 bytes src/__tests__/value.test.js | 5 ++- src/value.js | 3 +- 6 files changed, 50 insertions(+), 41 deletions(-) delete mode 100644 examples/screenshot.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 76ca77c..bd14129 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ ## 0.5.0 (Jun 5, 2017) * Add [babel-plugin-runtyper](https://github.com/vitalets/babel-plugin-runtyper) +* Use native percents when possible ([#32]) ## 0.4.0 (Apr 13, 2017) @@ -31,3 +32,4 @@ [#14]: https://github.com/vitalets/react-native-extended-stylesheet/pull/14 [#18]: https://github.com/vitalets/react-native-extended-stylesheet/pull/18 [#38]: https://github.com/vitalets/react-native-extended-stylesheet/pull/38 +[#32]: https://github.com/vitalets/react-native-extended-stylesheet/pull/32 diff --git a/README.md b/README.md index 70f6ff0..97d05ec 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Extend [React Native](https://facebook.github.io/react-native/) stylesheets with media-queries, variables, dynamic themes, relative units, percents, math operations, scaling and other styling stuff. - + - [Installation](#installation) - [Usage](#usage) @@ -33,6 +33,7 @@ relative units, percents, math operations, scaling and other styling stuff. - [.child()](#child) - [.subscribe()](#subscribe) - [FAQ](#faq) +- [Changelog](#changelog) - [Feedback](#feedback) - [License](#license) @@ -162,24 +163,33 @@ EStyleSheet.build({ \[[top](#react-native-extended-stylesheet)\] ### Percents -Percent values are useful for **single-orientation apps** because calculation is performed on app start only. -They are calculated relative to **screen width/height** (not parent component!). +Percent values are supported natively since React Native 0.43. +Style properties that contain *only* percent value (e.g. `"80%"`) are passed as is to the native code. +The only case when JavaScript calculation is applied by this library - operations with percent values, e.g. `"100% - 20"`. +Percents are calculated relative to **screen width/height** on application launch. ```js const styles = EStyleSheet.create({ column: { - width: '80%', - height: '50%', - marginLeft: '10%' + width: '100% - 20' } }); ``` -Note: supporting orientation change is always design-decision but sometimes it's really unneeded and makes life much easier. -How to lock orientaion for [IOS](http://stackoverflow.com/a/24205653/740245), [Android](http://stackoverflow.com/a/4675801/740245). **Percents in nested components** -If you need sub-components with percentage props based on parent, you can achieve it with variables. +If you need sub-components with percent operations - you can use variables. For example, to render 2 sub-columns with 30%/70% width of parent: ```js +render() { + return ( + + + + + ); +} + +... + const styles = EStyleSheet.create({ $columnWidth: '80%', column: { @@ -193,27 +203,15 @@ const styles = EStyleSheet.create({ width: '0.7 * $columnWidth' } }); - -... - -render() { - return ( - - - - - ); -} - ``` \[[top](#react-native-extended-stylesheet)\] ### Media queries -Media queries are supported in standard format (thanks for idea to [@grabbou](https://github.com/grabbou), +Media queries allows to have different styles for different screens, platform and orienation. +They are supported as properties with `@media` prefix (thanks for idea to [@grabbou](https://github.com/grabbou), [#5](https://github.com/vitalets/react-native-extended-stylesheet/issues/5)). -They allows to have different styles for different screens, platform, orienation etc. -Supported values are: +Media queries can operate with the following values: * media type: `ios|android` * `width`, `min-width`, `max-width` @@ -221,20 +219,25 @@ Supported values are: * `orientation` (`landscape|portrait`) * `aspect-ratio` -You can define media queries on sheet level or style level: +Example: ```js const styles = EStyleSheet.create({ column: { width: '80%', }, - '@media (min-width: 350) and (max-width: 500)': { // media query on sheet level + '@media (min-width: 350) and (max-width: 500)': { column: { width: '90%', } - }, + } +}); +``` +Also you can use media queries on *style level*: +```js +const styles = EStyleSheet.create({ header: { fontSize: 18, - '@media ios': { // media query on style level + '@media ios': { color: 'green', }, '@media android': { @@ -551,9 +554,12 @@ EStyleSheet.subscribe('build', () => { Currently orientation change is not properly supported. Please see [this issue](https://github.com/vitalets/react-native-extended-stylesheet/issues/9) for more details. +## Changelog +[CHANGELOG.md](https://github.com/vitalets/react-native-extended-stylesheet/blob/master/CHANGELOG.md) + ## Feedback If you have any ideas or something goes wrong feel free to -[open issue](https://github.com/vitalets/react-native-extended-stylesheet/issues/new) or pull request. +[open new issue](https://github.com/vitalets/react-native-extended-stylesheet/issues/new). ## License MIT diff --git a/examples/readme/component.js b/examples/readme/component.js index 94b63bb..0b94a19 100644 --- a/examples/readme/component.js +++ b/examples/readme/component.js @@ -18,9 +18,10 @@ export default class extends React.Component { Extended StyleSheets - Percent values: - width=80%, - margin=10% + Percent values,{' '} + variables and operations: + width=100% - 20, + margin=10% * $width CSS pseudo-classes: @@ -34,10 +35,10 @@ export default class extends React.Component { })} - Variables: - width=$size, - height=$size * 2, - + Media queries,{' '} + REMs and scaling: + @media (max-width: 350): {'{'} width: 20% {'}'} + Like it! @@ -73,7 +74,7 @@ const styles = EStyleSheet.create({ fontWeight: 'bold', }, label: { - textAlign: 'left', + textAlign: 'center', fontSize: '0.8rem', color: '$textColor', marginTop: 10, diff --git a/examples/screenshot.png b/examples/screenshot.png deleted file mode 100644 index d89db2521cc8f194f93801c3dc9b9afd83abc44f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60383 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 IlrReZA5%>Dy#N3J diff --git a/src/__tests__/value.test.js b/src/__tests__/value.test.js index 15c562b..7d44d7e 100644 --- a/src/__tests__/value.test.js +++ b/src/__tests__/value.test.js @@ -33,9 +33,8 @@ describe('value', function () { expect(() => new Value('$xxx', 'prop', varsArr).calc()).toThrowError('Unresolved variable: $xxx'); }); - it('should calc percent', function () { - expect(new Value('50%', 'width', varsArr).calc()).toEqual(50); - expect(new Value('100%', 'height', varsArr).calc()).toEqual(200); + it('should not calc percent value (when it contains only percent, as it supported natively)', function () { + expect(new Value('50%', 'width', varsArr).calc()).toEqual('50%'); }); it('should calc rem', function () { diff --git a/src/value.js b/src/value.js index 42a4e4e..ea0b8c5 100644 --- a/src/value.js +++ b/src/value.js @@ -50,12 +50,13 @@ export default class Value { /** * Calculates string + * Here we do not calc percent values as they supported natively (#32). + * But keep calculating percent for operands when value defined as operation. */ calcString() { let actions = [ this.tryCalcOperation, this.tryCalcVar, - this.tryCalcPercent, this.tryCalcRem, ]; let value = this.tryActions(actions, this.value);