mirror of
https://github.com/danog/sass-site.git
synced 2024-12-11 17:09:52 +01:00
e7ffef4fc9
Tables of contents are now statically rendered in their appropriately open/closed states, rather than updated via JavaScript, so they render correctly on the first page load. In order to make the "page sections" table still usable without JS, this adds a stylesheet in a <noscript> tag that forces the sections into an open state.
126 lines
6.8 KiB
JavaScript
126 lines
6.8 KiB
JavaScript
/*!
|
|
* jQuery Smooth Scroll - v2.2.0 - 2017-05-05
|
|
* https://github.com/kswedberg/jquery-smooth-scroll
|
|
* Copyright (c) 2017 Karl Swedberg
|
|
* Licensed MIT
|
|
*/
|
|
|
|
|
|
!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof module&&module.exports?require("jquery"):jQuery)}(function(a){var b={},c={exclude:[],excludeWithin:[],offset:0,direction:"top",delegateSelector:null,scrollElement:null,scrollTarget:null,autoFocus:!1,beforeScroll:function(){},afterScroll:function(){},easing:"swing",speed:400,autoCoefficient:2,preventDefault:!0},d=function(b){var c=[],d=!1,e=b.dir&&"left"===b.dir?"scrollLeft":"scrollTop";return this.each(function(){var b=a(this);if(this!==document&&this!==window)return!document.scrollingElement||this!==document.documentElement&&this!==document.body?void(b[e]()>0?c.push(this):(b[e](1),d=b[e]()>0,d&&c.push(this),b[e](0))):(c.push(document.scrollingElement),!1)}),c.length||this.each(function(){this===document.documentElement&&"smooth"===a(this).css("scrollBehavior")&&(c=[this]),c.length||"BODY"!==this.nodeName||(c=[this])}),"first"===b.el&&c.length>1&&(c=[c[0]]),c},e=/^([\-\+]=)(\d+)/;a.fn.extend({scrollable:function(a){var b=d.call(this,{dir:a});return this.pushStack(b)},firstScrollable:function(a){var b=d.call(this,{el:"first",dir:a});return this.pushStack(b)},smoothScroll:function(b,c){if("options"===(b=b||{}))return c?this.each(function(){var b=a(this),d=a.extend(b.data("ssOpts")||{},c);a(this).data("ssOpts",d)}):this.first().data("ssOpts");var d=a.extend({},a.fn.smoothScroll.defaults,b),e=function(b){var c=function(a){return a.replace(/(:|\.|\/)/g,"\\$1")},e=this,f=a(this),g=a.extend({},d,f.data("ssOpts")||{}),h=d.exclude,i=g.excludeWithin,j=0,k=0,l=!0,m={},n=a.smoothScroll.filterPath(location.pathname),o=a.smoothScroll.filterPath(e.pathname),p=location.hostname===e.hostname||!e.hostname,q=g.scrollTarget||o===n,r=c(e.hash);if(r&&!a(r).length&&(l=!1),g.scrollTarget||p&&q&&r){for(;l&&j<h.length;)f.is(c(h[j++]))&&(l=!1);for(;l&&k<i.length;)f.closest(i[k++]).length&&(l=!1)}else l=!1;l&&(g.preventDefault&&b.preventDefault(),a.extend(m,g,{scrollTarget:g.scrollTarget||r,link:e}),a.smoothScroll(m))};return null!==b.delegateSelector?this.off("click.smoothscroll",b.delegateSelector).on("click.smoothscroll",b.delegateSelector,e):this.off("click.smoothscroll").on("click.smoothscroll",e),this}});var f=function(a){var b={relative:""},c="string"==typeof a&&e.exec(a);return"number"==typeof a?b.px=a:c&&(b.relative=c[1],b.px=parseFloat(c[2])||0),b},g=function(b){var c=a(b.scrollTarget);b.autoFocus&&c.length&&(c[0].focus(),c.is(document.activeElement)||(c.prop({tabIndex:-1}),c[0].focus())),b.afterScroll.call(b.link,b)};a.smoothScroll=function(c,d){if("options"===c&&"object"==typeof d)return a.extend(b,d);var e,h,i,j,k=f(c),l={},m=0,n="offset",o="scrollTop",p={},q={};k.px?e=a.extend({link:null},a.fn.smoothScroll.defaults,b):(e=a.extend({link:null},a.fn.smoothScroll.defaults,c||{},b),e.scrollElement&&(n="position","static"===e.scrollElement.css("position")&&e.scrollElement.css("position","relative")),d&&(k=f(d))),o="left"===e.direction?"scrollLeft":o,e.scrollElement?(h=e.scrollElement,k.px||/^(?:HTML|BODY)$/.test(h[0].nodeName)||(m=h[o]())):h=a("html, body").firstScrollable(e.direction),e.beforeScroll.call(h,e),l=k.px?k:{relative:"",px:a(e.scrollTarget)[n]()&&a(e.scrollTarget)[n]()[e.direction]||0},p[o]=l.relative+(l.px+m+e.offset),i=e.speed,"auto"===i&&(j=Math.abs(p[o]-h[o]()),i=j/e.autoCoefficient),q={duration:i,easing:e.easing,complete:function(){g(e)}},e.step&&(q.step=e.step),h.length?h.stop().animate(p,q):g(e)},a.smoothScroll.version="2.2.0",a.smoothScroll.filterPath=function(a){return a=a||"",a.replace(/^\//,"").replace(/(?:index|default).[a-zA-Z]{3,4}$/,"").replace(/\/$/,"")},a.fn.smoothScroll.defaults=c});
|
|
|
|
var tab = $('.sl-c-tabs__button'),
|
|
accordion = $('.sl-c-tabs__content');
|
|
|
|
tab.click(function () {
|
|
if (accordion.hasClass('sl-is-inactive')) {
|
|
accordion.slideUp(0, function () {
|
|
accordion.removeClass('inactive').slideDown(1000);
|
|
});
|
|
}
|
|
|
|
else {
|
|
accordion.slideUp(1000, function () {
|
|
accordion.addClass('sl-is-inactive').slideDown(0);
|
|
});
|
|
}
|
|
});
|
|
|
|
$(function() {
|
|
$(".code-example").each(function() {
|
|
var figure = $(this);
|
|
var id = figure.attr("data-unique-id");
|
|
|
|
var ul = $("<ul></ul>");
|
|
|
|
if (figure.find(".scss").length) {
|
|
ul.append("<li><a href='#example-" + id + "-scss'>SCSS</a></li>");
|
|
}
|
|
|
|
if (figure.find(".sass").length) {
|
|
ul.append("<li><a href='#example-" + id + "-sass'>Sass</a></li>");
|
|
}
|
|
|
|
var hasCssTab = figure.find(".css").length;
|
|
if (hasCssTab) {
|
|
ul.append(
|
|
$("<li class='css-tab'></li>")
|
|
.prepend("<a href='#example-" + id + "-css'>CSS</a>"));
|
|
}
|
|
|
|
figure.prepend(ul).tabs({
|
|
active: 0,
|
|
beforeActivate: function(event, ui) {
|
|
// If multiple panels are visible, the CSS tab shouldn't be clickable.
|
|
if (ui.newPanel.hasClass('css') &&
|
|
allPanels.filter(":visible").length > 1) {
|
|
return false;
|
|
}
|
|
},
|
|
activate: function(event, ui) {
|
|
if (ui.newPanel.hasClass('css')) {
|
|
figure.addClass('ui-tabs-panel-css-is-active');
|
|
} else {
|
|
figure.removeClass('ui-tabs-panel-css-is-active');
|
|
}
|
|
|
|
allPanels.removeClass('ui-tabs-panel-previously-active');
|
|
ui.oldPanel.addClass('ui-tabs-panel-inactive').addClass('ui-tabs-panel-previously-active');
|
|
ui.newPanel.removeClass('ui-tabs-panel-inactive');
|
|
allPanels.css('display', '');
|
|
}
|
|
});
|
|
var allPanels = figure.find(".ui-tabs-panel");
|
|
|
|
allPanels.slice(1).addClass('ui-tabs-panel-inactive');
|
|
allPanels.css('display', '');
|
|
});
|
|
|
|
// Switch ALL the tabs (Sass/SCSS) together
|
|
var
|
|
noRecursion = false,
|
|
jqA = $( "a.ui-tabs-anchor" ),
|
|
jqASass = jqA.filter( ":contains('Sass')" ).click(function() {
|
|
if ( !noRecursion ) {
|
|
noRecursion = true;
|
|
jqASass.not( this ).click();
|
|
noRecursion = false;
|
|
}
|
|
}),
|
|
jqASCSS = jqA.filter( ":contains('SCSS')" ).click(function() {
|
|
if ( !noRecursion ) {
|
|
noRecursion = true;
|
|
jqASCSS.not( this ).click();
|
|
noRecursion = false;
|
|
}
|
|
})
|
|
;
|
|
});
|
|
|
|
$(function() {
|
|
$(".impl-status").each(function() {
|
|
var statusBar = $(this);
|
|
var expandLink = $(this).find("a");
|
|
if (expandLink == null) return;
|
|
|
|
var details = $(this).next();
|
|
if (!details.hasClass("sl-c-callout")) return;
|
|
|
|
details.hide();
|
|
expandLink.click(function() {
|
|
details.toggle();
|
|
expandLink.toggleClass("expanded");
|
|
});
|
|
});
|
|
});
|
|
|
|
$(function() {
|
|
$(".sl-c-list-navigation-wrapper--collapsible li > ul")
|
|
.parent()
|
|
.children("a")
|
|
.removeAttr("href")
|
|
.click(function() {
|
|
$(this).toggleClass("open");
|
|
return false;
|
|
});
|
|
});
|