* Allow user to fold sidebar blocks\r
*/\r
define([\r
- "jquery"\r
+ 'jquery',\r
+ 'jQueryUI'\r
], function($) {\r
+ $.widget("nitdoc.folding", {\r
\r
- var Folding = {\r
- enable: function(containerSelector) {\r
- var container = $(containerSelector);\r
- var foldLink = $(document.createElement("a"))\r
- .addClass("nitdoc-ui-fold")\r
- .html("-");\r
+ options: {\r
+ foldText: "-",\r
+ unfoldText: "+",\r
+ linkHolder: "h3",\r
+ linkClass: "nitdoc-ui-fold",\r
+ linkCSS: {\r
+ "cursor": "pointer"\r
+ }\r
+ },\r
\r
- container.find("nav h3")\r
- .prepend(foldLink)\r
- .css("cursor", "pointer")\r
+ _create: function() {\r
+ this._foldLink = $("<a/>")\r
+ .addClass(this.options.linkClass)\r
+ .text(this.options.foldText);\r
+\r
+ this.element.find(this.options.linkHolder)\r
+ .prepend(this._foldLink)\r
+ .css(this.options.linkCSS)\r
.toggle(\r
- function() {\r
- $(this).find("a.nitdoc-ui-fold").html("+");\r
- $(this).nextAll().toggle();\r
- },\r
- function() {\r
- $(this).find("a.nitdoc-ui-fold").html("-");\r
- $(this).nextAll().toggle();\r
- }\r
+ $.proxy(this._fold, this),\r
+ $.proxy(this._unfold, this)\r
);\r
- }\r
- };\r
+ },\r
\r
- Folding.enable(".sidebar");\r
+ _fold: function(event) {\r
+ this._foldLink.text(this.options.unfoldText);\r
+ this.element.find(this.options.linkHolder).nextAll().toggle();\r
+ },\r
+\r
+ _unfold: function() {\r
+ this._foldLink.text(this.options.foldText);\r
+ this.element.find(this.options.linkHolder).nextAll().toggle();\r
+ }\r
+ });\r
\r
- return Folding;\r
+ $(".sidebar nav").folding();\r
});\r