Skip to content

bornfight/b-accordion

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

69 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Bornfight

b-accordion [all b- libs]

Bornfight frontend lib for accordion type interactions/elements

GitHub package.json version GitHub package.json dynamic GitHub issues GitHub

πŸ“¦ Getting Started

Dependency: gsap

  • install b-accordion trough npm or pull ti from git
npm i @bornfight/b-accordion
  • include b-accordion to your JS and SCSS after running npm install

πŸ”¨οΈ Usage

JS

import Accordion from "@bornfight/b-accordion";
Basic
new Accordion();
Advanced
new Accordion(".js-accordion", {
    openDuration: 0.5,
    openDelay: 0,
    openingEase: "bounce.out",
    closeDuration: 0.3,
    closeDelay: 0,
    closingEase: "bounce.in",
    onCloseStart: (header, content) => {
        console.log("close start", header, content);
    },
    onCloseComplete: (header, content) => {
        console.log("close complete", header, content);
    },
    onOpenStart: (header, content) => {
        console.log("open start", header, content);
    },
    onOpenComplete: (header, content) => {
        console.log("open complete", header, content);
    },
});
SCSS
@import "~@bornfight/b-accordion/src/scss/style.scss";
  • scss import is not mandatory but following code must be included
.js-accordion-panel {
    backface-visibility: hidden;
    overflow: hidden;
    height: 0;
}
HTML markup

Mono accordion with single item header as hit area (only one item can be active and only item header will trigger open/close). Main wrapper "js-accordion" need to have "is-mono" class

<div class="js-accordion is-mono">
    <div class="js-accordion-single">
        <div class="js-accordion-header">
            <p>
                Accordion header title 1
            </p>
        </div>
        <div class="js-accordion-panel">
            <!-- CONTENT -->
            ...
        </div>
    </div>

    <div class="js-accordion-single">
        <div class="js-accordion-header">
            <p>
                Accordion header title 2
            </p>
        </div>
        <div class="js-accordion-panel">
            <!-- CONTENT -->
            ...
        </div>
    </div>
</div>

Single item header as hit area (only header will trigger open/close)

<div class="js-accordion">
    <div class="js-accordion-single">
        <div class="js-accordion-header">
            <p>
                Accordion header title 1
            </p>
        </div>
        <div class="js-accordion-panel">
            <!-- CONTENT -->
            ...
        </div>
    </div>

    <div class="js-accordion-single">
        <div class="js-accordion-header">
            <p>
                Accordion header title 2
            </p>
        </div>
        <div class="js-accordion-panel">
            <!-- CONTENT -->
            ...
        </div>
    </div>
</div>
  • Single item full body as hit area (item can be opened and closed wherever you click)
<div class="js-accordion">
    <div class="js-accordion-single js-accordion-header">
        <div>
            <p>
                Accordion header title 1
            </p>
        </div>
        <div class="js-accordion-panel">
            <!-- CONTENT -->
            ...
        </div>
    </div>

    <div class="js-accordion-single js-accordion-header">
        <div>
            <p>
                Accordion header title 2
            </p>
        </div>
        <div class="js-accordion-panel">
            <!-- CONTENT -->
            ...
        </div>
    </div>
</div>

Options

Option Type Default Example Note
jsClass string '.js-accordion' '.my-accordion'
openingEase string 'power4.out' 'expo.out' GSAP easing
closingEase string 'power4.in' 'expo.in' GSAP easing
openDuration number 0.5 0.2 seconds
closeDuration number 0.3 1 seconds
openDelay number 0 0.2 seconds
closeDelay number 0 0.2 seconds
onOpenStart method (header, content) => {} returns header and content of current item (header, content)
onCloseStart method (header, content) => {} returns header and content of current item (header, content)
onOpenComplete method (header, content) => {} returns header and content of current item (header, content)
onCloseComplete method (header, content) => {} returns header and content of current item (header, content)

πŸ’Ž Customization

  • use your imagination

πŸš€ Useful to know

  1. any element inside js-accordion-single can be trigger for open/close. It just needs to have js-accordion-header class
  2. only one element inside js-accordion-single can have js-accordion-header class

πŸ“¦ Contribute

Gulp based system

npm run dev - dev environent with browsersync

License

MIT Β© Bornfight

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •