Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

jss-isolate

Package Overview
Dependencies
Maintainers
2
Versions
16
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

jss-isolate

True rules isolation through automatic properties reset.

  • 5.0.0-pre.1
  • Source
  • npm
  • Socket score

Version published
Maintainers
2
Created
Source

True rules isolation through automatic properties reset

Gitter

Some of the CSS properties are inheritable. It means that these properties apply to the child nodes from parent nodes. See this article for more details.

Due to this reason styles in reusable UI components can be broken if all inheritable properties were not defined explicitly for each element. It can cost You extra efforts to build strong isolation in a component.

This plugin protects styles from inheritance. It automatically creates a reset rule and applies to every user's rule.

Optionally you can also reset non-inherited properties, which would lead to even stronger isolation, as a protection against "greedy" selectors.

Make sure you read how to use plugins in general.

Usage example

const styles = {
  // All atRules will be ignored in reset.
  '@font-face': {
    fontFamily: 'MyHelvetica',
    src: 'local("Helvetica")',
  },
  title: {
    fontSize: 20,
    background: '#f00',
  },
  link: {
    fontSize: 12,
  },
  article: {
    isolate: false, // This rule will be ignored in reset.
    margin: '20px 10px 30px'
  }
}

Option isolate

Option isolate can be a boolean or a string. The default value is true, but you can override it in 3 different layers. For string value see Isolation by convention.

  1. Globally for all StyleSheets:

    jss.use(isolate({
      isolate: false
    }))
    
    const styles = {
      // Isolated.
      button: {
        isolate: true,
        color: 'red'
      },
      // Not isolated.
      a: {
        color: 'green'
      }
    }
    
  2. For a specific StyleSheet:

    const styles = {
      // Isolated.
      root: {
        isolate: true,
        color: 'red'
      },
      // Not isolated.
      a: {
        color: 'green'
      }
    }
    
    jss.createStyleSheet(styles, {isolate: false})
    
  3. For a specific Rule:

const styles = {
  button: {
    isolate: false,
    color: 'red'
  }
}

Isolation by convention

You can assign any string to the isolate option. It will be used to match a rule name to isolate. All other rules will remain unisolated.

jss.use(isolate({
  // Will match rule names `root` in all StyleSheets.
  isolate: 'root'
}))

const styles = {
  // Isolated.
  root: {
    color: 'red'
  },
  // Not isolated.
  a: {
    color: 'green'
  }
}

Option reset

Default value for reset option is inherited.

If you want to reset some properties additionally to inherited once, you can pass a map of props-values. For e.g. you can set box-sizing to be border-box by default for every isolated rule without messing around with greedy selectors like this: * {box-sizing: border-box}.

jss.use(isolate({
  reset: {
    boxSizing: 'border-box'
  }
}))

Demo

Simple

Reseted properties

Here are all inherited and all non-inherited properties we reset.

Issues

File a bug against cssinjs/jss prefixed with [jss-isolate].

Run tests

npm i
npm run test

License

MIT

Keywords

FAQs

Package last updated on 17 Aug 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc