Coder Social home page Coder Social logo

therakeshpurohit / react-style-editor Goto Github PK

View Code? Open in Web Editor NEW

This project forked from aurelain/react-style-editor

0.0 0.0 0.0 1.13 MB

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

License: MIT License

JavaScript 94.21% HTML 5.79%

react-style-editor's Introduction

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.

Exports

Besides the default export (StyleEditor), there are also a few utility functions exported:

  • analyze(): ouputs the machine format
  • parse(): a lighter version of analyze()
  • stringify(): outputs the preserved format
  • prettify(): outputs the pretty format

They all expect a CSS string as parameter and are useful if you don't want to use the React component and wait for its onChange.

Wishlist

  • Color swatches (similar to the browser)
  • Dropdown suggestions for properties/values (similar to the browser)
  • Keyboard support for TAB, : and UP/DOWN increments of numeric values
  • Theme support (similar to the browser)
  • Toggle view mode: tree/original
  • Undo/redo
  • Better code quality through propTypes
  • Filters (similar to the browser)
  • Error messages displayed in the warning-sign's tooltip

react-style-editor's People

Contributors

aurelain avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.