1
YUI.add('morelinks', function (Y, NAME) {
5
* Module to hide more than "n" list items and provide a link to show
6
* and hide the hidden lis.
8
* Text for the link can be passed in to facilitate i10n when we get to that.
12
var namespace = Y.namespace('MoreLinks'),
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");
21
elms.each(function(elm){
22
var elmId = elm.generateID(), lis = elm.all("li"), collapsibleElms, firstItem;
24
collapsibleElms = lis.slice(maxLinks);
25
if (collapsibleElms && collapsibleElms.size && collapsibleElms.size() > 1){
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;
35
if (link.getContent().indexOf(moreText) > -1){
36
link.setContent(lessText);
38
link.setContent(moreText);
40
link.get("parentNode").toggleClass("less");
41
Y.all("#" + elmId + " .collapsible").each(function(liElm){
42
liElm.toggleClass("hidden");
44
// Toggle a redraw for IE8
46
li.get("parentNode").toggleClass("redraw");
51
li.addClass("hidden");
52
li.addClass("collapsible");
60
}, '@VERSION@', {"requires": ["node-base", "node-event-delegate", "node-pluginhost", "node-screen", "node-style"]});