JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 2145
  • Score
    100M100P100Q105607F
  • License MIT

A React component that displays and edits CSS, similar to the browser's DevTools.

Package Exports

  • react-style-editor

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (react-style-editor) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

React Style Editor

Npm Version   Size

A React component that displays and edits CSS, similar to the browser's DevTools.

Live demo

Live demo

Features

  • Parses any CSS string and formats it in a familiar fashion
  • Validates each rule and each declaration using the browsers's own engine
  • Facilitates commenting the CSS code through checkbox toggling
  • Allows easy additions by clicking next to the desired location
  • Has no dependencies (other than React)
  • Is tiny (< 10 KB minified)
  • Is customizable through classes
  • Offers 3 output formats:
    • the code with preserved formatting
    • a machine-friendly model of the code (recursive array of objects)
    • the prettified code

Installation

npm i react-style-editor

Usage

import React from 'react'
import StyleEditor from 'react-style-editor'

class Component extends React.Component {

    render() {
        return (
            <StyleEditor
                defaultValue={`
                    div {color:red;}
                    /* Hello, World! */
                    @media screen {
                        article {
                            display: flex;
                        }
                    }
                `}
            />
        )
    }
}

Props

prop type default description
defaultValue string '' The initial CSS code
value string undefined The controlled CSS code
onChange function null A closure that receives a single argument, string or array, depending on the value of outputFormats
outputFormats string 'pretty' Comma-separated values of: 'preserved', 'machine', 'pretty'
readOnly boolean false All interactions with the component are blocked

All parameters are optional, but some are inter-related. For example, due to the nature of React, you should use StyleEditor either fully controlled or fully uncontrolled (see this article). A short summary:

  • defaultValue => uncontrolled, the component is on its own
  • value => controlled => you must also use the onChange or readOnly properties.

The above behavior is identical to that of normal React form elements, e.g. <textarea/>.

Any other props are spread to the internal root.

Ideas for the future

  • Color swatches (similar to the browser)
  • Dropdown suggestions for properties/values (similar to the browser)
  • Ability to copy/delete fragments of code
  • Keyboard support for TAB, : and UP/DOWN increments of numeric values
  • Prop for automatically mutating the code after validation
  • Theme support (similar to the browser)
  • Toggle view mode: tree/original
  • Undo/redo
  • Better code quality through propTypes
  • Better comment rendering (some comments look better inline rather than block)
  • Filters (similar to the browser)
  • Error messages displayed in the warning-sign's tooltip