From 2ba3903b23ef41e3a0b08579f23bb38405b96ab6 Mon Sep 17 00:00:00 2001 From: Mark Lentczner Date: Tue, 17 Aug 2010 18:19:52 +0000 Subject: clean up collapser logics javascript code for collapasble sections cleaned up rewrote class utilities in javascript to be more robust refactored utilities for generating collapsable sections made toc be same color as synopsis module list has needed clear attribute in CSS --- html/Ocean.std-theme/ocean.css | 46 +++++++++++------------------- html/haddock-util.js | 64 +++++++++++++++++++++++++++++++----------- 2 files changed, 65 insertions(+), 45 deletions(-) (limited to 'html') diff --git a/html/Ocean.std-theme/ocean.css b/html/Ocean.std-theme/ocean.css index 74cb1b1b..0baa1443 100644 --- a/html/Ocean.std-theme/ocean.css +++ b/html/Ocean.std-theme/ocean.css @@ -281,8 +281,8 @@ div#style-menu-holder { #table-of-contents { float: right; clear: right; - background: rgb(239,238,209); - border: 1px solid rgba(196,69,29,0.2); + background: #f9f8db; + border: 1px solid #d8d7ad; padding: 0.5em 1em; position: relative; top: 0em; @@ -317,7 +317,6 @@ div#style-menu-holder { } #synopsis .caption { - text-align: right; float: left; width: 29px; color: rgba(255,255,255,0); @@ -328,23 +327,14 @@ div#style-menu-holder { } #synopsis p.caption.collapser { - background: url(synopsis.png) no-repeat 0 -8px; -} - -#synopsis p.caption.expander { background: url(synopsis.png) no-repeat -64px -8px; } -#synopsis ul, -#synopsis ul li.src { - background-color: #f9f8db; - white-space: nowrap; +#synopsis p.caption.expander { + background: url(synopsis.png) no-repeat 0px -8px; } -#synopsis ul.collapser, -#synopsis ul.expander { - background-image: none; - list-style: none; +#synopsis ul { height: 100%; overflow: auto; padding: 0.5em; @@ -355,6 +345,14 @@ div#style-menu-holder { overflow: hidden; } +#synopsis ul, +#synopsis ul li.src { + background-color: #f9f8db; + white-space: nowrap; + list-style: none; + margin-left: 0; +} + /* @end */ /* @group Main Content */ @@ -418,25 +416,11 @@ div#style-menu-holder { border-top: 1px solid #ccc; } -/* @group Left Margin */ - .subs, .doc { /* use this selector for one level of indent */ padding-left: 2em; } -/* use these two for two levels of indent */ -/* -#description .doc, #interface div.top { - padding-left: 1.25em; -} - -div.top .subs, div.top .doc { - padding-left: 1.875em; -} -*/ -/* @end */ - .arguments { margin-top: -0.4em; } @@ -530,6 +514,10 @@ div.top .subs, div.top .doc { margin: 0 0 0 2em; } +#module-list li { + clear: right; +} + #module-list .package { float: right; } diff --git a/html/haddock-util.js b/html/haddock-util.js index c5bc6a8d..e9e4f64d 100644 --- a/html/haddock-util.js +++ b/html/haddock-util.js @@ -1,26 +1,58 @@ // Haddock JavaScript utilities -function makeClassToggle(cOn, cOff) +var rspace = /\s\s+/g, + rtrim = /^\s+|\s+$/g; + +function spaced(s) { return (" " + s + " ").replace(rspace, " "); } +function trim(s) { return s.replace(rtrim, ""); } + +function hasClass(elem, value) { + var className = spaced(elem.className || ""); + return className.indexOf( " " + value + " " ) >= 0; +} + +function addClass(elem, value) { + var className = spaced(elem.className || ""); + if ( className.indexOf( " " + value + " " ) < 0 ) { + elem.className = trim(className + " " + value); + } +} + +function removeClass(elem, value) { + var className = spaced(elem.className || ""); + className = className.replace(" " + value + " ", " "); + elem.className = trim(className); +} + +function toggleClass(elem, valueOn, valueOff, bool) { + if (bool == null) { bool = ! hasClass(elem, valueOn); } + if (bool) { + removeClass(elem, valueOff); + addClass(elem, valueOn); + } + else { + removeClass(elem, valueOn); + addClass(elem, valueOff); + } + return bool; +} + + +function makeClassToggle(valueOn, valueOff) { - var rOn = new RegExp('\\b'+cOn+'\\b'); - var rOff = new RegExp('\\b'+cOff+'\\b'); - - return function(e, a) { - var c = e.className; - if (a == null) { a = rOff.test(c); } - if (a) { c = c.replace(rOff, cOn); } - else { c = c.replace(rOn, cOff); } - e.className = c; + return function(elem, bool) { + return toggleClass(elem, valueOn, valueOff, bool); } } -toggleClassShow = makeClassToggle("show", "hide"); -toggleClassCollapser = makeClassToggle("collapser", "expander"); +toggleShow = makeClassToggle("show", "hide"); +toggleCollapser = makeClassToggle("collapser", "expander"); -function toggleSection(toggler,id) +function toggleSection(id) { - toggleClassShow(document.getElementById(id)) - toggleClassCollapser(toggler); + var b = toggleShow(document.getElementById("section." + id)) + toggleCollapser(document.getElementById("control." + id), b) + return b; } @@ -244,7 +276,7 @@ function resetStyle() { function styleMenu(show) { var m = document.getElementById('style-menu'); - toggleClassShow(m, show); + if (m) toggleClassShow(m, show); } -- cgit v1.2.3