From f1c512de58e77729a01940eefdb4499c346a4fe6 Mon Sep 17 00:00:00 2001 From: codecalm Date: Sat, 21 Dec 2019 18:21:23 +0100 Subject: [PATCH] capture_once jekyll plugin, autosize fixes --- js/tabler.js | 15 ---------- pages/_data/menu.yml | 4 +-- pages/_docs/autosize.md | 6 +++- pages/_includes/layout/js-capture.html | 9 +++++- pages/_includes/layout/js.html | 2 -- .../_includes/ui/form/textarea-autosize.html | 19 +++++++++++- pages/_plugins/jekyll-capture.rb | 29 +++++++++++++++++-- 7 files changed, 60 insertions(+), 24 deletions(-) diff --git a/js/tabler.js b/js/tabler.js index 3a6464afb..79ebc0a96 100644 --- a/js/tabler.js +++ b/js/tabler.js @@ -59,21 +59,6 @@ $(document).ready(function() { // $('[data-toggle="tooltip"]').tooltip(); // $('[data-toggle="popover"]').popover(); - /* - Autosize plugin - */ - if (window.autosize) { - (function() { - const elements = document.querySelectorAll('[data-toggle="autosize"]'); - - if (elements.length) { - elements.forEach(function(element) { - autosize(element); - }); - } - })(); - } - /* Imask plugin */ diff --git a/pages/_data/menu.yml b/pages/_data/menu.yml index 6f32aae71..714da9e7c 100644 --- a/pages/_data/menu.yml +++ b/pages/_data/menu.yml @@ -43,7 +43,7 @@ base: icon: package children: blank: - title: Blank page + title: Starter page url: blank.html buttons: url: buttons.html @@ -94,7 +94,7 @@ docs: url: docs/index.html children: index: - title: index + title: Introduction url: docs/index.html alerts: title: Alerts diff --git a/pages/_docs/autosize.md b/pages/_docs/autosize.md index 0113901c0..92588a22f 100644 --- a/pages/_docs/autosize.md +++ b/pages/_docs/autosize.md @@ -9,5 +9,9 @@ done: true {% example html %} - +{% include ui/form/textarea-autosize.html %} +{% include ui/form/textarea-autosize.html %} +{% include ui/form/textarea-autosize.html %} +{% include ui/form/textarea-autosize.html %} +{% include ui/form/textarea-autosize.html %} {% endexample %} diff --git a/pages/_includes/layout/js-capture.html b/pages/_includes/layout/js-capture.html index 2c99d1603..9d9e81c4b 100644 --- a/pages/_includes/layout/js-capture.html +++ b/pages/_includes/layout/js-capture.html @@ -1,3 +1,10 @@ {% removeemptylines %} -{{ site.captured_global.scripts }} +{% for script in site.captured_global.scripts %} +{{ script }} +{% endfor %} + +{% for script in site.captured_once.scripts %} +{{ script }} +{% endfor %} + {% endremoveemptylines %} diff --git a/pages/_includes/layout/js.html b/pages/_includes/layout/js.html index 9e481f427..90f28378f 100644 --- a/pages/_includes/layout/js.html +++ b/pages/_includes/layout/js.html @@ -1,4 +1,3 @@ -{% if site.data.libs.js and site.captured_libs %} {% for lib in site.data.libs.js %} {% if site.captured_libs contains lib[0] or site.data.libs.global-libs contains lib[0] %} @@ -7,7 +6,6 @@ {% endfor %} {% endif %} {% endfor %} -{% endif %} diff --git a/pages/_includes/ui/form/textarea-autosize.html b/pages/_includes/ui/form/textarea-autosize.html index a26f23e0f..b772d2182 100644 --- a/pages/_includes/ui/form/textarea-autosize.html +++ b/pages/_includes/ui/form/textarea-autosize.html @@ -1,2 +1,19 @@ {% append_lib autosize %} - \ No newline at end of file + + + +{% capture_once scripts %} + +{% endcapture_once %} diff --git a/pages/_plugins/jekyll-capture.rb b/pages/_plugins/jekyll-capture.rb index f152c89f8..53dfb6065 100644 --- a/pages/_plugins/jekyll-capture.rb +++ b/pages/_plugins/jekyll-capture.rb @@ -8,10 +8,10 @@ module Jekyll def render(context) if $captured_global[@text] === nil - $captured_global[@text] = ''; + $captured_global[@text] = []; end - $captured_global[@text] += super.strip + "\n\n" + $captured_global[@text].push(super.strip) '' end @@ -31,24 +31,49 @@ module Jekyll '' end end + + class CaptureOnce < Liquid::Block + def initialize(tag_name, text, tokens) + super + @text = text.strip + end + + def render(context) + if $captured_once[@text] === nil + $captured_once[@text] = []; + end + + data = super.strip + + unless $captured_once[@text].include?(data) + $captured_once[@text].push(data); + end + + '' + end + end end Jekyll::Hooks.register :site, :after_init do |page, jekyll| $captured_global = {} $captured_libs = [] + $captured_once = {} end Jekyll::Hooks.register :pages, :pre_render do |page, jekyll| jekyll.site['captured_global'] = $captured_global + jekyll.site['captured_once'] = $captured_once jekyll.site['captured_libs'] = $captured_libs end Jekyll::Hooks.register :pages, :post_render do |page, jekyll| $captured_global = {} $captured_libs = [] + $captured_once = {} end end Liquid::Template.register_tag('capture_global', Jekyll::Tags::CaptureGlobal) +Liquid::Template.register_tag('capture_once', Jekyll::Tags::CaptureOnce) Liquid::Template.register_tag('append_lib', Jekyll::Tags::CaptureScripts)