Flip styles using rtl-css-js
npm install jss-rtlsh
npm install jss-rtl
`
Examples
These examples will give you a brief overview of how this library is used:
$3
You can use jss.use(...) to augment the global jss instance.
`javascript
import jss from 'jss';
import rtl from 'jss-rtl';
jss.use(rtl());
const styles = {
foo: {
'padding-left': '2px',
'margin-right': '2px',
},
bar: {
'transform': 'translate3d(30%, 20%, 10%)',
},
baz: {
flip: false, // opt-out of conversion for a specific rule-set
'margin-right': '1px',
},
};
jss.createStyleSheet(styles); /* =>
.foo-0-0 {
padding-right: 2px;
margin-left: 2px;
}
.bar-0-1 {
transform: translate3d(-30%, 20%, 10%);
}
.baz-0-2 {
margin-right: 1px;
}
*/
`
Or you can use the jss-preset-default library and append this one to the end.
`javascript
import { create } from 'jss';
import preset from 'jss-preset-default';
import rtl from 'jss-rtl';
const presets = preset().plugins;
const jss = create({ plugins: [...presets, rtl()] });
// ...
`
Opting-out for an entire sheet
You can opt-out for a sheet entirely.
`javascript
const styles = {
foo: {
'padding-left': '2px',
'margin-right': '2px',
},
baz: {
flip: true, // rules take precedence, this one is forced to flip
'margin-right': '1px',
},
};
jss.createStyleSheet(styles, { flip: false }); /* =>
.foo-0-0 {
padding-left: 2px;
margin-right: 2px;
}
.baz-0-1 {
margin-left: 1px;
}
*/
`
Option
enabled
While using this library you might add flip: false or flip: true to some of your
rule-sets. It is recommended that you disable this plugin instead of removing it
from the plugins array so that it can at least remove the flip props from your rule-sets.
This option is also the best method for switching between rtl and ltr.
`javascript
jss.use(rtl({ enabled: false }));
const styles = {
foo: {
'padding-left': '2px',
'margin-right': '2px',
},
baz: {
flip: true, // This gets overruled by enable: false, and gets removed from the rule-set
'margin-right': '1px',
},
};
// Doesn't matter, rtl is disabled entirely
jss.createStyleSheet(styles, { flip: true }); /* =>
.foo-0-0 {
padding-left: 2px;
margin-right: 2px;
}
.baz-0-1 {
margin-right: 1px;
}
*/
`
Option
opt
It's also possible to change the default behavior to opt-in.
`javascript
jss.use(rtl({ opt: 'in' }));
const styles = {
foo: { // This is ignored by the plugin
'padding-left': '2px',
'margin-right': '2px',
},
baz: {
flip: true, // This gets flipped
'margin-right': '1px',
},
};
jss.createStyleSheet(styles); /* =>
.foo-0-0 {
padding-left: 2px;
margin-right: 2px;
}
.baz-0-1 {
margin-left: 1px;
}
*/
// Or opt-in an entire sheet
const styles = {
foo: {
'padding-left': '2px',
'margin-right': '2px',
},
baz: {
'margin-right': '1px',
},
};
jss.createStyleSheet(styles, { flip: true }); /* =>
.foo-0-0 {
padding-right: 2px;
margin-left: 2px;
}
.baz-0-1 {
margin-left: 1px;
}
*/
``