mirror of https://github.com/abpframework/abp.git
14 changed files with 541 additions and 172 deletions
@ -0,0 +1,60 @@ |
|||||
|
/*! |
||||
|
* Bootstrap Table of Contents v1.0.0 (http://afeld.github.io/bootstrap-toc/) |
||||
|
* Copyright 2015 Aidan Feldman |
||||
|
* Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */ |
||||
|
|
||||
|
/* modified from https://github.com/twbs/bootstrap/blob/94b4076dd2efba9af71f0b18d4ee4b163aa9e0dd/docs/assets/css/src/docs.css#L548-L601 */ |
||||
|
|
||||
|
/* All levels of nav */ |
||||
|
nav[data-toggle='toc'] .nav > li > a { |
||||
|
display: block; |
||||
|
padding: 4px 20px; |
||||
|
font-size: 13px; |
||||
|
font-weight: 500; |
||||
|
color: #767676; |
||||
|
} |
||||
|
nav[data-toggle='toc'] .nav > li > a:hover, |
||||
|
nav[data-toggle='toc'] .nav > li > a:focus { |
||||
|
padding-left: 19px; |
||||
|
color: #563d7c; |
||||
|
text-decoration: none; |
||||
|
background-color: transparent; |
||||
|
border-left: 1px solid #563d7c; |
||||
|
} |
||||
|
nav[data-toggle='toc'] .nav-link.active, |
||||
|
nav[data-toggle='toc'] .nav-link.active:hover, |
||||
|
nav[data-toggle='toc'] .nav-link.active:focus { |
||||
|
padding-left: 18px; |
||||
|
font-weight: bold; |
||||
|
color: #563d7c; |
||||
|
background-color: transparent; |
||||
|
border-left: 2px solid #563d7c; |
||||
|
} |
||||
|
|
||||
|
/* Nav: second level (shown on .active) */ |
||||
|
nav[data-toggle='toc'] .nav-link + ul { |
||||
|
display: none; /* Hide by default, but at >768px, show it */ |
||||
|
padding-bottom: 10px; |
||||
|
} |
||||
|
|
||||
|
nav[data-toggle='toc'] .nav .nav > li > a { |
||||
|
padding-top: 1px; |
||||
|
padding-bottom: 1px; |
||||
|
padding-left: 30px; |
||||
|
font-size: 12px; |
||||
|
font-weight: normal; |
||||
|
} |
||||
|
nav[data-toggle='toc'] .nav .nav > li > a:hover, |
||||
|
nav[data-toggle='toc'] .nav .nav > li > a:focus { |
||||
|
padding-left: 29px; |
||||
|
} |
||||
|
nav[data-toggle='toc'] .nav .nav > li > .active, |
||||
|
nav[data-toggle='toc'] .nav .nav > li > .active:hover, |
||||
|
nav[data-toggle='toc'] .nav .nav > li > .active:focus { |
||||
|
padding-left: 28px; |
||||
|
font-weight: 500; |
||||
|
} |
||||
|
|
||||
|
nav[data-toggle='toc'] .nav-link.active + ul { |
||||
|
display: block; |
||||
|
} |
||||
@ -0,0 +1,159 @@ |
|||||
|
/*! |
||||
|
* Bootstrap Table of Contents v1.0.0 (http://afeld.github.io/bootstrap-toc/)
|
||||
|
* Copyright 2015 Aidan Feldman |
||||
|
* Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */
|
||||
|
(function($) { |
||||
|
'use strict'; |
||||
|
|
||||
|
window.Toc = { |
||||
|
helpers: { |
||||
|
// return all matching elements in the set, or their descendants
|
||||
|
findOrFilter: function($el, selector) { |
||||
|
// http://danielnouri.org/notes/2011/03/14/a-jquery-find-that-also-finds-the-root-element/
|
||||
|
// http://stackoverflow.com/a/12731439/358804
|
||||
|
var $descendants = $el.find(selector); |
||||
|
return $el.filter(selector).add($descendants).filter(':not([data-toc-skip])'); |
||||
|
}, |
||||
|
|
||||
|
generateUniqueIdBase: function(el) { |
||||
|
var text = $(el).text(); |
||||
|
var anchor = text.trim().toLowerCase().replace(/[^A-Za-z0-9]+/g, '-'); |
||||
|
return anchor || el.tagName.toLowerCase(); |
||||
|
}, |
||||
|
|
||||
|
generateUniqueId: function(el) { |
||||
|
var anchorBase = this.generateUniqueIdBase(el); |
||||
|
for (var i = 0; ; i++) { |
||||
|
var anchor = anchorBase; |
||||
|
if (i > 0) { |
||||
|
// add suffix
|
||||
|
anchor += '-' + i; |
||||
|
} |
||||
|
// check if ID already exists
|
||||
|
if (!document.getElementById(anchor)) { |
||||
|
return anchor; |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
generateAnchor: function(el) { |
||||
|
if (el.id) { |
||||
|
return el.id; |
||||
|
} else { |
||||
|
var anchor = this.generateUniqueId(el); |
||||
|
el.id = anchor; |
||||
|
return anchor; |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
createNavList: function() { |
||||
|
return $('<ul class="nav navbar-nav"></ul>'); |
||||
|
}, |
||||
|
|
||||
|
createChildNavList: function($parent) { |
||||
|
var $childList = this.createNavList(); |
||||
|
$parent.append($childList); |
||||
|
return $childList; |
||||
|
}, |
||||
|
|
||||
|
generateNavEl: function(anchor, text) { |
||||
|
var $a = $('<a class="nav-link"></a>'); |
||||
|
$a.attr('href', '#' + anchor); |
||||
|
$a.text(text); |
||||
|
var $li = $('<li></li>'); |
||||
|
$li.append($a); |
||||
|
return $li; |
||||
|
}, |
||||
|
|
||||
|
generateNavItem: function(headingEl) { |
||||
|
var anchor = this.generateAnchor(headingEl); |
||||
|
var $heading = $(headingEl); |
||||
|
var text = $heading.data('toc-text') || $heading.text(); |
||||
|
return this.generateNavEl(anchor, text); |
||||
|
}, |
||||
|
|
||||
|
// Find the first heading level (`<h1>`, then `<h2>`, etc.) that has more than one element. Defaults to 1 (for `<h1>`).
|
||||
|
getTopLevel: function($scope) { |
||||
|
for (var i = 1; i <= 6; i++) { |
||||
|
var $headings = this.findOrFilter($scope, 'h' + i); |
||||
|
if ($headings.length > 1) { |
||||
|
return i; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return 1; |
||||
|
}, |
||||
|
|
||||
|
// returns the elements for the top level, and the next below it
|
||||
|
getHeadings: function($scope, topLevel) { |
||||
|
var topSelector = 'h' + topLevel; |
||||
|
|
||||
|
var secondaryLevel = topLevel + 1; |
||||
|
var secondarySelector = 'h' + secondaryLevel; |
||||
|
|
||||
|
return this.findOrFilter($scope, topSelector + ',' + secondarySelector); |
||||
|
}, |
||||
|
|
||||
|
getNavLevel: function(el) { |
||||
|
return parseInt(el.tagName.charAt(1), 10); |
||||
|
}, |
||||
|
|
||||
|
populateNav: function($topContext, topLevel, $headings) { |
||||
|
var $context = $topContext; |
||||
|
var $prevNav; |
||||
|
|
||||
|
var helpers = this; |
||||
|
$headings.each(function(i, el) { |
||||
|
var $newNav = helpers.generateNavItem(el); |
||||
|
var navLevel = helpers.getNavLevel(el); |
||||
|
|
||||
|
// determine the proper $context
|
||||
|
if (navLevel === topLevel) { |
||||
|
// use top level
|
||||
|
$context = $topContext; |
||||
|
} else if ($prevNav && $context === $topContext) { |
||||
|
// create a new level of the tree and switch to it
|
||||
|
$context = helpers.createChildNavList($prevNav); |
||||
|
} // else use the current $context
|
||||
|
|
||||
|
$context.append($newNav); |
||||
|
|
||||
|
$prevNav = $newNav; |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
parseOps: function(arg) { |
||||
|
var opts; |
||||
|
if (arg.jquery) { |
||||
|
opts = { |
||||
|
$nav: arg |
||||
|
}; |
||||
|
} else { |
||||
|
opts = arg; |
||||
|
} |
||||
|
opts.$scope = opts.$scope || $(document.body); |
||||
|
return opts; |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
// accepts a jQuery object, or an options object
|
||||
|
init: function(opts) { |
||||
|
opts = this.helpers.parseOps(opts); |
||||
|
|
||||
|
// ensure that the data attribute is in place for styling
|
||||
|
opts.$nav.attr('data-toggle', 'toc'); |
||||
|
|
||||
|
var $topContext = this.helpers.createChildNavList(opts.$nav); |
||||
|
var topLevel = this.helpers.getTopLevel(opts.$scope); |
||||
|
var $headings = this.helpers.getHeadings(opts.$scope, topLevel); |
||||
|
this.helpers.populateNav($topContext, topLevel, $headings); |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
$(function() { |
||||
|
$('nav[data-toggle="toc"]').each(function(i, el) { |
||||
|
var $nav = $(el); |
||||
|
Toc.init($nav); |
||||
|
}); |
||||
|
}); |
||||
|
})(jQuery); |
||||
@ -0,0 +1,4 @@ |
|||||
|
/*! |
||||
|
* Bootstrap Table of Contents v1.0.0 (http://afeld.github.io/bootstrap-toc/) |
||||
|
* Copyright 2015 Aidan Feldman |
||||
|
* Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */nav[data-toggle=toc] .nav>li>a{display:block;padding:4px 20px;font-size:13px;font-weight:500;color:#767676}nav[data-toggle=toc] .nav>li>a:focus,nav[data-toggle=toc] .nav>li>a:hover{padding-left:19px;color:#563d7c;text-decoration:none;background-color:transparent;border-left:1px solid #563d7c}nav[data-toggle=toc] .nav-link.active,nav[data-toggle=toc] .nav-link.active:focus,nav[data-toggle=toc] .nav-link.active:hover{padding-left:18px;font-weight:700;color:#563d7c;background-color:transparent;border-left:2px solid #563d7c}nav[data-toggle=toc] .nav-link+ul{display:none;padding-bottom:10px}nav[data-toggle=toc] .nav .nav>li>a{padding-top:1px;padding-bottom:1px;padding-left:30px;font-size:12px;font-weight:400}nav[data-toggle=toc] .nav .nav>li>a:focus,nav[data-toggle=toc] .nav .nav>li>a:hover{padding-left:29px}nav[data-toggle=toc] .nav .nav>li>.active,nav[data-toggle=toc] .nav .nav>li>.active:focus,nav[data-toggle=toc] .nav .nav>li>.active:hover{padding-left:28px;font-weight:500}nav[data-toggle=toc] .nav-link.active+ul{display:block} |
||||
@ -0,0 +1,5 @@ |
|||||
|
/*! |
||||
|
* Bootstrap Table of Contents v1.0.0 (http://afeld.github.io/bootstrap-toc/)
|
||||
|
* Copyright 2015 Aidan Feldman |
||||
|
* Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */
|
||||
|
!function(e){"use strict";window.Toc={helpers:{findOrFilter:function(e,t){var n=e.find(t);return e.filter(t).add(n).filter(":not([data-toc-skip])")},generateUniqueIdBase:function(t){var n=e(t).text(),r=n.trim().toLowerCase().replace(/[^A-Za-z0-9]+/g,"-");return r||t.tagName.toLowerCase()},generateUniqueId:function(e){for(var t=this.generateUniqueIdBase(e),n=0;;n++){var r=t;if(n>0&&(r+="-"+n),!document.getElementById(r))return r}},generateAnchor:function(e){if(e.id)return e.id;var t=this.generateUniqueId(e);return e.id=t,t},createNavList:function(){return e('<ul class="nav navbar-nav"></ul>')},createChildNavList:function(e){var t=this.createNavList();return e.append(t),t},generateNavEl:function(t,n){var r=e('<a class="nav-link"></a>');r.attr("href","#"+t),r.text(n);var a=e("<li></li>");return a.append(r),a},generateNavItem:function(t){var n=this.generateAnchor(t),r=e(t),a=r.data("toc-text")||r.text();return this.generateNavEl(n,a)},getTopLevel:function(e){for(var t=1;t<=6;t++){var n=this.findOrFilter(e,"h"+t);if(n.length>1)return t}return 1},getHeadings:function(e,t){var n="h"+t,r=t+1,a="h"+r;return this.findOrFilter(e,n+","+a)},getNavLevel:function(e){return parseInt(e.tagName.charAt(1),10)},populateNav:function(e,t,n){var r,a=e,i=this;n.each(function(n,o){var s=i.generateNavItem(o),u=i.getNavLevel(o);u===t?a=e:r&&a===e&&(a=i.createChildNavList(r)),a.append(s),r=s})},parseOps:function(t){var n;return n=t.jquery?{$nav:t}:t,n.$scope=n.$scope||e(document.body),n}},init:function(e){e=this.helpers.parseOps(e),e.$nav.attr("data-toggle","toc");var t=this.helpers.createChildNavList(e.$nav),n=this.helpers.getTopLevel(e.$scope),r=this.helpers.getHeadings(e.$scope,n);this.helpers.populateNav(t,n,r)}},e(function(){e('nav[data-toggle="toc"]').each(function(t,n){var r=e(n);Toc.init(r)})})}(jQuery); |
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in new issue