j1-template 2021.1.26 → 2021.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (143) hide show
  1. checksums.yaml +4 -4
  2. data/_includes/themes/j1/layouts/content_generator_article_navigator.html +1 -1
  3. data/_includes/themes/j1/layouts/content_generator_blog_archive.html +6 -4
  4. data/_includes/themes/j1/layouts/content_generator_post.html +3 -0
  5. data/_includes/themes/j1/modules/navigator/generator.html +1 -1
  6. data/_includes/themes/j1/procedures/posts/collate_timeline.proc +1 -1
  7. data/_includes/themes/j1/procedures/posts/create_series_header.proc +6 -6
  8. data/_layouts/default.html +1 -0
  9. data/assets/data/mdil_icons.json +2417 -0
  10. data/assets/data/panel.html +0 -15
  11. data/assets/themes/j1/adapter/js/j1.js +6 -6
  12. data/assets/themes/j1/adapter/js/j1scroll.js +143 -46
  13. data/assets/themes/j1/core/css/icon-fonts/materialdesign-light.css +1222 -0
  14. data/assets/themes/j1/core/css/icon-fonts/materialdesign-light.min.css +1 -0
  15. data/assets/themes/j1/core/css/icon-fonts/materialdesign.css +1 -1
  16. data/assets/themes/j1/core/css/themes/uno-light/bootstrap.css +42 -0
  17. data/assets/themes/j1/core/css/themes/uno-light/bootstrap.min.css +1 -1
  18. data/assets/themes/j1/core/fonts/material_design_icons_light/fonts/eot/materialdesignicons-light-webfont.eot +0 -0
  19. data/assets/themes/j1/core/fonts/material_design_icons_light/fonts/materialdesignicons-light-webfont.woff +0 -0
  20. data/assets/themes/j1/core/fonts/material_design_icons_light/fonts/materialdesignicons-light-webfont.woff2 +0 -0
  21. data/assets/themes/j1/core/fonts/material_design_icons_light/fonts/svg/materialdesignicons-light-webfont.svg +801 -0
  22. data/assets/themes/j1/core/fonts/material_design_icons_light/fonts/ttf/materialdesignicons-light-webfont.ttf +0 -0
  23. data/assets/themes/j1/core/js/template.js +4 -4
  24. data/assets/themes/j1/core/js/template.js.map +1 -1
  25. data/assets/themes/j1/core/js/template.min.js +4 -4
  26. data/assets/themes/j1/core/js/template.min.js.map +1 -1
  27. data/assets/themes/j1/modules/j1Scroll/css/theme/uno.css +4 -50
  28. data/assets/themes/j1/modules/j1Scroll/css/theme/uno.min.css +1 -1
  29. data/assets/themes/j1/modules/j1Scroll/js/j1scroll.js +263 -188
  30. data/assets/themes/j1/modules/j1Scroll/js/j1scroll.min.js +16 -0
  31. data/assets/themes/j1/modules/mdiPreviewer/css/previewer.css +1 -1
  32. data/assets/themes/j1/modules/mdiPreviewer/css/previewer.min.css +1 -1
  33. data/assets/themes/j1/modules/mdiPreviewer/js/previewer.js +5 -15
  34. data/assets/themes/j1/modules/mdiPreviewer/js/previewer.min.js +1 -1
  35. data/assets/themes/j1/modules/mdilPreviewer/css/previewer.css +97 -0
  36. data/assets/themes/j1/modules/mdilPreviewer/css/previewer.min.css +15 -0
  37. data/assets/themes/j1/modules/mdilPreviewer/js/previewer.js +125 -0
  38. data/assets/themes/j1/modules/mdilPreviewer/js/previewer.min.js +15 -0
  39. data/assets/themes/j1/modules/showOnScroll/js/showOnScroll.js +73 -74
  40. data/assets/themes/j1/modules/showOnScroll/js/showOnScroll.min.js +15 -15
  41. data/lib/j1/commands/generate.rb +5 -8
  42. data/lib/j1/version.rb +3 -3
  43. data/lib/starter_web/Gemfile +1 -1
  44. data/lib/starter_web/_config.yml +3 -3
  45. data/lib/starter_web/_data/blocks/banner.yml +4 -5
  46. data/lib/starter_web/_data/blocks/panel.yml +217 -183
  47. data/lib/starter_web/_data/builder/blog_navigator.yml +1 -0
  48. data/lib/starter_web/_data/layouts/home.yml +20 -16
  49. data/lib/starter_web/_data/modules/defaults/navigator.yml +1 -1
  50. data/lib/starter_web/_data/modules/j1scroll.yml +67 -0
  51. data/lib/starter_web/_data/modules/navigator_menu.yml +3 -3
  52. data/lib/starter_web/_data/resources.yml +41 -44
  53. data/lib/starter_web/_includes/attributes.asciidoc +1 -1
  54. data/lib/starter_web/_plugins/lunr_index.rb +1 -1
  55. data/lib/starter_web/assets/images/modules/attics/annie-spratt-1920x1280.jpg +0 -0
  56. data/lib/starter_web/assets/images/modules/attics/antonino-visalli-1920x1280.jpg +0 -0
  57. data/lib/starter_web/assets/images/modules/attics/humble-lamb-1920x1280.jpg +0 -0
  58. data/lib/starter_web/assets/images/modules/attics/library-1920x1280.jpg +0 -0
  59. data/lib/starter_web/assets/images/modules/attics/romain-vignes-1920x1280.jpg +0 -0
  60. data/lib/starter_web/assets/images/modules/attics/sigmund-1920x1280.jpg +0 -0
  61. data/lib/starter_web/assets/images/{pages/videos → modules/attics}/szabo-viktor-1920x1280.jpg +0 -0
  62. data/lib/starter_web/assets/images/pages/asciidoc_skeletons/example-pdf-screenshot.png +0 -0
  63. data/lib/starter_web/collections/posts/public/featured/_posts/{2020-01-01-about-cookies.adoc → 2021-01-01-about-cookies.adoc} +0 -0
  64. data/lib/starter_web/collections/posts/public/featured/_posts/{2021-03-01-site-generators.adoc → 2021-02-01-site-generators.adoc} +0 -0
  65. data/lib/starter_web/collections/posts/public/{wikipedia/_posts/2016-11-20-minneapolis.adoc → series/_posts/2020-01-01-post-wiki-series.adoc} +11 -10
  66. data/lib/starter_web/collections/posts/public/{wikipedia/_posts/2016-11-24-narcisse-snake-dens.adoc → series/_posts/2020-01-02-post-wiki-series.adoc} +15 -13
  67. data/lib/starter_web/collections/posts/public/{wikipedia/_posts/2016-11-26-columbia-river.adoc → series/_posts/2020-01-03-post-wiki-series.adoc} +28 -11
  68. data/lib/starter_web/collections/posts/public/{wikipedia → series}/_posts/_includes/attributes.asciidoc +0 -0
  69. data/lib/starter_web/collections/posts/public/{wikipedia → series}/_posts/_includes/documents/readme +0 -0
  70. data/lib/starter_web/collections/posts/public/{wikipedia → series}/_posts/_includes/tables/readme +0 -0
  71. data/lib/starter_web/index.html +2 -2
  72. data/lib/starter_web/package.json +1 -1
  73. data/lib/starter_web/pages/public/asciidoc_skeletons/{book → documentation}/000_intro.adoc +5 -7
  74. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/100_converter.adoc +43 -0
  75. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/200_themes.adoc +61 -0
  76. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/attributes.asciidoc +95 -0
  77. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/documents/000_intro.asciidoc +54 -0
  78. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/documents/100_converter/000_basic_example.asciidoc +31 -0
  79. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/documents/100_converter/111_about_the_converter.asciidoc +111 -0
  80. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/documents/100_converter/112_getting_started.asciidoc +95 -0
  81. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/documents/100_converter/113_themes.asciidoc +39 -0
  82. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/documents/100_converter.asciidoc +8 -0
  83. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/documents/200_themes/211_language_overview.asciidoc +122 -0
  84. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/documents/200_themes/212_values.asciidoc +502 -0
  85. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/documents/200_themes/213_fonts.asciidoc +261 -0
  86. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/documents/200_themes.asciidoc +8 -0
  87. data/lib/starter_web/pages/public/asciidoc_skeletons/{book → documentation}/a2p.bat +1 -1
  88. data/lib/starter_web/pages/public/asciidoc_skeletons/{book → documentation}/a2p.sh +2 -2
  89. data/lib/starter_web/pages/public/asciidoc_skeletons/{book/book.a2p → documentation/documentation.a2p} +2 -8
  90. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/documentation.adoc +86 -0
  91. data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/_includes/documents/100_chapter.asciidoc +848 -40
  92. data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/_includes/documents/200_chapter.asciidoc +149 -38
  93. data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/multi.adoc +2 -7
  94. data/lib/starter_web/pages/public/asciidoc_skeletons/simple-document/simple.adoc +312 -119
  95. data/lib/starter_web/pages/public/blog/navigator/index.html +3 -2
  96. data/lib/starter_web/pages/public/previewer/mdi_icons_preview.adoc +2 -2
  97. data/lib/starter_web/pages/public/previewer/mdil_icons_preview.adoc +76 -0
  98. data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
  99. data/lib/starter_web/utilsrv/package.json +1 -1
  100. metadata +52 -59
  101. data/assets/themes/j1/adapter/js/infiniteScroll.js +0 -259
  102. data/assets/themes/j1/modules/infiniteScroll/css/theme/uno.css +0 -150
  103. data/assets/themes/j1/modules/infiniteScroll/css/theme/uno.min.css +0 -15
  104. data/assets/themes/j1/modules/infiniteScroll/js/infiniteScroll.js +0 -1915
  105. data/assets/themes/j1/modules/infiniteScroll/js/infiniteScroll.min.js +0 -17
  106. data/lib/starter_web/_data/modules/defaults/infiniteScroll.yml +0 -73
  107. data/lib/starter_web/_data/modules/infiniteScroll.yml +0 -66
  108. data/lib/starter_web/collections/posts/public/series/_posts/2020-01-01-post-test-series.adoc +0 -128
  109. data/lib/starter_web/collections/posts/public/series/_posts/2020-01-02-post-test-series.adoc +0 -131
  110. data/lib/starter_web/collections/posts/public/series/_posts/2020-01-03-post-test-series.adoc +0 -131
  111. data/lib/starter_web/collections/posts/public/series/_posts/2020-01-04-post-test-series.adoc +0 -132
  112. data/lib/starter_web/pages/infinite-scroll-tester-5.adoc +0 -119
  113. data/lib/starter_web/pages/public/asciidoc_skeletons/_templates/asciidoc-extensions/blindtext.asciidoc +0 -11
  114. data/lib/starter_web/pages/public/asciidoc_skeletons/_templates/asciidoc-extensions/font_icons.asciidoc +0 -23
  115. data/lib/starter_web/pages/public/asciidoc_skeletons/_templates/asciidoc-extensions/gallery.asciidoc +0 -5
  116. data/lib/starter_web/pages/public/asciidoc_skeletons/_templates/asciidoc-extensions/lightbox.asciidoc +0 -7
  117. data/lib/starter_web/pages/public/asciidoc_skeletons/_templates/documents/chapter_document.asciidoc +0 -9
  118. data/lib/starter_web/pages/public/asciidoc_skeletons/_templates/documents/entry_document.asciidoc +0 -3
  119. data/lib/starter_web/pages/public/asciidoc_skeletons/_templates/images/image.asciidoc +0 -6
  120. data/lib/starter_web/pages/public/asciidoc_skeletons/_templates/tables/table_2_column.asciidoc +0 -12
  121. data/lib/starter_web/pages/public/asciidoc_skeletons/_templates/tables/table_2_column_options.asciidoc +0 -30
  122. data/lib/starter_web/pages/public/asciidoc_skeletons/_templates/tables/table_3_column.asciidoc +0 -16
  123. data/lib/starter_web/pages/public/asciidoc_skeletons/_templates/tables/table_4_column.asciidoc +0 -25
  124. data/lib/starter_web/pages/public/asciidoc_skeletons/book/100_chapter.adoc +0 -62
  125. data/lib/starter_web/pages/public/asciidoc_skeletons/book/200_chapter.adoc +0 -64
  126. data/lib/starter_web/pages/public/asciidoc_skeletons/book/900_references.adoc +0 -73
  127. data/lib/starter_web/pages/public/asciidoc_skeletons/book/_includes/attributes.asciidoc +0 -74
  128. data/lib/starter_web/pages/public/asciidoc_skeletons/book/_includes/documents/000_intro.asciidoc +0 -33
  129. data/lib/starter_web/pages/public/asciidoc_skeletons/book/_includes/documents/100_chapter/100_chapter_document.asciidoc +0 -21
  130. data/lib/starter_web/pages/public/asciidoc_skeletons/book/_includes/documents/100_chapter/110_chapter_document.asciidoc +0 -36
  131. data/lib/starter_web/pages/public/asciidoc_skeletons/book/_includes/documents/100_chapter.asciidoc +0 -7
  132. data/lib/starter_web/pages/public/asciidoc_skeletons/book/_includes/documents/200_chapter/200_chapter_document.asciidoc +0 -53
  133. data/lib/starter_web/pages/public/asciidoc_skeletons/book/_includes/documents/200_chapter.asciidoc +0 -5
  134. data/lib/starter_web/pages/public/asciidoc_skeletons/book/_includes/documents/900_references/000_intro.asciidoc +0 -23
  135. data/lib/starter_web/pages/public/asciidoc_skeletons/book/_includes/documents/900_references/100_chapter_document.asciidoc +0 -33
  136. data/lib/starter_web/pages/public/asciidoc_skeletons/book/_includes/documents/900_references/200_chapter_document.asciidoc +0 -26
  137. data/lib/starter_web/pages/public/asciidoc_skeletons/book/_includes/documents/900_references/900_sources.asciidoc +0 -81
  138. data/lib/starter_web/pages/public/asciidoc_skeletons/book/_includes/documents/900_references.asciidoc +0 -23
  139. data/lib/starter_web/pages/public/asciidoc_skeletons/book/_includes/documents/tables/110_material_design_icons.asciidoc +0 -102
  140. data/lib/starter_web/pages/public/asciidoc_skeletons/book/book.adoc +0 -136
  141. data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/100_chapter.asciidoc +0 -60
  142. data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/200_chapter.asciidoc +0 -59
  143. data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/_includes/documents/tables/110_material_design_icons.asciidoc +0 -102
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  # -----------------------------------------------------------------------------
3
- # ~/assets/themes/j1/modules/infiniteScroll/css/uno.css
4
- # Provides styles for J1 Module infiniteScroll
3
+ # ~/assets/themes/j1/modules/j1Scroll/css/uno.css
4
+ # Provides styles for J1 Module j1Scroll
5
5
  #
6
6
  # Product/Info:
7
7
  # https://jekyll.one
@@ -32,53 +32,7 @@ span {
32
32
  }
33
33
  */
34
34
 
35
- /* groups and items
36
- -------------------------------------------------------------------------------- */
37
- .list-group-item {
38
- width: 96%;
39
- margin-right: 1% !important;
40
- }
41
-
42
- /* Media breakpoints */
43
- @media only screen and (min-width: 576px) {
44
- .list-group-item.items-auto {
45
- width: 48.3%; }
46
- .list-group-item.items-1 {
47
- width: 96%; }
48
- .list-group-item.items-2 {
49
- width: 48.3%; }
50
- .list-group-item.items-3 {
51
- width: 48.3%; }
52
- .list-group-item.items-4 {
53
- width: 48.3%; } }
54
-
55
- @media only screen and (min-width: 768px) {
56
- .list-group-item.items-auto {
57
- width: 31.333%; }
58
- .list-group-item.items-1 {
59
- width: 96%; }
60
- .list-group-item.items-2 {
61
- width: 48.3%; }
62
- .list-group-item.items-3 {
63
- width: 48.3%; }
64
- .list-group-item.items-4 {
65
- width: 48.3%; } }
66
-
67
- @media only screen and (min-width: 992px) {
68
- .list-group-item.items-auto {
69
- width: 23.8%; }
70
- .list-group-item.items-1 {
71
- width: 96%; }
72
- .list-group-item.items-2 {
73
- width: 48.3%;
74
- }
75
- .list-group-item.items-3 {
76
- width: 31.333%; }
77
- .list-group-item.items-4 {
78
- width: 23.8%; } }
79
-
80
-
81
- /* controls
35
+ /* plugin controls
82
36
  -------------------------------------------------------------------------------- */
83
37
  .page-load-status, .page-scroll-last {
84
38
  display: none; /* hidden by default */
@@ -97,7 +51,7 @@ span.infinite-scroll-last {
97
51
  padding: 10px 3px;
98
52
  }
99
53
 
100
- /* spinner
54
+ /* plugin spinner
101
55
  -------------------------------------------------------------------------------- */
102
56
  .loader-ellips {
103
57
  font-size: 20px; /* change size here */
@@ -12,4 +12,4 @@
12
12
  # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE
13
13
  # -----------------------------------------------------------------------------
14
14
  */
15
- .list-group-item{width:96%;margin-right:1%!important}@media only screen and (min-width:576px){.list-group-item.items-auto{width:48.3%}.list-group-item.items-1{width:96%}.list-group-item.items-2{width:48.3%}.list-group-item.items-3{width:48.3%}.list-group-item.items-4{width:48.3%}}@media only screen and (min-width:768px){.list-group-item.items-auto{width:31.333%}.list-group-item.items-1{width:96%}.list-group-item.items-2{width:48.3%}.list-group-item.items-3{width:48.3%}.list-group-item.items-4{width:48.3%}}@media only screen and (min-width:992px){.list-group-item.items-auto{width:23.8%}.list-group-item.items-1{width:96%}.list-group-item.items-2{width:48.3%}.list-group-item.items-3{width:31.333%}.list-group-item.items-4{width:23.8%}}.page-load-status,.page-scroll-last{display:none;padding-top:.5rem;border-top:1px dotted #212121;color:#777}span.infinite-scroll-last{border-bottom-width:1px;border-bottom-style:dotted;border-bottom-color:#212121;display:inline-block;margin:0 0 -1px 0;padding:10px 3px}.loader-ellips{font-size:20px;position:relative;width:4em;height:1em;margin:10px auto}.loader-ellips__dot{display:block;width:1em;height:1em;border-radius:.5em;background:#555;position:absolute;animation-duration:.5s;animation-timing-function:ease;animation-iteration-count:infinite}.loader-ellips__dot:nth-child(1),.loader-ellips__dot:nth-child(2){left:0}.loader-ellips__dot:nth-child(3){left:1.5em}.loader-ellips__dot:nth-child(4){left:3em}@keyframes reveal{from{transform:scale(0.001)}to{transform:scale(1)}}@keyframes slide{to{transform:translateX(1.5em)}}.loader-ellips__dot:nth-child(1){animation-name:reveal}.loader-ellips__dot:nth-child(2),.loader-ellips__dot:nth-child(3){animation-name:slide}.loader-ellips__dot:nth-child(4){animation-name:reveal;animation-direction:reverse}
15
+ .page-load-status,.page-scroll-last{display:none;padding-top:.5rem;border-top:1px dotted #212121;color:#777}span.infinite-scroll-last{border-bottom-width:1px;border-bottom-style:dotted;border-bottom-color:#212121;display:inline-block;margin:0 0 -1px 0;padding:10px 3px}.loader-ellips{font-size:20px;position:relative;width:4em;height:1em;margin:10px auto}.loader-ellips__dot{display:block;width:1em;height:1em;border-radius:.5em;background:#555;position:absolute;animation-duration:.5s;animation-timing-function:ease;animation-iteration-count:infinite}.loader-ellips__dot:nth-child(1),.loader-ellips__dot:nth-child(2){left:0}.loader-ellips__dot:nth-child(3){left:1.5em}.loader-ellips__dot:nth-child(4){left:3em}@keyframes reveal{from{transform:scale(0.001)}to{transform:scale(1)}}@keyframes slide{to{transform:translateX(1.5em)}}.loader-ellips__dot:nth-child(1){animation-name:reveal}.loader-ellips__dot:nth-child(2),.loader-ellips__dot:nth-child(3){animation-name:slide}.loader-ellips__dot:nth-child(4){animation-name:reveal;animation-direction:reverse}
@@ -1,188 +1,263 @@
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
- */
15
-
16
- // the semi-colon before function invocation is a SAFETY method against
17
- // concatenated scripts and/or other plugins which may NOT be closed
18
- // properly.
19
- //
20
- ;(function($, window, document, undefined) {
21
-
22
- 'use strict';
23
-
24
- // undefined is used here as the undefined global variable in ECMAScript 3 is
25
- // mutable (ie. it can be changed by someone else). undefined isn't really being
26
- // passed in so we can ensure the value of it is truly undefined. In ES5, undefined
27
- // can no longer be modified.
28
-
29
- // window and document are passed through as local variable rather than global
30
- // as this (slightly) quickens the resolution process and can be more efficiently
31
- // minified (especially when both are regularly referenced in your plugin).
32
-
33
- // Create the defaults once
34
- var pluginName = 'j1Scroll',
35
- defaults = {
36
- type: 'infiniteScroll',
37
- scrollThreshold: 100,
38
- elementScroll: false,
39
- pNum: 2,
40
- pMaxNum: 6,
41
- enable: true,
42
- };
43
-
44
- // Plugin constructor
45
- function Plugin (element, options) {
46
- this.element = element;
47
- this.settings = $.extend( {}, defaults, options);
48
- this.settings.elementID = this.element["id"]
49
- this._defaults = defaults;
50
- this._name = pluginName;
51
-
52
- // call the initializer
53
- this.init(this.settings);
54
- }
55
-
56
- // Avoid Plugin.prototype conflicts
57
- //
58
- $.extend(Plugin.prototype, {
59
- // -----------------------------------------------------------------------
60
- // init: initializer
61
- //
62
- // -----------------------------------------------------------------------
63
- init: function(options) {
64
- var logger = log4javascript.getLogger('j1.core.j1Scroll');
65
-
66
- if ( this.settings.elementScroll ) {
67
- this.scroller = this.element;
68
- } else {
69
- this.scroller = window;
70
- }
71
-
72
- logger.info('\n' + 'initializing core module: started');
73
- logger.info('\n' + 'state: started');
74
-
75
- // initialize infinite scroll
76
- if ( options.type === 'infiniteScroll') {
77
- this.detectScroll(options);
78
- }
79
- },
80
- // -----------------------------------------------------------------------
81
- // bottomReached: detect final scroll position
82
- //
83
- // -----------------------------------------------------------------------
84
- isBottomReached: function (options) {
85
- var _this = this;
86
- let bottom, scrollY;
87
- var clientHeight = $('#' + options.elementID).height();
88
-
89
- if ( _this.settings.elementScroll ) {
90
- var $window = $(window);
91
- var viewport_top = $window.scrollTop();
92
- var viewport_height = $window.height();
93
- var viewport_bottom = viewport_top + viewport_height;
94
- var $elm = $('#' + options.elementID);
95
- var top = $elm.offset().top + clientHeight;
96
- var height = $elm.height();
97
- // bottom = top + height - options.scrollThreshold
98
- bottom = top + height;
99
-
100
- return (top >= viewport_top && top < viewport_bottom) ||
101
- (bottom > viewport_top && bottom <= viewport_bottom) ||
102
- (height > viewport_height && top <= viewport_top && bottom >= viewport_bottom);
103
- } else {
104
- return (window.innerHeight + window.pageYOffset + options.scrollThreshold >= document.body.offsetHeight);
105
- }
106
- },
107
- // -----------------------------------------------------------------------
108
- // detectScroll: EventHandler to load new items for infinite scroll
109
- // if final scroll position reached
110
- // -----------------------------------------------------------------------
111
- detectScroll: function (options) {
112
- var _this = this;
113
- var logger = log4javascript.getLogger('j1.core.j1Scroll.detectScroll');
114
-
115
- logger.info('\n' + 'detectScroll: started');
116
-
117
- window.onscroll = function (ev) {
118
- var bottomReached = _this.isBottomReached(options);
119
- if (bottomReached) _this.getNewPost(options);
120
- };
121
- },
122
- // -----------------------------------------------------------------------
123
- // getNewPost: load/append new items
124
- //
125
- // -----------------------------------------------------------------------
126
- getNewPost: function (options) {
127
- var _this = this;
128
-
129
- if (options.pNum >= options.pMaxNum ) {
130
- return;
131
- }
132
- if (this.enable === false) return false;
133
- this.enable = false;
134
- var xmlhttp = new XMLHttpRequest();
135
- xmlhttp.onreadystatechange = function () {
136
- if (xmlhttp.readyState == XMLHttpRequest.DONE) {
137
- if (xmlhttp.status == 200) {
138
- options.pNum++;
139
- var childItems = _this.getChildItemsByAjaxHTML(options, xmlhttp.responseText);
140
- _this.appendNewItems(childItems);
141
- }
142
- return _this.enable = true;
143
- }
144
- };
145
- xmlhttp.open("GET", location.origin + options.path + options.pNum + '/index.html', true);
146
- xmlhttp.send();
147
- },
148
- // -----------------------------------------------------------------------
149
- // getChildItemsByAjaxHTML:
150
- //
151
- // -----------------------------------------------------------------------
152
- getChildItemsByAjaxHTML: function (options, HTMLText) {
153
- var newHTML = document.createElement('html');
154
-
155
- newHTML.innerHTML = HTMLText;
156
- var childItems = newHTML.querySelectorAll('#' + options.elementID + ' > *');
157
- return childItems;
158
- },
159
- // -----------------------------------------------------------------------
160
- // appendNewItems:
161
- //
162
- // -----------------------------------------------------------------------
163
- appendNewItems: function (items) {
164
- var _this = this;
165
-
166
- items.forEach(function (item) {
167
- _this.element.appendChild(item);
168
- });
169
-
170
- // initialize backdrops
171
- j1.core.createDropCap();
172
- }
173
-
174
- }); // END prototype
175
-
176
- // lightweight plugin wrapper around the constructor,
177
- // preventing multiple instantiations
178
- //
179
- $.fn [pluginName] = function(options) {
180
- return this.each(function() {
181
- if (!$.data( this, "plugin_" + pluginName)) {
182
- $.data(this, "plugin_" +
183
- pluginName, new Plugin(this, options));
184
- }
185
- });
186
- };
187
-
188
- })(jQuery, window, document);
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
+ */
15
+
16
+ // the semi-colon before function invocation is a SAFETY method against
17
+ // concatenated scripts and/or other plugins which may NOT be closed
18
+ // properly.
19
+ //
20
+ ;(function($, window, document, undefined) {
21
+
22
+ 'use strict';
23
+
24
+ // Create the defaults
25
+ var pluginName = 'j1Scroll',
26
+ defaults = {
27
+ type: 'infiniteScroll',
28
+ scrollOffset: 100,
29
+ elementScroll: false,
30
+ firstPage: 2,
31
+ lastPage: false,
32
+ infoLastPage: false,
33
+ loadStatus: false,
34
+ onInit: function (){}, // callback after plugin has initialized
35
+ onBeforeLoad: function (){}, // callback before new items are loaded
36
+ onAfterLoad: function (){} // callback after new items are loaded
37
+ };
38
+
39
+ // Plugin constructor
40
+ function Plugin (element, options) {
41
+ this.element = element;
42
+ this.settings = $.extend( {}, defaults, options);
43
+ this.settings.elementID = '#' + this.element["id"]
44
+
45
+ // call the initializer
46
+ this.init(this.settings);
47
+ }
48
+
49
+ // Avoid Plugin.prototype conflicts
50
+ $.extend(Plugin.prototype, {
51
+ // -------------------------------------------------------------------------
52
+ // init: initializer
53
+ // -------------------------------------------------------------------------
54
+ init: function(options) {
55
+ var logger = log4javascript.getLogger('j1Scroll');
56
+
57
+ logger.info('\n' + 'initializing plugin: started');
58
+ logger.info('\n' + 'state: started');
59
+
60
+ if ( options.elementScroll ) {
61
+ this.scroller = this.element;
62
+ } else {
63
+ this.scroller = window;
64
+ }
65
+
66
+ if (options.loadStatus) {
67
+ 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>';
68
+ $(spinner).insertAfter(options.elementID);
69
+ }
70
+
71
+ if (options.infoLastPage) {
72
+ var message = options.lastPageInfo;
73
+ $(message).insertAfter(options.elementID);
74
+ }
75
+
76
+ // initialize infinite scroll
77
+ if ( options.type === 'infiniteScroll') {
78
+ logger.info('\n' + 'processing mode: infiniteScroll');
79
+ logger.info('\n' + 'loading items from path: ' + options.path + "#");
80
+ logger.info('\n' + 'monitoring element set to: ' + this.scroller);
81
+ this.registerScrollEvent(options);
82
+ }
83
+ logger.info('\n' + 'initializing plugin: finished');
84
+ logger.info('\n' + 'state: finished');
85
+ },
86
+ // -------------------------------------------------------------------------
87
+ // bottomReached: detect final scroll position
88
+ // NOTE: the calculation for BOTTOM position is different for
89
+ // elementScroll and windowScroll. For elementScroll, the
90
+ // trigger isBottomReached is TRUE, if the scroll position has
91
+ // the end of the container PLUS a given scrollOffset.
92
+ // For windowScroll, the trigger isBottomReached is TRUE, if
93
+ // the scroll position has the end of the window MINUS
94
+ // a given scrollOffset.
95
+ // -------------------------------------------------------------------------
96
+ isBottomReached: function (options) {
97
+ var _this = this;
98
+ var bottom, scrollY;
99
+ var clientHeight = $(options.elementID).height();
100
+
101
+ if ( _this.settings.elementScroll ) {
102
+ // check scroll position of the container items are to be added
103
+ var $window = $(window);
104
+ var viewport_top = $window.scrollTop();
105
+ var viewport_height = $window.height();
106
+ var viewport_bottom = viewport_top + viewport_height - options.scrollOffset;
107
+ var $elm = $(options.elementID);
108
+ var top = $elm.offset().top + clientHeight;
109
+ var height = $elm.height();
110
+ bottom = top + height;
111
+
112
+
113
+ return (top >= viewport_top && top < viewport_bottom) ||
114
+ (bottom > viewport_top && bottom <= viewport_bottom) ||
115
+ (height > viewport_height && top <= viewport_top && bottom >= viewport_bottom);
116
+ } else {
117
+ // check scroll position of the (overall) window
118
+ return (window.innerHeight + window.pageYOffset + options.scrollOffset >= document.body.offsetHeight);
119
+ }
120
+ },
121
+ // -------------------------------------------------------------------------
122
+ // detectScroll: EventHandler to load new items for infinite scroll
123
+ // if final scroll position reached
124
+ // -------------------------------------------------------------------------
125
+ registerScrollEvent: function (options) {
126
+ var _this = this;
127
+ var logger = log4javascript.getLogger('j1Scroll');
128
+
129
+ logger.info('\n' + 'scroll event: register');
130
+
131
+ var eventHandler_onscroll = function (event) {
132
+ var options = _this.settings;
133
+
134
+ if (_this.isBottomReached(options)) {
135
+ if (options.firstPage > options.lastPage ) {
136
+ logger.info('\n' + 'last page detected on: ' + options.lastPage);
137
+ window.removeEventListener('scroll', eventHandler_onscroll);
138
+ logger.info('\n' + 'scroll event: removed');
139
+
140
+ if (options.infoLastPage ) {
141
+ _this.infoLastPage(options);
142
+ }
143
+ return false;
144
+ }
145
+ _this.getNewPost(options);
146
+ }
147
+ }
148
+ window.addEventListener('scroll', eventHandler_onscroll);
149
+
150
+ logger.info('\n' + 'scroll event: registered');
151
+ },
152
+ // -------------------------------------------------------------------------
153
+ // getNewPost: load new items (from current path)
154
+ // Note: loader flag prevents to load items if AJAX load in progress
155
+ // is NOT finished
156
+ // -------------------------------------------------------------------------
157
+ getNewPost: function (options) {
158
+ var _this = this;
159
+ var logger = log4javascript.getLogger('j1Scroll');
160
+
161
+ logger.info('\n' + 'trigger loading ');
162
+
163
+ // initialze loader flag
164
+ if (this.itemsLoaded === false) return false;
165
+
166
+ // set loader flag (false == not loaded)
167
+ this.itemsLoaded = false;
168
+
169
+ // display spinner while loading
170
+ if (options.loadStatus) {
171
+ logger.info('\n' + 'show: spinner');
172
+ $('.loader-ellips').show();
173
+ }
174
+
175
+ var xmlhttp = new XMLHttpRequest();
176
+ xmlhttp.onreadystatechange = function () {
177
+ if (xmlhttp.readyState == XMLHttpRequest.DONE) {
178
+ if (xmlhttp.status == 200) {
179
+ options.firstPage++;
180
+ var childItems = _this.getChildItemsByAjaxHTML(options, xmlhttp.responseText);
181
+ _this.appendNewItems(childItems);
182
+
183
+ logger.info('\n' + 'loading new items: successful');
184
+
185
+ // hide the spinner after loading
186
+ if (options.loadStatus) {
187
+ logger.info('\n' + 'hide: spinner');
188
+ $('.loader-ellips').hide();
189
+ }
190
+
191
+ // set loader flag (true == loaded)
192
+ return _this.itemsLoaded = true;
193
+ } else {
194
+ // hide the spinner
195
+ if (options.loadStatus) {
196
+ logger.info('\n' + 'hide: spinner');
197
+ $('.loader-ellips').hide();
198
+ }
199
+
200
+ logger.error('\n' + 'loading new items failed, HTTP response: ' + xmlhttp.status );
201
+ // set loader flag (true == loaded)
202
+ return _this.itemsLoaded = false;
203
+ }
204
+ }
205
+ };
206
+ logger.info('\n' + 'loading new items from path: ' + options.path + options.firstPage);
207
+ xmlhttp.open("GET", location.origin + options.path + options.firstPage + '/index.html', true);
208
+ xmlhttp.send();
209
+
210
+ },
211
+ // -------------------------------------------------------------------------
212
+ // getChildItemsByAjaxHTML: extract items from page loaded
213
+ // -------------------------------------------------------------------------
214
+ getChildItemsByAjaxHTML: function (options, HTMLText) {
215
+ var newHTML = document.createElement('html');
216
+ var logger = log4javascript.getLogger('j1Scroll');
217
+
218
+ logger.info('\n' + 'load new items');
219
+ newHTML.innerHTML = HTMLText;
220
+ var childItems = newHTML.querySelectorAll(options.elementID + ' > *');
221
+ return childItems;
222
+ },
223
+ // -------------------------------------------------------------------------
224
+ // appendNewItems: append items and run post processing
225
+ // -------------------------------------------------------------------------
226
+ appendNewItems: function (items) {
227
+ var _this = this;
228
+ var logger = log4javascript.getLogger('j1Scroll');
229
+
230
+ logger.info('\n' + 'append new items');
231
+ items.forEach(function (item) {
232
+ _this.element.appendChild(item);
233
+ });
234
+
235
+ logger.info('\n' + 'post processing: createDropCap');
236
+ // initialize backdrops
237
+ j1.core.createDropCap();
238
+ },
239
+ // -------------------------------------------------------------------------
240
+ // getNewPost: load/append new items
241
+ // Note: loader flag prevents to load items if AJAX load in progress
242
+ // is NOT finished
243
+ // -------------------------------------------------------------------------
244
+ infoLastPage: function (options) {
245
+ var _this = this;
246
+ var logger = log4javascript.getLogger('j1Scroll');
247
+
248
+ logger.info('\n' + 'show: infoLastPage');
249
+ $('.page-scroll-last').show();
250
+ }
251
+ }); // END prototype
252
+
253
+ // wrapper around the constructor to prevent multiple instantiations
254
+ $.fn [pluginName] = function(options) {
255
+ return this.each(function() {
256
+ if (!$.data( this, "plugin_" + pluginName)) {
257
+ $.data(this, "plugin_" +
258
+ pluginName, new Plugin(this, options));
259
+ }
260
+ });
261
+ };
262
+
263
+ })(jQuery, window, document);
@@ -0,0 +1,16 @@
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
+
16
+ (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()}return 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);return 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 j=this;var i=log4javascript.getLogger("j1Scroll");i.info("\nappend new items");h.forEach(function(k){j.element.appendChild(k)});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);
@@ -85,7 +85,7 @@ div.copied {
85
85
  position: fixed;
86
86
  top: 100px;
87
87
  left: 50%;
88
- width: 300px;
88
+ width: 200px;
89
89
  text-align: center;
90
90
  color: #FAFAFA;
91
91
  background-color: #2196F3;
@@ -12,4 +12,4 @@
12
12
  # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE
13
13
  # -----------------------------------------------------------------------------
14
14
  */
15
- .icons{//display:none;//padding:0 20px 10px 20px;-webkit-column-count:2;-moz-column-count:2;column-count:2;-webkit-column-gap:2rem;-moz-column-gap:2rem;column-gap:2rem}.icons div{line-height:3rem;color:rgba(0,0,0,0.6)}.icons div span{cursor:pointer;font-size:1rem;text-overflow:ellipsis;display:inline-block;max-width:calc(100% - 90px);overflow:hidden;vertical-align:middle;white-space:nowrap;margin-left:.5rem}.icons div code:hover,.icons div span:hover,.icons div i:hover{color:rgba(0,0,0,0.5)}.icons div code:hover{border-color:#2196f3}.icons div code{color:#424242;background-color:#e0e0e0;border:1px solid #9e9e9e;width:80px;margin-left:2px;margin-right:4px;border-radius:4px;display:inline-block;vertical-align:middle;text-align:center;line-height:24px;cursor:pointer}.icons div i{display:inline-block;width:32px;height:24px;margin-right:.5rem;text-align:center;vertical-align:middle;cursor:pointer;line-height:24px}.icons .mdi:before{font-size:24px}div.copied{position:fixed;top:100px;left:50%;width:300px;text-align:center;color:#fafafa;background-color:#2196f3;border:1px solid #0d47a1;padding:10px 15px;border-radius:4px;margin-left:-100px;box-shadow:0 0 10px rgba(0,0,0,0.2)}
15
+ .icons{//display:none;//padding:0 20px 10px 20px;-webkit-column-count:2;-moz-column-count:2;column-count:2;-webkit-column-gap:2rem;-moz-column-gap:2rem;column-gap:2rem}.icons div{line-height:3rem;color:rgba(0,0,0,0.6)}.icons div span{cursor:pointer;font-size:1rem;text-overflow:ellipsis;display:inline-block;max-width:calc(100% - 90px);overflow:hidden;vertical-align:middle;white-space:nowrap;margin-left:.5rem}.icons div code:hover,.icons div span:hover,.icons div i:hover{color:rgba(0,0,0,0.5)}.icons div code:hover{border-color:#2196f3}.icons div code{color:#424242;background-color:#e0e0e0;border:1px solid #9e9e9e;width:80px;margin-left:2px;margin-right:4px;border-radius:4px;display:inline-block;vertical-align:middle;text-align:center;line-height:24px;cursor:pointer}.icons div i{display:inline-block;width:32px;height:24px;margin-right:.5rem;text-align:center;vertical-align:middle;cursor:pointer;line-height:24px}.icons .mdi:before{font-size:24px}div.copied{position:fixed;top:100px;left:50%;width:200px;text-align:center;color:#fafafa;background-color:#2196f3;border:1px solid #0d47a1;padding:10px 15px;border-radius:4px;margin-left:-100px;box-shadow:0 0 10px rgba(0,0,0,0.2)}
@@ -14,10 +14,8 @@
14
14
  */
15
15
  ;(function () {
16
16
 
17
- var icons = {};
17
+ var icons = {};
18
18
  var icon_database = '/assets/data/mdi_icons.json';
19
- var language = document.documentElement.lang;
20
- var responseText;
21
19
 
22
20
  function load_data_database() {
23
21
  // Returns the icon database object
@@ -49,14 +47,6 @@
49
47
  // var reference = document.querySelector("#mdi-icon");
50
48
  // var popper = document.querySelector(".my-popper");
51
49
 
52
- if (language == 'en') {
53
- responseText = 'Copied to Clipboard';
54
- } else if (language == 'de') {
55
- responseText = 'Kopiert zur Zwischenablage';
56
- } else {
57
- responseText = 'Copied to Clipboard';
58
- }
59
-
60
50
  var copyFrom = document.createElement('textarea');
61
51
  copyFrom.setAttribute("style", "position:fixed;opacity:0;top:100px;left:100px;");
62
52
  copyFrom.value = text;
@@ -65,7 +55,7 @@
65
55
  document.execCommand('copy');
66
56
  var copied = document.createElement('div');
67
57
  copied.setAttribute('class', 'copied');
68
- copied.appendChild(document.createTextNode(responseText));
58
+ copied.appendChild(document.createTextNode('Copied to Clipboard'));
69
59
  document.body.appendChild(copied);
70
60
 
71
61
  // Popper currently NOT used
@@ -81,8 +71,8 @@
81
71
  document.body.removeChild(copied);
82
72
  }, 1500);
83
73
  };
84
- // Skip info record 0 (j=1)
85
- for (var j = 1; j < icons.length; j++) {
74
+ // Skip info record 0 (j=1) ???
75
+ for (var j=0; j<icons.length; j++) {
86
76
  var div = document.createElement('div'),
87
77
  i = document.createElement('i');
88
78
  div.setAttribute("id", "mdi-icon");
@@ -118,7 +108,7 @@
118
108
  };
119
109
  })(icons[j]);
120
110
 
121
- document.getElementById('icons').appendChild(div);
111
+ document.getElementById('mdi-icons').appendChild(div);
122
112
  }
123
113
  });
124
114