@tdcerhverv/accordion
TypeScript icon, indicating that this package has built-in type declarations

1.6.2 • Public • Published

MaterialAccordion component

State

Install

import { MaterialAccordion, MaterialAccordionGroup } from '@tdcerhverv/accordion';

Usage

Accordions should be made children of a MaterialAccordion.Group element. Even when using a single accordion this should be nested as a child to one of these components, and should not have any siblings. If there are any non-MaterialAccordion siblings on the same level this will break the MaterialAccordion styling

Simple usage:

<MaterialAccordionGroup>
    <MaterialAccordion title={'Click here to toggle accordion'}>
        <p>Some paragraph or any valid React child element</p>
    </MaterialAccordion>
</MaterialAccordionGroup>

Detailed usage:

const props = {
    title: 'Lorem Ipsum Dolor Sit',
    initialOpen: true,
    onToggle: myHandlerMethod,
    children: 'Some paragraph or any valid React child element',
};
<MaterialAccordionGroup>
    <MaterialAccordion {...props}/>
</MaterialAccordionGroup>

Putting children in props makes it easier to iterate over items:

<MaterialAccordionGroup>
    {items.map(props => <MaterialAccordion {...props}/>)}
</MaterialAccordionGroup>

Otherwise, Accordions can manually be added:

<MaterialAccordionGroup>
    <MaterialAccordion {...props}/>
    <MaterialAccordion {...props}/>
    <MaterialAccordion {...props}/>
    ...even more accordions
</MaterialAccordionGroup>

Props

interface IMUIAccordion extends HTMLAttributes<HTMLDivElement> {
    title: ReactNode & string;
    initialOpen?: boolean;                  // default false
    onToggle?: (isOpen: boolean) => void;
}

Note that it extends and accepts all valid attributes for a div element. Any attribute not in the extended interface will be applied to the root div element. Furthermore this component is built upon a Material-UI accordion, and accepts relevant props. See Material-UI Accrodion API docs for more.

Accordion component

State

Install

import { Accordion } from '@tdcerhverv/accordion';

Usage

Simple usage:

<Accordion title={'Click here to toggle accordion'}>
    <p>Some paragraph or any valid React child element</p>
</Accordion>

Detailed usage:

const accordionItemProps = {
    title: 'Lorem Ipsum Dolor Sit',
    initialOpen: true,
    onToggle: myHandlerMethod,
    large: true,
    children: 'Some paragraph or any valid React child element',
    footer: 'Some text or any valid React element'
};

<Accordion {...props}/>

Putting children in props makes it easier ti iterate over items:

<div>
    {items.map(props => <Accordion {...props}/>)}
</div>

Example with the Accordion.Group:

<Accordion.Group>
    <Accordion {...props}/>
    <Accordion {...props}/>
    <Accordion {...props}/>
    ...even more accordions
</Accordion.Group>

Props

interface IAccordion extends HTMLAttributes<HTMLDivElement> {
    title: ReactNode & string;
    withMarker?: boolean;               // adds alternative styling for active state
    initialOpen?: boolean;                  // default false
    onToggle?: (isOpen: boolean) => void;
    large?: boolean;                        // default false
    footer?: ReactNode;
}

Note that it extends and accepts all valid attributes for a div element. Any attribute not in the extended interface will be applied to the root div element.

Tags

Readme

Keywords

none

Package Sidebar

Install

npm i @tdcerhverv/accordion

Weekly Downloads

2

Version

1.6.2

License

Apache-2.0

Unpacked Size

58.5 kB

Total Files

16

Last publish

Collaborators

  • antongb
  • dev_jonas
  • jeppebenjaminsen
  • ahhah
  • abdok
  • mikkv
  • clausr1990
  • tdc-sigbe
  • mdige
  • nuudaybot
  • tdc-olila
  • jeroen.dk.nl
  • renand
  • stegr
  • m84100
  • m92212
  • m87979
  • vertic
  • rasladev
  • muddz
  • tajsonik
  • linnt
  • molg