GithubHelp home page GithubHelp logo

yizhuang / react-simple-collapsible-element Goto Github PK

View Code? Open in Web Editor NEW
1.0 3.0 0.0 663 KB

A react collapsible library/accordion supports nested elements with custom styling and common use cases

HTML 4.44% CSS 2.03% JavaScript 93.53%
react javascript awesome collapsible npm accordion

react-simple-collapsible-element's Introduction

react-simple-collapsible-element

npm Version

Demo

See example for demo, npm install and npm start

Why use this?

Simple, Lightweight, Production-ready, has all the common use cases covered. Data for the collapsible can be jsx or
pure JSON data coming from a CMS by non-technical people.

Install

$ npm install react-simple-collapsible-element --save

Usage

$ Production-ready Simple react collapsible supports nested element and custom styling.

example1.

import Collapsible from "react-simple-collapsible-element";

const data = [
  {
    title: "title 1",
    // title: <myReactComponent /> this is ok too!
    // title: (open) => open ? <PurchaseForm /> : <ProductCard />  this is ok too!
    content: "content 1" // content: <PayButton /> or content: (open) => <PayButton isActive={open} />
  },
  {
    // title and content can be a function or non-function.
    // open props is only true when the children which is content is open.
    title: open => (
      <h1 style={{ color: open ? "orange" : "white " }}>title 2</h1>
    ),
    // title: <h1>title 2</h1>   this is ok too!
    contentStyle: { backgroundColor: "red" }, // can be a classname also.
    activeContentStyle: "activeContentStyle", // classname
    content: open => (
      <ul>
        <li>{open ? "This content is currently open" : ""}</li>
        <li>content 2</li>
        <li>content 2</li>
      </ul>
    )
  }
];

return <Collapsible data={data} />;

example2.

import Collapsible from 'react-simple-collapsible-element';

const data = [
  {
    title: (open) => <h1>title 1 { open ? 'this is current opened!' : 'its close ATM'}</h1>,
    content: <span>content 1</span>,
    contentStyle: 'content-class'
  },
  {
    title: 'title 2',
    content: [
      {
        title: 'title 2 title 1',
        content: 'title 2 title 1 content',
        titleStyle: { backgroundColor: 'black' }, // can be a classname also.
        activeTitleStyle: 'activeTitleStyle',
        contentStyle: { backgroundColor: 'red' }, // can be a classname also.
        activeContentStyle: 'activeContentStyle'
      }
    ]
  }
];

return <Collapsible keepOpen={true or false} data={data} />;

Title and Content as a function

When title and content are functions, it takes a boolean as a params, it is false by default if the Collapsible is current closed.

Props

Name Type Default Description
title Element, function, string 'div' parent
content Element, string, function, array div child
keepOpen bool false whether or not keep the current element open when click on other element
customTransition String height .3s ease-out custom transition
titleStyle String / Object undefined Can be a style object or multiple classnames together.
contentStyle String / Object undefined Can be a style object or multiple classnames together.
activeTitleStyle String undefined a classname to pass to when the title is active.
activeContentStyle String undefined a classname to pass to when the content is active.

react-simple-collapsible-element's People

Contributors

yizhuang avatar

Stargazers

 avatar

Watchers

 avatar  avatar  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.