Table of contents

Collapse

Easy creating collapsible elements with special role.

About

Quite often you have to create elements that collapse at the user's request. For example, any collapsible panels. In Metro 4 you can transform any element to collapsible. Element must have display: block css property. To create collapse element you can add role data-role="collapse" and define toggle for it with attribute data-toggle-element="...". In contrast to the dropdown, the collapsible elements can be a lot open at the same time.

In Metro 4 you can transform any element to collapsible.


                    <button class="button" id="collapse_toggle_1">Collapse block</button>
                    <div class="pos-relative">
                        <div class="bg-red fg-white"
                                data-role="collapse"
                                data-toggle-element="#collapse_toggle_1">
                            <p class="p-10 text-center">
                                In Metro 4 you can transform any element to collapsible.
                            </p>
                        </div>
                    </div>
                

By default, the collapsible element is open. If you need to create an element with collapsing state at start, add attribute data-collapsed="true".

In Metro 4 you can transform any element to collapsible.


                    <button class="button" id="collapse_toggle_2">Collapse block</button>
                    <div class="pos-relative">
                        <div class="bg-red fg-white" data-role="collapse"
                             data-toggle-element="#collapse_toggle_2" data-collapsed="true">
                            <p class="p-10 text-center">
                                In Metro 4 you can transform any element to collapsible.
                            </p>
                        </div>
                    </div>
                

Options

Each dropdown element has a number of option:

Option Data-* Default Desc
collapsed data-collapsed false Initial state for element. Values: true, false
effect data-effect slide Show/Close effect. Values: slide, fade
toggleElement data-toggle-element null Selector who specified toggle element
duration data-duration 300 Effect duration in milliseconds
onExpand data-on-drop Metro.noop Event fired when element dropped
onCollapse data-on-up Metro.noop Event fired when element close
onCollapseCreate data-on-dropdown-create Metro.noop Event fired when element created

Methods

Each collapse component has next methods: collapse(), expand(), isCollapsed(). You can use this methods to interact with component.


                    el = $('#el').data('collapse');
                    var collapsed = el.isCollapsed();
                    var f1 = collapsed === true ? "expand" : "collapse";
                    var f2 = collapsed === true ? "collapse" : "expand";
                    el[f1]();
                    setTimeout(function(){
                        el[f2]();
                    }, 2000);
                

You can change attribute data-collapsed at runtime to change element state.