The collapsable Javascript plugin is the functional driving force behind panels in TorqueUI.
Using the collapsable Javascript plugin it is possible to click toggle elements. The plugin is build around 4 data attributes:
data-toggle="collapse" the initiator.data-group the toggle group for targets.data-target the toggle target for button.data-class the class to toggle (fallsback to .is-collapsed).Checkout the usage examples below.
It is easy to add Javascript functionality to a panel with the Javascript collapsable plugin included in the main Javascript file.
Bellow is a simple example where the visibility of the .panel-body and .panel-footer is toggled from the header.
<div class="panel panel-border">
    <div class="panel-heading">
        <button type="submit" class="button xsmall pull-right" data-toggle="collapse" data-target="panel"><i class="fa fa-circle"></i></button>
        <span class="h4">Log ind</span>
    </div>
    <div class="panel-body" data-group="panel">
        <label>Brugernavn:</label>
        <fieldset class="form-group">
            <input type="text" class="form-input">
        </fieldset>
        <label>Adgangskode</label>
        <fieldset class="form-group">
            <input type="text" class="form-input">
            <a href="...">Glemt adgangskode</a>
        </fieldset>
        <fieldset class="form-group">
            <div class="input-group">
                <span class="input-group-addon"><input id="lorem-short" type="checkbox"></span>
                <label for="lorem-short" class="form-label input-group-main">Husk log ind</label>
            </div>
        </fieldset>
    </div>
    <div class="panel-footer" data-group="panel">
        <button type="button" class="button-primary">Log ind</button>
    </div>
</div>It is possible to toggle the content outside the panel. The collapsable function lootes at the data-target and the data-group attributes and toggles corrosponding elements with the same id. The id needs to be unique from group to group. But you can have a button toggle multiple elements as long as they have the same data-group. It also works the other way around. With multiple buttons toggleing the same group
Toggleable panel 1
Toggleable panel 2
<button type="submit" class="button" data-toggle="collapse" data-target="group-1">Toggle panel 1</button>
<button type="submit" class="button" data-toggle="collapse" data-target="group-2">Toggle panel 2</button>
<button type="submit" class="button" data-toggle="collapse" data-target="group-1">Toggle panel 1 again</button>
<hr>
<div class="panel panel-border"  data-group="group-1">
    <div class="panel-body">
        <p>Toggleable panel <strong>1</strong></p>
    </div>
</div>
<hr>
 <div class="panel panel-border"  data-group="group-2">
    <div class="panel-body">
        <p>Toggleable panel <strong>2</strong></p>
    </div>
</div>When the panel is toggled, the Javascript plugin will check if it is started by a button. And it will toggle the .is-closed class on the button. This is also used to make it able to toggle the fontawesome icon inside the element. The element with class .icon-open will be shown when the element is collapsed. And the class .icon-close will be show when the panel is open.
Toggleable panel 1
Toggleable panel 2
<button type="submit" class="button" data-toggle="collapse" data-target="group-1"><i class="fa fa-circle icon-close"></i><i class="fa fa-circle-o icon-open"></i></button>
<hr>
<div class="panel panel-border"  data-group="group-1">
    <div class="panel-body">
        <p>Toggleable panel <strong>1</strong></p>
    </div>
</div>
<hr>
<div class="panel panel-border">
    <div class="panel-heading">
        <button type="submit" class="button pull-right" data-toggle="collapse" data-target="panel-5"><i class="fa fa-angle-double-up icon-close"></i><i class="fa fa-angle-double-down icon-open"></i></button>
        <span class="h1">Header for example</span>
    </div>
    <div class="panel-body" data-group="group-2">
    <p>Toggleable panel 2</p>
    </div>
    <div class="panel-footer" data-group="group-2">
        Footer for example
    </div>
</div>