~jonas-drange/online-services-common-js/navbar-autocomplete

« back to all changes in this revision

Viewing changes to build/morelinks/morelinks.js

  • Committer: Stephen Stewart
  • Date: 2014-02-22 23:57:25 UTC
  • mfrom: (18.1.2 trunk)
  • Revision ID: stephen.stewart@canonical.com-20140222235725-iw6f15t9umws19xd
mergeĀ lp:~stephen-stewart/online-services-common-js/remove-u1

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
YUI.add('morelinks', function (Y, NAME) {
2
 
 
3
 
"use strict";
4
 
/**
5
 
 * Module to hide more than "n" list items and provide a link to show
6
 
 * and hide the hidden lis.
7
 
 *
8
 
 * Text for the link can be passed in to facilitate i10n when we get to that.
9
 
 *
10
 
 */
11
 
 
12
 
var namespace = Y.namespace('MoreLinks'),
13
 
    elms;
14
 
 
15
 
    namespace.init = function(selector, maxLinks, lessText, moreText) {
16
 
    elms = Y.all(selector);
17
 
    maxLinks = maxLinks || 3;
18
 
    moreText = (moreText || "More");
19
 
    lessText = (lessText || "Less");
20
 
 
21
 
    elms.each(function(elm){
22
 
        var elmId = elm.generateID(), lis = elm.all("li"), collapsibleElms, firstItem;
23
 
        if (lis){
24
 
            collapsibleElms = lis.slice(maxLinks);
25
 
            if (collapsibleElms && collapsibleElms.size && collapsibleElms.size() > 1){
26
 
                firstItem = true;
27
 
                collapsibleElms.each(function(li){
28
 
                    if (firstItem === true) {
29
 
                        var liMore = Y.Node.create("<li class='more'><a href='#'>" + moreText + "</a></li>");
30
 
                        li.insert(liMore, 'before');
31
 
                        Y.on("click", function(e){
32
 
                            var link = e.currentTarget;
33
 
                            e.preventDefault();
34
 
                            e.stopPropagation();
35
 
                            if (link.getContent().indexOf(moreText) > -1){
36
 
                                link.setContent(lessText);
37
 
                            } else {
38
 
                                link.setContent(moreText);
39
 
                            }
40
 
                            link.get("parentNode").toggleClass("less");
41
 
                            Y.all("#" + elmId + " .collapsible").each(function(liElm){
42
 
                                liElm.toggleClass("hidden");
43
 
                            });
44
 
                            // Toggle a redraw for IE8
45
 
                            if (Y.UA.ie === 8) {
46
 
                                li.get("parentNode").toggleClass("redraw");
47
 
                            }
48
 
                        }, liMore.one("a"));
49
 
                        firstItem = false;
50
 
                    }
51
 
                    li.addClass("hidden");
52
 
                    li.addClass("collapsible");
53
 
                });
54
 
            }
55
 
        }
56
 
    });
57
 
};
58
 
 
59
 
 
60
 
}, '@VERSION@', {"requires": ["node-base", "node-event-delegate", "node-pluginhost", "node-screen", "node-style"]});