summaryrefslogtreecommitdiff
path: root/_includes/scripts/aside
diff options
context:
space:
mode:
authorKarl Hallsby <karl@hallsby.com>2020-09-27 17:45:13 -0500
committerKarl Hallsby <karl@hallsby.com>2020-09-27 17:45:13 -0500
commitc6bf5f7c895287d2028f6024265913b59784a154 (patch)
tree3a298df17d9472a679411dd81ea00a1239652477 /_includes/scripts/aside
parent50dafcddc0392b99b228824274b1b97d0e72e423 (diff)
Bring all of jekyll-text-theme _includes into site
Diffstat (limited to '_includes/scripts/aside')
-rw-r--r--_includes/scripts/aside/affix.js26
-rw-r--r--_includes/scripts/aside/toc.js35
2 files changed, 61 insertions, 0 deletions
diff --git a/_includes/scripts/aside/affix.js b/_includes/scripts/aside/affix.js
new file mode 100644
index 0000000..1db3b8e
--- /dev/null
+++ b/_includes/scripts/aside/affix.js
@@ -0,0 +1,26 @@
+(function() {
+ var SOURCES = window.TEXT_VARIABLES.sources;
+ window.Lazyload.js(SOURCES.jquery, function() {
+ var $window = $(window), $pageFooter = $('.js-page-footer');
+ var $pageAside = $('.js-page-aside');
+ var affix;
+ var tocDisabled = false;
+ var hasSidebar = $('.js-page-root').hasClass('layout--page--sidebar');
+
+ affix = $pageAside.affix({
+ offsetBottom: $pageFooter.outerHeight(),
+ scrollTarget: hasSidebar ? '.js-page-main' : null,
+ scroller: hasSidebar ? '.js-page-main' : null,
+ scroll: hasSidebar ? $('.js-page-main').children() : null,
+ disabled: tocDisabled
+ });
+
+ $window.on('resize', window.throttle(function() {
+ affix && affix.setOptions({
+ disabled: tocDisabled
+ });
+ }, 100));
+
+ window.pageAsideAffix = affix;
+ });
+})();
diff --git a/_includes/scripts/aside/toc.js b/_includes/scripts/aside/toc.js
new file mode 100644
index 0000000..a19ea95
--- /dev/null
+++ b/_includes/scripts/aside/toc.js
@@ -0,0 +1,35 @@
+(function() {
+ var SOURCES = window.TEXT_VARIABLES.sources;
+ var TOC_SELECTOR = window.TEXT_VARIABLES.site.toc.selectors;
+ window.Lazyload.js(SOURCES.jquery, function() {
+ var $window = $(window);
+ var $articleContent = $('.js-article-content');
+ var $tocRoot = $('.js-toc-root'), $col2 = $('.js-col-aside');
+ var toc;
+ var tocDisabled = false;
+ var hasSidebar = $('.js-page-root').hasClass('layout--page--sidebar');
+ var hasToc = $articleContent.find(TOC_SELECTOR).length > 0;
+
+ function disabled() {
+ return $col2.css('display') === 'none' || !hasToc;
+ }
+
+ tocDisabled = disabled();
+
+ toc = $tocRoot.toc({
+ selectors: TOC_SELECTOR,
+ container: $articleContent,
+ scrollTarget: hasSidebar ? '.js-page-main' : null,
+ scroller: hasSidebar ? '.js-page-main' : null,
+ disabled: tocDisabled
+ });
+
+ $window.on('resize', window.throttle(function() {
+ tocDisabled = disabled();
+ toc && toc.setOptions({
+ disabled: tocDisabled
+ });
+ }, 100));
+
+ });
+})();