From 38badd12a6fb5acdae6fe4a82eee7c206c55f13d Mon Sep 17 00:00:00 2001 From: Aidan Feldman Date: Tue, 8 Jan 2019 22:48:51 -0500 Subject: [PATCH] bump to v1.0.1 --- dist/bootstrap-toc.css | 30 +++++++++++------------ dist/bootstrap-toc.js | 49 +++++++++++++++++++++++++++----------- dist/bootstrap-toc.min.css | 2 +- dist/bootstrap-toc.min.js | 4 ++-- index.md | 4 ++-- package.json | 2 +- 6 files changed, 56 insertions(+), 35 deletions(-) diff --git a/dist/bootstrap-toc.css b/dist/bootstrap-toc.css index 99943aa..8c38fd7 100644 --- a/dist/bootstrap-toc.css +++ b/dist/bootstrap-toc.css @@ -1,29 +1,29 @@ /*! - * Bootstrap Table of Contents v1.0.0 (http://afeld.github.io/bootstrap-toc/) + * Bootstrap Table of Contents v1.0.1 (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 { +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 { +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 { +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; @@ -32,29 +32,29 @@ nav[data-toggle='toc'] .nav-link.active:focus { } /* Nav: second level (shown on .active) */ -nav[data-toggle='toc'] .nav-link + ul { +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 { +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 { +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 { +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 { +nav[data-toggle="toc"] .nav-link.active + ul { display: block; } diff --git a/dist/bootstrap-toc.js b/dist/bootstrap-toc.js index 790b25e..2ce99ad 100644 --- a/dist/bootstrap-toc.js +++ b/dist/bootstrap-toc.js @@ -1,9 +1,9 @@ /*! - * Bootstrap Table of Contents v1.0.0 (http://afeld.github.io/bootstrap-toc/) + * Bootstrap Table of Contents v1.0.1 (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'; + "use strict"; window.Toc = { helpers: { @@ -12,13 +12,34 @@ // 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])'); + 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(); + + // adapted from + // https://github.com/bryanbraun/anchorjs/blob/65fede08d0e4a705f72f1e7e6284f643d5ad3cf3/anchor.js#L237-L257 + + // Regex for finding the non-safe URL characters (many need escaping): & +$,:;=?@"#{}|^~[`%!'<>]./()*\ (newlines, tabs, backspace, & vertical tabs) + var nonsafeChars = /[& +$,:;=?@"#{}|^~[`%!'<>\]\.\/\(\)\*\\\n\t\b\v]/g, + urlText; + + // Note: we trim hyphens after truncating because truncating can cause dangling hyphens. + // Example string: // " ⚡⚡ Don't forget: URL fragments should be i18n-friendly, hyphenated, short, and clean." + urlText = text + .trim() // "⚡⚡ Don't forget: URL fragments should be i18n-friendly, hyphenated, short, and clean." + .replace(/\'/gi, "") // "⚡⚡ Dont forget: URL fragments should be i18n-friendly, hyphenated, short, and clean." + .replace(nonsafeChars, "-") // "⚡⚡-Dont-forget--URL-fragments-should-be-i18n-friendly--hyphenated--short--and-clean-" + .replace(/-{2,}/g, "-") // "⚡⚡-Dont-forget-URL-fragments-should-be-i18n-friendly-hyphenated-short-and-clean-" + .substring(0, 64) // "⚡⚡-Dont-forget-URL-fragments-should-be-i18n-friendly-hyphenated-" + .replace(/^-+|-+$/gm, "") // "⚡⚡-Dont-forget-URL-fragments-should-be-i18n-friendly-hyphenated" + .toLowerCase(); // "⚡⚡-dont-forget-url-fragments-should-be-i18n-friendly-hyphenated" + + return urlText || el.tagName.toLowerCase(); }, generateUniqueId: function(el) { @@ -27,7 +48,7 @@ var anchor = anchorBase; if (i > 0) { // add suffix - anchor += '-' + i; + anchor += "-" + i; } // check if ID already exists if (!document.getElementById(anchor)) { @@ -58,9 +79,9 @@ generateNavEl: function(anchor, text) { var $a = $(''); - $a.attr('href', '#' + anchor); + $a.attr("href", "#" + anchor); $a.text(text); - var $li = $('
  • '); + var $li = $("
  • "); $li.append($a); return $li; }, @@ -68,14 +89,14 @@ generateNavItem: function(headingEl) { var anchor = this.generateAnchor(headingEl); var $heading = $(headingEl); - var text = $heading.data('toc-text') || $heading.text(); + var text = $heading.data("toc-text") || $heading.text(); return this.generateNavEl(anchor, text); }, // Find the first heading level (`

    `, then `

    `, etc.) that has more than one element. Defaults to 1 (for `

    `). getTopLevel: function($scope) { for (var i = 1; i <= 6; i++) { - var $headings = this.findOrFilter($scope, 'h' + i); + var $headings = this.findOrFilter($scope, "h" + i); if ($headings.length > 1) { return i; } @@ -86,12 +107,12 @@ // returns the elements for the top level, and the next below it getHeadings: function($scope, topLevel) { - var topSelector = 'h' + topLevel; + var topSelector = "h" + topLevel; var secondaryLevel = topLevel + 1; - var secondarySelector = 'h' + secondaryLevel; + var secondarySelector = "h" + secondaryLevel; - return this.findOrFilter($scope, topSelector + ',' + secondarySelector); + return this.findOrFilter($scope, topSelector + "," + secondarySelector); }, getNavLevel: function(el) { @@ -141,7 +162,7 @@ opts = this.helpers.parseOps(opts); // ensure that the data attribute is in place for styling - opts.$nav.attr('data-toggle', 'toc'); + opts.$nav.attr("data-toggle", "toc"); var $topContext = this.helpers.createChildNavList(opts.$nav); var topLevel = this.helpers.getTopLevel(opts.$scope); diff --git a/dist/bootstrap-toc.min.css b/dist/bootstrap-toc.min.css index 7bfd328..3c62107 100644 --- a/dist/bootstrap-toc.min.css +++ b/dist/bootstrap-toc.min.css @@ -1,4 +1,4 @@ /*! - * Bootstrap Table of Contents v1.0.0 (http://afeld.github.io/bootstrap-toc/) + * Bootstrap Table of Contents v1.0.1 (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} \ No newline at end of file diff --git a/dist/bootstrap-toc.min.js b/dist/bootstrap-toc.min.js index f72df76..c628326 100644 --- a/dist/bootstrap-toc.min.js +++ b/dist/bootstrap-toc.min.js @@ -1,5 +1,5 @@ /*! - * Bootstrap Table of Contents v1.0.0 (http://afeld.github.io/bootstrap-toc/) + * Bootstrap Table of Contents v1.0.1 (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('')},createChildNavList:function(e){var t=this.createNavList();return e.append(t),t},generateNavEl:function(t,n){var r=e('');r.attr("href","#"+t),r.text(n);var a=e("
  • ");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); \ No newline at end of file +!function(a){"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(e){return a(e).text().trim().replace(/\'/gi,"").replace(/[& +$,:;=?@"#{}|^~[`%!'<>\]\.\/\(\)\*\\\n\t\b\v]/g,"-").replace(/-{2,}/g,"-").substring(0,64).replace(/^-+|-+$/gm,"").toLowerCase()||e.tagName.toLowerCase()},generateUniqueId:function(e){for(var t=this.generateUniqueIdBase(e),n=0;;n++){var r=t;if(0')},createChildNavList:function(e){var t=this.createNavList();return e.append(t),t},generateNavEl:function(e,t){var n=a('');n.attr("href","#"+e),n.text(t);var r=a("
  • ");return r.append(n),r},generateNavItem:function(e){var t=this.generateAnchor(e),n=a(e),r=n.data("toc-text")||n.text();return this.generateNavEl(t,r)},getTopLevel:function(e){for(var t=1;t<=6;t++){if(1 - + ``` 1. Pick one of the two options below. diff --git a/package.json b/package.json index dc2a526..9c230bb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bootstrap-toc", - "version": "1.0.0", + "version": "1.0.1", "private": true, "scripts": { "test": "gulp test"