Lego Toggle Documentation

To install the module run: npm install --save lego-toggle

To use the toggle library, import like so:

import * as toggle from 'lego-toggle';

The first argument of each constructor is a HTMLElement, the second is an object of settings.

A Panel requires the group option to be populated with an instance of Group. A Trigger requires the panel options to be populated with an instance of Panel.

Group

Options

state [optional]

String, default: ‘active’ The class that will be applied to the active panel and that panels triggers

let group = new toggle.Group({
    state: 'open'
});

afterStateChange [optional]

String, default: null A callback method that will be invoked after a state change.

let group = new toggle.Group({
    afterStateChange: function(group, active, activePanel) {
        if (active) {
            // add logic here...
        }
    }
});

Methods

removeActivatePanel()

Turns all panels associated with this group to false.

setActivePanel(activePanel)

let group = new toggle.Group();
let panel = new toggle.Panel(someElement, { group });

group.setActivePanel(panel);

setOptions(options)

group.setOptions({
    state: 'new-state',
    someRandomData: { foo: 'bar' }
});

Panel

Options

group [required]

Group instance, default: null The group that this panel belongs to.

canTurnSelfOff [optional]

Boolean, default: true If false, a panel can only be turned off by another panel being turned on. Disabling this option is helpful for things like tabs and carousels.

let group = new toggle.Group();

let panel = new toggle.Panel(someElement, {
    group,
    canTurnSelfOff: false
});

panel.setState(true);
panel.setState(false);

group.activePanel === panel; // true

Methods

setOptions(options)

let group = new toggle.Group();
let panel = new toggle.Panel(someElement, { group });

panel.setOptions({
    myIndex: 12
});

panel.opts.myIndex === 12; // true	

setState(active)

let group = new toggle.Group();
let panel1 = new toggle.Panel(someElement, { group });
let panel2 = new toggle.Panel(someOtherElement, { group });

panel2.setState(true);

group.activePanel === panel1; // false
group.activePanel === panel2; // true

panel1.setState(true);

group.activePanel === panel1; // true
group.activePanel === panel2; // false

panel1.setState(false);

group.activePanel === panel1; // false
group.activePanel === panel2; // false
group.activePanel == null; // true

Trigger

Options

panel [required]

Panel instance, default: null The panel that this trigger belongs to.

activeEvent [optional]

String, default: ‘click’ The event attached to the trigger that sets the panel to active.

inactiveEvent [optional]

String, default: ‘click’ The event attached to the trigger that sets the panel to inactive.

let trigger = new toggle.Trigger(someElement, {
    panel: panelInstance,
    activeEvent: 'click',
    inactiveEvent: 'mouseleave'
});

Methods

detach()

Disassociates trigger with it’s panel.

destroy()

Removes trigger element from the DOM.