j1-template 2021.2.9 → 2021.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (101) hide show
  1. checksums.yaml +4 -4
  2. data/_includes/themes/j1/blocks/footer/boxes/contacts_box.proc +1 -1
  3. data/_includes/themes/j1/layouts/content_generator_article_navigator.html +2 -2
  4. data/_includes/themes/j1/layouts/content_generator_blog_archive.html +2 -2
  5. data/_includes/themes/j1/layouts/content_generator_news_panel_posts.html +2 -2
  6. data/_includes/themes/j1/modules/boards/news_pin_board.html +10 -10
  7. data/_includes/themes/j1/modules/connectors/translators/google-translator.html +18 -3
  8. data/_includes/themes/j1/modules/navigator/generator.html +6 -6
  9. data/_includes/themes/j1/procedures/posts/collate_calendar.proc +3 -3
  10. data/_includes/themes/j1/procedures/posts/create_series_header.proc +1 -1
  11. data/_includes/themes/j1/procedures/posts/pager.proc +1 -1
  12. data/_layouts/compress.html +12 -4
  13. data/assets/data/gallery_customizer.html +1 -1
  14. data/assets/data/menu.html +17 -17
  15. data/assets/data/mmenu.html +17 -17
  16. data/assets/data/private.json +49 -0
  17. data/assets/data/quicklinks.html +3 -3
  18. data/assets/themes/j1/adapter/js/cookieConsent.js +4 -3
  19. data/assets/themes/j1/adapter/js/j1.js +1 -1
  20. data/assets/themes/j1/adapter/js/{j1scroll.js → scroller.js} +285 -304
  21. data/assets/themes/j1/adapter/js/translator.js +34 -20
  22. data/assets/themes/j1/core/js/template.js +4098 -223
  23. data/assets/themes/j1/core/js/template.min.js +9 -8
  24. data/assets/themes/j1/core/js/template.min.js.map +1 -1
  25. data/assets/themes/j1/modules/backstretch/js/backstretch.min.js +1 -1
  26. data/assets/themes/j1/modules/bmd/js/bootstrap-material-design.full.js +1 -1
  27. data/assets/themes/j1/modules/bmd/js/bootstrap-material-design.js +1 -1
  28. data/assets/themes/j1/modules/bmd/js/bootstrap-material-design.min.js +1 -1
  29. data/assets/themes/j1/modules/cookieConsent/js/cookieConsent.js +70 -10
  30. data/assets/themes/j1/modules/cookieConsent/js/cookieConsent.min.js +1 -1
  31. data/assets/themes/j1/modules/datatables/js/datatables.js +1 -1
  32. data/assets/themes/j1/modules/datatables/js/datatables.min.js +5 -5
  33. data/assets/themes/j1/modules/{j1Deepl/js/j1deepl.js → deeplAPI/js/deeplAPI.js} +36 -11
  34. data/assets/themes/j1/modules/deeplAPI/js/deeplAPI.min.js +18 -0
  35. data/assets/themes/j1/modules/iframeResizer/examples/frame.absolute.html +3 -3
  36. data/assets/themes/j1/modules/iframeResizer/examples/frame.content.html +6 -6
  37. data/assets/themes/j1/modules/iframeResizer/examples/frame.tolerance.html +2 -2
  38. data/assets/themes/j1/modules/iframeResizer/js/client/iframeResizer.contentWindow.js +1 -1
  39. data/assets/themes/j1/modules/iframeResizer/js/client/iframeResizer.contentWindow.min.js +1 -1
  40. data/assets/themes/j1/modules/iframeResizer/js/resizer.min.js +1 -1
  41. data/assets/themes/j1/modules/jquery/js/jquery.js +2 -2
  42. data/assets/themes/j1/modules/jquery/js/jquery.min.js +1 -1
  43. data/assets/themes/j1/modules/jquery/js/jqueryUI.js +7 -7
  44. data/assets/themes/j1/modules/jquery/js/jqueryUI.min.js +3 -3
  45. data/assets/themes/j1/modules/lightGallery/js/core/j1/lightgallery-x.min.js +1 -1
  46. data/assets/themes/j1/modules/lightGallery/js/core/lightgallery.min.js +1 -1
  47. data/assets/themes/j1/modules/lightGallery/js/modules/j1/j1-video.min.js +1 -1
  48. data/assets/themes/j1/modules/lightGallery/js/modules/j1/j1-x-video.min.js +1 -1
  49. data/assets/themes/j1/modules/lightbox/js/lightbox.js +1 -1
  50. data/assets/themes/j1/modules/lightbox/js/lightbox.min.js +1 -1
  51. data/assets/themes/j1/modules/lunrSearch/js/mustache.js +1 -1
  52. data/assets/themes/j1/modules/lunrSearch/js/mustache.min.js +1 -1
  53. data/assets/themes/j1/modules/lunrSearch/js/uri.js +1 -1
  54. data/assets/themes/j1/modules/lunrSearch/js/uri.min.js +7 -7
  55. data/assets/themes/j1/modules/mdiPreviewer/js/previewer.min.js +1 -1
  56. data/assets/themes/j1/modules/mdilPreviewer/js/previewer.min.js +1 -1
  57. data/assets/themes/j1/modules/{j1Scroll → scroller}/css/theme/uno.css +2 -2
  58. data/assets/themes/j1/modules/{j1Scroll → scroller}/css/theme/uno.min.css +0 -0
  59. data/assets/themes/j1/modules/scroller/js/scroller.js +346 -0
  60. data/assets/themes/j1/modules/scroller/js/scroller.min.js +15 -0
  61. data/assets/themes/j1/modules/themeSwitcher/js/switcher.js +1 -1
  62. data/assets/themes/j1/modules/themeSwitcher/js/switcher.min.js +1 -1
  63. data/assets/themes/j1/modules/translator/js/translator.js +38 -27
  64. data/assets/themes/j1/modules/translator/js/translator.min.js +1 -1
  65. data/assets/themes/j1/modules/twemoji/js/picker/twemoji-picker.js +1 -1
  66. data/assets/themes/j1/modules/twemoji/js/picker/twemoji-picker.min.js +1 -1
  67. data/assets/themes/j1/modules/videojs/js/video.min.js +2 -2
  68. data/lib/j1/version.rb +1 -1
  69. data/lib/starter_web/Gemfile +1 -1
  70. data/lib/starter_web/_config.yml +6 -2
  71. data/lib/starter_web/_data/apps/carousel.yml +4 -4
  72. data/lib/starter_web/_data/blocks/defaults/footer.yml +2 -2
  73. data/lib/starter_web/_data/blocks/footer.yml +2 -2
  74. data/lib/starter_web/_data/modules/attics.yml +1 -1
  75. data/lib/starter_web/_data/modules/cookieconsent.yml +0 -1
  76. data/lib/starter_web/_data/modules/defaults/attics.yml +2 -2
  77. data/lib/starter_web/_data/modules/defaults/cookieconsent.yml +3 -1
  78. data/lib/starter_web/_data/modules/defaults/translator.yml +2 -1
  79. data/lib/starter_web/_data/modules/{j1scroll.yml → scroller.yml} +30 -5
  80. data/lib/starter_web/_data/modules/translator.yml +3 -0
  81. data/lib/starter_web/_data/private.default.yml +8 -1
  82. data/lib/starter_web/_data/private.yml +8 -1
  83. data/lib/starter_web/_data/resources.yml +14 -35
  84. data/lib/starter_web/_includes/attributes.asciidoc +1 -1
  85. data/lib/starter_web/_plugins/lunr_index.rb +1 -1
  86. data/lib/starter_web/index.html +2 -1
  87. data/lib/starter_web/package.json +1 -1
  88. data/lib/starter_web/pages/public/blog/navigator/archive/dateview.html +2 -2
  89. data/lib/starter_web/pages/public/blog/navigator/archive/tagview.html +3 -3
  90. data/lib/starter_web/pages/public/blog/navigator/index.html +1 -1
  91. data/lib/starter_web/pages/public/manuals/dropdown-help.adoc +743 -743
  92. data/lib/starter_web/pages/public/previewer/preview_bootstrap_theme.adoc +85 -85
  93. data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
  94. data/lib/starter_web/utilsrv/package.json +1 -1
  95. metadata +11 -13
  96. data/assets/themes/j1/adapter/js/translator.1.js +0 -525
  97. data/assets/themes/j1/modules/j1Deepl/js/j1deepl.min.js +0 -18
  98. data/assets/themes/j1/modules/j1Scroll/js/j1scroll.js +0 -280
  99. data/assets/themes/j1/modules/j1Scroll/js/j1scroll.min.js +0 -15
  100. data/assets/themes/j1/modules/showOnScroll/js/showOnScroll.js +0 -73
  101. data/assets/themes/j1/modules/showOnScroll/js/showOnScroll.min.js +0 -15
@@ -1,280 +0,0 @@
1
- /*
2
- # -----------------------------------------------------------------------------
3
- # ~/assets/themes/j1/modules/j1Scroll/js/j1scroll.js
4
- # J1 core module for j1scroll
5
- #
6
- # Product/Info:
7
- # https://jekyll.one
8
- #
9
- # Copyright (C) 2021 Juergen Adams
10
- #
11
- # J1 Template is licensed under the MIT License.
12
- # For details, see https://jekyll.one
13
- # -----------------------------------------------------------------------------
14
- # NOTE: Based on https://github.com/jquery-boilerplate/jquery-boilerplate
15
- # See: https://www.dotnetcurry.com/jquery/1069/authoring-jquery-plugins
16
- # -----------------------------------------------------------------------------
17
- */
18
-
19
- // the semi-colon before function invocation is a SAFETY method against
20
- // concatenated scripts and/or other plugins which may NOT be closed
21
- // properly.
22
- //
23
- ;(function($, window, document, undefined) {
24
-
25
- 'use strict';
26
-
27
- // Create the defaults
28
- var pluginName = 'j1Scroll',
29
- defaults = {
30
- type: 'infiniteScroll',
31
- scrollOffset: 100,
32
- elementScroll: false,
33
- firstPage: 2,
34
- lastPage: false,
35
- infoLastPage: false,
36
- loadStatus: false,
37
- onInit: function (){}, // callback after plugin has initialized
38
- onBeforeLoad: function (){}, // callback before new items are loaded
39
- onAfterLoad: function (){} // callback after new items are loaded
40
- };
41
-
42
- // Plugin constructor
43
- function Plugin (element, options) {
44
- this.element = element;
45
- this.settings = $.extend( {}, defaults, options);
46
- this.settings.elementID = '#' + this.element.id;
47
-
48
- // call the initializer
49
- this.init(this.settings);
50
- }
51
-
52
- // Avoid Plugin.prototype conflicts
53
- $.extend(Plugin.prototype, {
54
- // -------------------------------------------------------------------------
55
- // init: initializer
56
- // -------------------------------------------------------------------------
57
- init: function(options) {
58
- var logger = log4javascript.getLogger('j1Scroll');
59
-
60
- logger.info('\n' + 'initializing plugin: started');
61
- logger.info('\n' + 'state: started');
62
-
63
- if ( options.elementScroll ) {
64
- this.scroller = this.element;
65
- } else {
66
- this.scroller = window;
67
- }
68
-
69
- if (options.loadStatus) {
70
- var spinner = '<div class="loader-ellips" style="display: none"> <span class="loader-ellips__dot"></span> <span class="loader-ellips__dot"></span> <span class="loader-ellips__dot"></span> <span class="loader-ellips__dot"></span> </div>';
71
- $(spinner).insertAfter(options.elementID);
72
- }
73
-
74
- if (options.infoLastPage) {
75
- var message = options.lastPageInfo;
76
- $(message).insertAfter(options.elementID);
77
- }
78
-
79
- // initialize infinite scroll
80
- if ( options.type === 'infiniteScroll') {
81
- logger.info('\n' + 'processing mode: infiniteScroll');
82
- logger.info('\n' + 'loading items from path: ' + options.path + "#");
83
- logger.info('\n' + 'monitoring element set to: ' + this.scroller);
84
- this.registerScrollEvent(options);
85
- }
86
- logger.info('\n' + 'initializing plugin: finished');
87
- logger.info('\n' + 'state: finished');
88
- },
89
-
90
- // -----------------------------------------------------------------------
91
- // bottomReached: detect final scroll position
92
- // NOTE: the calculation for BOTTOM position is different for
93
- // elementScroll and windowScroll. For elementScroll, the
94
- // trigger isBottomReached is TRUE, if the scroll position has
95
- // the end of the container PLUS a given scrollOffset.
96
- // For windowScroll, the trigger isBottomReached is TRUE, if
97
- // the scroll position has the end of the window MINUS
98
- // a given scrollOffset.
99
- // -----------------------------------------------------------------------
100
- isBottomReached: function (options) {
101
- var _this = this;
102
- var bottom, scrollY;
103
- var clientHeight = $(options.elementID).height();
104
-
105
- if ( _this.settings.elementScroll ) {
106
- // check scroll position of the container items are to be added
107
- var $window = $(window);
108
- var viewport_top = $window.scrollTop();
109
- var viewport_height = $window.height();
110
- var viewport_bottom = viewport_top + viewport_height - options.scrollOffset;
111
- var $elm = $(options.elementID);
112
- var top = $elm.offset().top + clientHeight;
113
- var height = $elm.height();
114
- bottom = top + height;
115
-
116
-
117
- return (top >= viewport_top && top < viewport_bottom) ||
118
- (bottom > viewport_top && bottom <= viewport_bottom) ||
119
- (height > viewport_height && top <= viewport_top && bottom >= viewport_bottom);
120
- } else {
121
- // check scroll position of the (overall) window
122
- return (window.innerHeight + window.pageYOffset + options.scrollOffset >= document.body.offsetHeight);
123
- }
124
- },
125
-
126
- // -----------------------------------------------------------------------
127
- // detectScroll: EventHandler to load new items for infinite scroll
128
- // if final scroll position reached
129
- // -----------------------------------------------------------------------
130
- registerScrollEvent: function (options) {
131
- var _this = this;
132
- var logger = log4javascript.getLogger('j1Scroll');
133
-
134
- logger.info('\n' + 'scroll event: register');
135
- var eventHandler_onscroll = function (event) {
136
- var options = _this.settings;
137
-
138
- if (_this.isBottomReached(options)) {
139
- if (options.firstPage > options.lastPage ) {
140
- logger.info('\n' + 'last page detected on: ' + options.lastPage);
141
- window.removeEventListener('scroll', eventHandler_onscroll);
142
- logger.info('\n' + 'scroll event: removed');
143
-
144
- if (options.infoLastPage ) {
145
- _this.infoLastPage(options);
146
- }
147
- return false;
148
- }
149
- _this.getNewPost(options);
150
- }
151
- };
152
- window.addEventListener('scroll', eventHandler_onscroll);
153
- logger.info('\n' + 'scroll event: registered');
154
- },
155
-
156
- // -----------------------------------------------------------------------
157
- // getNewPost: load new items (from current path)
158
- // Note: loader flag prevents to load items if AJAX load in progress
159
- // is NOT finished
160
- // -----------------------------------------------------------------------
161
- getNewPost: function (options) {
162
- var _this = this;
163
- var logger = log4javascript.getLogger('j1Scroll');
164
-
165
- logger.info('\n' + 'trigger loading ');
166
-
167
- // initialze loader flag
168
- if (this.itemsLoaded === false) return false;
169
-
170
- // set loader flag (false == not loaded)
171
- this.itemsLoaded = false;
172
-
173
- // display spinner while loading
174
- if (options.loadStatus) {
175
- logger.info('\n' + 'show: spinner');
176
- $('.loader-ellips').show();
177
- }
178
-
179
- var xmlhttp = new XMLHttpRequest();
180
- xmlhttp.onreadystatechange = function () {
181
- if (xmlhttp.readyState == XMLHttpRequest.DONE) {
182
- if (xmlhttp.status == 200) {
183
- options.firstPage++;
184
- var childItems = _this.getChildItemsByAjaxHTML(options, xmlhttp.responseText);
185
- _this.appendNewItems(childItems);
186
-
187
- logger.info('\n' + 'loading new items: successful');
188
-
189
- // hide the spinner after loading
190
- if (options.loadStatus) {
191
- logger.info('\n' + 'hide: spinner');
192
- $('.loader-ellips').hide();
193
- }
194
-
195
- // set loader flag (true == loaded)
196
- // return _this.itemsLoaded = true;
197
- _this.itemsLoaded = true;
198
- } else {
199
- // hide the spinner
200
- if (options.loadStatus) {
201
- logger.info('\n' + 'hide: spinner');
202
- $('.loader-ellips').hide();
203
- }
204
-
205
- logger.error('\n' + 'loading new items failed, HTTP response: ' + xmlhttp.status );
206
- // set loader flag (true == loaded)
207
- // return _this.itemsLoaded = false;
208
- _this.itemsLoaded = false;
209
- }
210
- }
211
- };
212
- logger.info('\n' + 'loading new items from path: ' + options.path + options.firstPage);
213
- xmlhttp.open("GET", location.origin + options.path + options.firstPage + '/index.html', true);
214
- xmlhttp.send();
215
- },
216
-
217
- // -----------------------------------------------------------------------
218
- // getChildItemsByAjaxHTML: extract items from page loaded
219
- // -----------------------------------------------------------------------
220
- getChildItemsByAjaxHTML: function (options, HTMLText) {
221
- var newHTML = document.createElement('html');
222
- var logger = log4javascript.getLogger('j1Scroll');
223
-
224
- logger.info('\n' + 'load new items');
225
- newHTML.innerHTML = HTMLText;
226
- var childItems = newHTML.querySelectorAll(options.elementID + ' > *');
227
- return childItems;
228
- },
229
-
230
- // -----------------------------------------------------------------------
231
- // appendNewItems: append items and run post processing
232
- // -----------------------------------------------------------------------
233
- appendNewItems: function (items) {
234
- var _this = this;
235
- var logger = log4javascript.getLogger('j1Scroll');
236
- var cookie_names = j1.getCookieNames();
237
- var user_translate = j1.readCookie(cookie_names.user_translate);
238
-
239
- logger.info('\n' + 'append new items');
240
- items.forEach(function (item) {
241
- _this.element.appendChild(item);
242
- });
243
-
244
- // no dropcaps if translation enabled
245
- if (user_translate.translationEnabled) {
246
- logger.info('\n' + 'translation enabled: ' + user_translate.translationEnabled);
247
- logger.warn('\n' + 'skipped processing of dropcaps');
248
- } else {
249
- // initialize dropcaps
250
- logger.info('\n' + 'post processing: createDropCap');
251
- j1.core.createDropCap();
252
- }
253
-
254
- },
255
-
256
- // -----------------------------------------------------------------------
257
- // getNewPost: load/append new items
258
- // Note: loader flag prevents to load items if AJAX load in progress
259
- // is NOT finished
260
- // -----------------------------------------------------------------------
261
- infoLastPage: function (options) {
262
- var _this = this;
263
- var logger = log4javascript.getLogger('j1Scroll');
264
-
265
- logger.info('\n' + 'show: infoLastPage');
266
- $('.page-scroll-last').show();
267
- }
268
- }); // END prototype
269
-
270
- // wrapper around the constructor to prevent multiple instantiations
271
- $.fn [pluginName] = function(options) {
272
- return this.each(function() {
273
- if (!$.data( this, "plugin_" + pluginName)) {
274
- $.data(this, "plugin_" +
275
- pluginName, new Plugin(this, options));
276
- }
277
- });
278
- };
279
-
280
- })(jQuery, window, document);
@@ -1,15 +0,0 @@
1
- /*
2
- # -----------------------------------------------------------------------------
3
- # ~/assets/themes/j1/modules/j1Scroll/js/j1scroll.min.js
4
- # J1 core module for j1scroll
5
- #
6
- # Product/Info:
7
- # https://jekyll.one
8
- #
9
- # Copyright (C) 2021 Juergen Adams
10
- #
11
- # J1 Template is licensed under the MIT License.
12
- # For details, see https://jekyll.one
13
- # -----------------------------------------------------------------------------
14
- */
15
- (function(e,c,a,g){var d="j1Scroll",f={type:"infiniteScroll",scrollOffset:100,elementScroll:false,firstPage:2,lastPage:false,infoLastPage:false,loadStatus:false,onInit:function(){},onBeforeLoad:function(){},onAfterLoad:function(){}};function b(i,h){this.element=i;this.settings=e.extend({},f,h);this.settings.elementID="#"+this.element.id;this.init(this.settings)}e.extend(b.prototype,{init:function(i){var h=log4javascript.getLogger("j1Scroll");h.info("\ninitializing plugin: started");h.info("\nstate: started");if(i.elementScroll){this.scroller=this.element}else{this.scroller=c}if(i.loadStatus){var k='<div class="loader-ellips" style="display: none"> <span class="loader-ellips__dot"></span> <span class="loader-ellips__dot"></span> <span class="loader-ellips__dot"></span> <span class="loader-ellips__dot"></span> </div>';e(k).insertAfter(i.elementID)}if(i.infoLastPage){var j=i.lastPageInfo;e(j).insertAfter(i.elementID)}if(i.type==="infiniteScroll"){h.info("\nprocessing mode: infiniteScroll");h.info("\nloading items from path: "+i.path+"#");h.info("\nmonitoring element set to: "+this.scroller);this.registerScrollEvent(i)}h.info("\ninitializing plugin: finished");h.info("\nstate: finished")},isBottomReached:function(s){var n=this;var h,p;var m=e(s.elementID).height();if(n.settings.elementScroll){var j=e(c);var r=j.scrollTop();var i=j.height();var l=r+i-s.scrollOffset;var k=e(s.elementID);var o=k.offset().top+m;var q=k.height();h=o+q;return(o>=r&&o<l)||(h>r&&h<=l)||(q>i&&o<=r&&h>=l)}else{return(c.innerHeight+c.pageYOffset+s.scrollOffset>=a.body.offsetHeight)}},registerScrollEvent:function(i){var k=this;var h=log4javascript.getLogger("j1Scroll");h.info("\nscroll event: register");var j=function(m){var l=k.settings;if(k.isBottomReached(l)){if(l.firstPage>l.lastPage){h.info("\nlast page detected on: "+l.lastPage);c.removeEventListener("scroll",j);h.info("\nscroll event: removed");if(l.infoLastPage){k.infoLastPage(l)}return false}k.getNewPost(l)}};c.addEventListener("scroll",j);h.info("\nscroll event: registered")},getNewPost:function(i){var k=this;var h=log4javascript.getLogger("j1Scroll");h.info("\ntrigger loading ");if(this.itemsLoaded===false){return false}this.itemsLoaded=false;if(i.loadStatus){h.info("\nshow: spinner");e(".loader-ellips").show()}var j=new XMLHttpRequest();j.onreadystatechange=function(){if(j.readyState==XMLHttpRequest.DONE){if(j.status==200){i.firstPage++;var l=k.getChildItemsByAjaxHTML(i,j.responseText);k.appendNewItems(l);h.info("\nloading new items: successful");if(i.loadStatus){h.info("\nhide: spinner");e(".loader-ellips").hide()}k.itemsLoaded=true}else{if(i.loadStatus){h.info("\nhide: spinner");e(".loader-ellips").hide()}h.error("\nloading new items failed, HTTP response: "+j.status);k.itemsLoaded=false}}};h.info("\nloading new items from path: "+i.path+i.firstPage);j.open("GET",location.origin+i.path+i.firstPage+"/index.html",true);j.send()},getChildItemsByAjaxHTML:function(j,i){var l=a.createElement("html");var h=log4javascript.getLogger("j1Scroll");h.info("\nload new items");l.innerHTML=i;var k=l.querySelectorAll(j.elementID+" > *");return k},appendNewItems:function(h){var l=this;var i=log4javascript.getLogger("j1Scroll");var k=j1.getCookieNames();var j=j1.readCookie(k.user_translate);i.info("\nappend new items");h.forEach(function(m){l.element.appendChild(m)});if(j.translationEnabled){i.info("\ntranslation enabled: "+j.translationEnabled);i.warn("\nskipped processing of dropcaps")}else{i.info("\npost processing: createDropCap");j1.core.createDropCap()}},infoLastPage:function(i){var j=this;var h=log4javascript.getLogger("j1Scroll");h.info("\nshow: infoLastPage");e(".page-scroll-last").show()}});e.fn[d]=function(h){return this.each(function(){if(!e.data(this,"plugin_"+d)){e.data(this,"plugin_"+d,new b(this,h))}})}})(jQuery,window,document);
@@ -1,73 +0,0 @@
1
- /*
2
- # -----------------------------------------------------------------------------
3
- # ~/assets/themes/j1/modules/showOnScroll/js/showOnScroll.js
4
- # Very simple J1 implementation for showOnScroll
5
- #
6
- # Product/Info:
7
- # https://jekyll.one
8
- #
9
- # Copyright (C) 2021 Juergen Adams
10
- #
11
- # J1 Template is licensed under the MIT License.
12
- # For details, see https://jekyll.one
13
- # -----------------------------------------------------------------------------
14
- */
15
- // -------------------------------------------------------------------------
16
- // isInViewport:
17
- // Detects if an element is visible in an viewport specified
18
- // -------------------------------------------------------------------------
19
- function isInViewport(elm, offset) {
20
- // if the element doesn't exist, abort
21
- if( elm.length == 0 ) {
22
- return;
23
- }
24
- var $window = jQuery(window);
25
- var viewport_top = $window.scrollTop();
26
- var viewport_height = $window.height();
27
- var viewport_bottom = viewport_top + viewport_height;
28
- var $elm = jQuery(elm);
29
- var top = $elm.offset().top + offset;
30
- var height = $elm.height();
31
- var bottom = top + height;
32
-
33
- return (top >= viewport_top && top < viewport_bottom) ||
34
- (bottom > viewport_top && bottom <= viewport_bottom) ||
35
- (height > viewport_height && top <= viewport_top && bottom >= viewport_bottom);
36
- }
37
-
38
- // -----------------------------------------------------------------------------
39
- // Initializer
40
- // -----------------------------------------------------------------------------
41
- $(document).ready( function() {
42
-
43
- var showDelay = 700;
44
- var yOffset = 500;
45
- var logger = log4javascript.getLogger('j1ShowOnScroll');
46
-
47
- // ---------------------------------------------------------------------------
48
- // EventHandler: Service Panel
49
- // ---------------------------------------------------------------------------
50
- var eventHandler_service_panel = function (event) {
51
- if (isInViewport ($('#home_service_panel'), yOffset)) {
52
- logger.info('\n' + 'specified container is in view: home_service_panel');
53
- $(".home_service_panel").show(showDelay);
54
- logger.info('\n' + 'remove eventHandler');
55
- window.removeEventListener('scroll', eventHandler_service_panel);
56
- }
57
- }
58
- window.addEventListener('scroll', eventHandler_service_panel);
59
-
60
- // ---------------------------------------------------------------------------
61
- // EventHandler: Intro Panel
62
- // ---------------------------------------------------------------------------
63
- var eventHandler_intro_panel = function (event) {
64
- if (isInViewport ($('#home_intro_panel'), yOffset)) {
65
- logger.info('\n' + 'specified container is in view: home_intro_panel');
66
- $(".home_intro_panel").show(showDelay);
67
- logger.info('\n' + 'remove eventHandler');
68
- window.removeEventListener('scroll', eventHandler_intro_panel);
69
- }
70
- }
71
- window.addEventListener('scroll', eventHandler_intro_panel);
72
-
73
- });
@@ -1,15 +0,0 @@
1
- /*
2
- # -----------------------------------------------------------------------------
3
- # ~/assets/themes/j1/modules/showOnScroll/js/showOnScroll.min.js
4
- # J1 implementation for showOnScroll
5
- #
6
- # Product/Info:
7
- # https://jekyll.one
8
- #
9
- # Copyright (C) 2021 Juergen Adams
10
- #
11
- # J1 Template is licensed under the MIT License.
12
- # For details, see https://jekyll.one
13
- # -----------------------------------------------------------------------------
14
- */
15
- function isInViewport(g,f){if(g.length==0){return}var c=jQuery(window);var j=c.scrollTop();var b=c.height();var d=j+b;var e=jQuery(g);var h=e.offset().top+f;var i=e.height();var a=h+i;return(h>=j&&h<d)||(a>j&&a<=d)||(i>b&&h<=j&&a>=d)}$(document).ready(function(){var a=700;var e=500;var b=log4javascript.getLogger("j1.core.showOnScroll");var c=function(f){if(isInViewport($("#home_service_panel"),e)){b.info("\nThe specified container is in view: home_service_panel");$(".home_service_panel").show(a);window.removeEventListener("scroll",c)}};window.addEventListener("scroll",c);var d=function(f){if(isInViewport($("#home_intro_panel"),e)){b.info("\nThe specified container is in view: home_intro_panel");$(".home_intro_panel").show(a);window.removeEventListener("scroll",d)}};window.addEventListener("scroll",d)});