j1-template 2020.0.22 → 2020.0.24

Sign up to get free protection for your applications and to get access to all the features.
Files changed (266) hide show
  1. checksums.yaml +4 -4
  2. data/_includes/themes/j1/layouts/content_generator_page.html +1 -1
  3. data/_includes/themes/j1/layouts/content_generator_post.html +63 -161
  4. data/_includes/themes/j1/modules/connectors/ad/google-adsense.html +14 -0
  5. data/_includes/themes/j1/modules/connectors/analytic/google-analytics.html +1 -3
  6. data/_includes/themes/j1/modules/connectors/comment/disqus.html +37 -24
  7. data/_includes/themes/j1/modules/navigator/generator.html +8 -3
  8. data/_includes/themes/j1/modules/navigator/procedures/topsearch.proc +36 -26
  9. data/_includes/themes/j1/procedures/layouts/module_writer.proc +1 -1
  10. data/_includes/themes/j1/procedures/posts/create_series_header.proc +9 -5
  11. data/assets/data/banner.html +1 -1
  12. data/assets/data/fam.html +124 -0
  13. data/assets/data/mmenu_sidebar.html +3 -3
  14. data/assets/data/panel.html +9 -9
  15. data/assets/data/quicklinks.html +13 -13
  16. data/assets/error_pages/HTTP204.html +1 -0
  17. data/assets/error_pages/HTTP400.html +3 -2
  18. data/assets/error_pages/HTTP401.html +3 -2
  19. data/assets/error_pages/HTTP403.html +3 -2
  20. data/assets/error_pages/HTTP404.html +3 -2
  21. data/assets/error_pages/HTTP500.html +3 -2
  22. data/assets/error_pages/HTTP501.html +3 -2
  23. data/assets/error_pages/HTTP502.html +3 -2
  24. data/assets/error_pages/HTTP503.html +3 -2
  25. data/assets/error_pages/HTTP520.html +3 -2
  26. data/assets/error_pages/HTTP521.html +3 -2
  27. data/assets/error_pages/HTTP533.html +3 -2
  28. data/assets/themes/j1/adapter/js/{ssm.js → fam.js} +248 -138
  29. data/assets/themes/j1/adapter/js/framer.js +72 -56
  30. data/assets/themes/j1/adapter/js/gallery_customizer.js +2 -1
  31. data/assets/themes/j1/adapter/js/j1.js +8 -2
  32. data/assets/themes/j1/adapter/js/{searcher.js → lunr_search.js} +68 -65
  33. data/assets/themes/j1/adapter/js/toccer.js +62 -30
  34. data/assets/themes/j1/core/css/bootstrap.css +7154 -0
  35. data/assets/themes/j1/core/css/bootstrap.min.css +6 -0
  36. data/assets/themes/j1/core/css/custom.scss +28 -0
  37. data/assets/themes/j1/core/css/globals.css +14523 -0
  38. data/assets/themes/j1/core/css/globals.min.css +1 -0
  39. data/assets/themes/j1/core/css/globals.scss +28 -0
  40. data/assets/themes/j1/core/css/theme_extensions.css +11558 -0
  41. data/assets/themes/j1/core/css/theme_extensions.min.css +1 -0
  42. data/assets/themes/j1/core/css/themes/bootstrap/bootstrap.css +7 -4
  43. data/assets/themes/j1/core/css/themes/bootstrap/bootstrap.min.css +2 -2
  44. data/assets/themes/j1/core/css/themes/uno-dark/bootstrap.css +7 -4
  45. data/assets/themes/j1/core/css/themes/uno-dark/bootstrap.min.css +2 -2
  46. data/assets/themes/j1/core/css/themes/uno-light/bootstrap.css +514 -417
  47. data/assets/themes/j1/core/css/themes/uno-light/bootstrap.min.css +2 -2
  48. data/assets/themes/j1/core/css/uno.css +11823 -0
  49. data/assets/themes/j1/core/css/uno.min.css +1 -0
  50. data/assets/themes/j1/core/css/uno.scss +28 -0
  51. data/assets/themes/j1/core/css/vendor.css +5 -4
  52. data/assets/themes/j1/core/css/vendor.min.css +1 -1
  53. data/assets/themes/j1/core/css/vendor.scss +28 -0
  54. data/assets/themes/j1/core/js/template.js +6 -11
  55. data/assets/themes/j1/core/js/template.js.map +1 -1
  56. data/assets/themes/j1/core/js/template.min.js +1 -1
  57. data/assets/themes/j1/modules/bmd/js/bootstrap-material-design.js +6 -0
  58. data/assets/themes/j1/modules/cash/js/cash.js +1374 -0
  59. data/assets/themes/j1/modules/cash/js/cash.min.js +42 -0
  60. data/assets/themes/j1/modules/fam/css/uno/fam.css +369 -0
  61. data/assets/themes/j1/modules/fam/js/fam.js +477 -0
  62. data/assets/themes/j1/modules/iframeResizer/examples/frame.nested.html +1 -1
  63. data/assets/themes/j1/modules/iframeResizer/js/{iframeResizer.js → resizer.js} +0 -0
  64. data/assets/themes/j1/modules/iframeResizer/js/{iframeResizer.map → resizer.map} +0 -0
  65. data/assets/themes/j1/modules/iframeResizer/js/{iframeResizer.min.js → resizer.min.js} +0 -0
  66. data/assets/themes/j1/modules/jquery/js/require.js +2145 -0
  67. data/assets/themes/j1/modules/jquery/js/require.min.js +5 -0
  68. data/assets/themes/j1/modules/lunrSearch/css/lunr_search.css +32 -0
  69. data/assets/themes/j1/modules/lunrSearch/css/lunr_search.min.css +25 -0
  70. data/assets/themes/j1/modules/lunrSearch/js/dateformat.js +125 -0
  71. data/assets/themes/j1/modules/lunrSearch/js/dateformat.min.js +14 -0
  72. data/assets/themes/j1/modules/lunrSearch/js/lunr.js +3475 -0
  73. data/assets/themes/j1/modules/lunrSearch/js/lunr.min.js +51 -0
  74. data/assets/themes/j1/modules/lunrSearch/js/lunr_search.js +184 -0
  75. data/assets/themes/j1/modules/lunrSearch/js/lunr_search.min.js +17 -0
  76. data/assets/themes/j1/modules/lunrSearch/js/mustache.js +772 -0
  77. data/assets/themes/j1/modules/lunrSearch/js/mustache.min.js +772 -0
  78. data/assets/themes/j1/modules/lunrSearch/js/uri.js +2340 -0
  79. data/assets/themes/j1/modules/lunrSearch/js/uri.min.js +93 -0
  80. data/assets/themes/j1/modules/materialize/js/anime.js +1283 -0
  81. data/assets/themes/j1/modules/materialize/js/anime.min.js +34 -0
  82. data/assets/themes/j1/modules/materialize/js/autocomplete.js +450 -0
  83. data/assets/themes/j1/modules/materialize/js/buttons.js +409 -0
  84. data/assets/themes/j1/modules/materialize/js/cards.js +40 -0
  85. data/assets/themes/j1/modules/materialize/js/carousel.js +717 -0
  86. data/assets/themes/j1/modules/materialize/js/cash-dom.js +1044 -0
  87. data/assets/themes/j1/modules/materialize/js/cash.js +960 -0
  88. data/assets/themes/j1/modules/materialize/js/characterCounter.js +136 -0
  89. data/assets/themes/j1/modules/materialize/js/chips.js +481 -0
  90. data/assets/themes/j1/modules/materialize/js/collapsible.js +275 -0
  91. data/assets/themes/j1/modules/materialize/js/component.js +44 -0
  92. data/assets/themes/j1/modules/materialize/js/datepicker.js +975 -0
  93. data/assets/themes/j1/modules/materialize/js/dropdown.js +617 -0
  94. data/assets/themes/j1/modules/materialize/js/forms.js +275 -0
  95. data/assets/themes/j1/modules/materialize/js/global.js +427 -0
  96. data/assets/themes/j1/modules/materialize/js/materialbox.js +453 -0
  97. data/assets/themes/j1/modules/materialize/js/modal.js +382 -0
  98. data/assets/themes/j1/modules/materialize/js/parallax.js +138 -0
  99. data/assets/themes/j1/modules/materialize/js/pushpin.js +145 -0
  100. data/assets/themes/j1/modules/materialize/js/range.js +263 -0
  101. data/assets/themes/j1/modules/materialize/js/ripple.js +335 -0
  102. data/assets/themes/j1/modules/materialize/js/scrollspy.js +295 -0
  103. data/assets/themes/j1/modules/materialize/js/select.js +432 -0
  104. data/assets/themes/j1/modules/materialize/js/sidenav.js +580 -0
  105. data/assets/themes/j1/modules/materialize/js/slider.js +359 -0
  106. data/assets/themes/j1/modules/materialize/js/tabs.js +402 -0
  107. data/assets/themes/j1/modules/materialize/js/tapTarget.js +314 -0
  108. data/assets/themes/j1/modules/materialize/js/timepicker.js +647 -0
  109. data/assets/themes/j1/modules/materialize/js/toasts.js +310 -0
  110. data/assets/themes/j1/modules/materialize/js/tooltip.js +303 -0
  111. data/assets/themes/j1/modules/materialize/js/waves.js +335 -0
  112. data/assets/themes/j1/modules/materialize/scss/components/_badges.scss +55 -0
  113. data/assets/themes/j1/modules/materialize/scss/components/_buttons.scss +322 -0
  114. data/assets/themes/j1/modules/materialize/scss/components/_cards.scss +195 -0
  115. data/assets/themes/j1/modules/materialize/scss/components/_carousel.scss +90 -0
  116. data/assets/themes/j1/modules/materialize/scss/components/_chips.scss +90 -0
  117. data/assets/themes/j1/modules/materialize/scss/components/_collapsible.scss +91 -0
  118. data/assets/themes/j1/modules/materialize/scss/components/_color-classes.scss +32 -0
  119. data/assets/themes/j1/modules/materialize/scss/components/_color-variables.scss +370 -0
  120. data/assets/themes/j1/modules/materialize/scss/components/_datepicker.scss +191 -0
  121. data/assets/themes/j1/modules/materialize/scss/components/_dropdown.scss +85 -0
  122. data/assets/themes/j1/modules/materialize/scss/components/_global.scss +769 -0
  123. data/assets/themes/j1/modules/materialize/scss/components/_grid.scss +156 -0
  124. data/assets/themes/j1/modules/materialize/scss/components/_icons-material-design.scss +5 -0
  125. data/assets/themes/j1/modules/materialize/scss/components/_materialbox.scss +43 -0
  126. data/assets/themes/j1/modules/materialize/scss/components/_modal.scss +94 -0
  127. data/assets/themes/j1/modules/materialize/scss/components/_navbar.scss +208 -0
  128. data/assets/themes/j1/modules/materialize/scss/components/_normalize.scss +447 -0
  129. data/assets/themes/j1/modules/materialize/scss/components/_preloader.scss +334 -0
  130. data/assets/themes/j1/modules/materialize/scss/components/_pulse.scss +34 -0
  131. data/assets/themes/j1/modules/materialize/scss/components/_sidenav.scss +216 -0
  132. data/assets/themes/j1/modules/materialize/scss/components/_slider.scss +92 -0
  133. data/assets/themes/j1/modules/materialize/scss/components/_table_of_contents.scss +33 -0
  134. data/assets/themes/j1/modules/materialize/scss/components/_tabs.scss +99 -0
  135. data/assets/themes/j1/modules/materialize/scss/components/_tapTarget.scss +103 -0
  136. data/assets/themes/j1/modules/materialize/scss/components/_timepicker.scss +183 -0
  137. data/assets/themes/j1/modules/materialize/scss/components/_toast.scss +58 -0
  138. data/assets/themes/j1/modules/materialize/scss/components/_tooltip.scss +32 -0
  139. data/assets/themes/j1/modules/materialize/scss/components/_transitions.scss +13 -0
  140. data/assets/themes/j1/modules/materialize/scss/components/_typography.scss +60 -0
  141. data/assets/themes/j1/modules/materialize/scss/components/_variables.scss +349 -0
  142. data/assets/themes/j1/modules/materialize/scss/components/_waves.scss +114 -0
  143. data/assets/themes/j1/modules/materialize/scss/components/forms/_checkboxes.scss +200 -0
  144. data/assets/themes/j1/modules/materialize/scss/components/forms/_file-input.scss +44 -0
  145. data/assets/themes/j1/modules/materialize/scss/components/forms/_forms.scss +22 -0
  146. data/assets/themes/j1/modules/materialize/scss/components/forms/_input-fields.scss +354 -0
  147. data/assets/themes/j1/modules/materialize/scss/components/forms/_radio-buttons.scss +115 -0
  148. data/assets/themes/j1/modules/materialize/scss/components/forms/_range.scss +161 -0
  149. data/assets/themes/j1/modules/materialize/scss/components/forms/_select.scss +180 -0
  150. data/assets/themes/j1/modules/materialize/scss/components/forms/_switches.scss +89 -0
  151. data/assets/themes/j1/modules/materialize/scss/materialize.scss +41 -0
  152. data/assets/themes/j1/modules/{bsThemeSwitcher → themeSwitcher}/js/switcher.js +0 -0
  153. data/assets/themes/j1/modules/{bsThemeSwitcher → themeSwitcher}/js/switcher.min.js +0 -0
  154. data/lib/j1/version.rb +1 -1
  155. data/lib/starter_web/Gemfile +12 -16
  156. data/lib/starter_web/_config.yml +95 -21
  157. data/lib/starter_web/_data/blocks/banner.yml +1 -1
  158. data/lib/starter_web/_data/blocks/panel.yml +6 -6
  159. data/lib/starter_web/_data/j1_config.yml +7 -6
  160. data/lib/starter_web/_data/layouts/home.yml +13 -3
  161. data/lib/starter_web/_data/layouts/page.yml +10 -0
  162. data/lib/starter_web/_data/layouts/post.yml +10 -0
  163. data/lib/starter_web/_data/modules/defaults/{ssm.yml → fam.yml} +12 -15
  164. data/lib/starter_web/_data/modules/defaults/lunr_search.yml +171 -0
  165. data/lib/starter_web/_data/modules/defaults/navigator.yml +4 -4
  166. data/lib/starter_web/_data/modules/defaults/toccer.yml +4 -2
  167. data/lib/starter_web/_data/modules/fam.yml +158 -0
  168. data/lib/starter_web/_data/modules/{back2top.yml → lunr_search.yml} +15 -9
  169. data/lib/starter_web/_data/modules/navigator.yml +2 -2
  170. data/lib/starter_web/_data/modules/navigator_menu.yml +57 -6
  171. data/lib/starter_web/_data/modules/toccer.yml +0 -73
  172. data/lib/starter_web/_data/resources.yml +151 -104
  173. data/lib/starter_web/_includes/attributes.asciidoc +2 -2
  174. data/lib/starter_web/_includes/breadcrumbs.html +11 -0
  175. data/lib/starter_web/_plugins/debug.rb +0 -1
  176. data/lib/starter_web/_plugins/filters.rb +0 -1
  177. data/lib/starter_web/_plugins/{lorem-inline.rb → lorem_inline.rb} +1 -2
  178. data/lib/starter_web/_plugins/lunr_index.rb +313 -0
  179. data/lib/starter_web/_plugins/prettify.rb +0 -3
  180. data/lib/starter_web/_plugins/simple_search_filter.rb +0 -1
  181. data/lib/starter_web/_plugins/symlink_watcher.rb +2 -3
  182. data/lib/starter_web/assets/images/modules/attics/banner/lunr-banner-1280x800.jpg +0 -0
  183. data/lib/starter_web/assets/images/pages/winlogbeat/coordinate-map.png +0 -0
  184. data/lib/starter_web/assets/images/pages/winlogbeat/kibana-powershell.jpg +0 -0
  185. data/lib/starter_web/assets/images/pages/winlogbeat/option_ignore_outgoing.png +0 -0
  186. data/lib/starter_web/assets/images/pages/winlogbeat/winlogbeat-dashboard.png +0 -0
  187. data/lib/starter_web/collections/posts/public/featured/_posts/2018-05-01-confusion-about-base-url.adoc +2 -4
  188. data/lib/starter_web/collections/posts/public/featured/_posts/2019-05-01-top-open-source-static-site-generators.adoc +4 -2
  189. data/lib/starter_web/collections/posts/public/featured/_posts/2019-06-01-about-cookies.adoc +3 -2
  190. data/lib/starter_web/collections/posts/public/series/_posts/2018-11-01-docker-using-shared-folders.adoc +5 -4
  191. data/lib/starter_web/collections/posts/public/series/_posts/2020-01-01-post-test-series.adoc +144 -0
  192. data/lib/starter_web/collections/posts/public/series/_posts/2020-01-02-post-test-series.adoc +146 -0
  193. data/lib/starter_web/collections/posts/public/series/_posts/2020-01-03-post-test-series.adoc +146 -0
  194. data/lib/starter_web/collections/posts/public/series/_posts/2020-01-04-post-test-series.adoc +146 -0
  195. data/lib/starter_web/collections/posts/public/test_posts/_posts/2020-09-11-test_post.adoc +2 -4
  196. data/lib/starter_web/collections/posts/public/wikipedia/_posts/2016-11-20-minneapolis.adoc +2 -3
  197. data/lib/starter_web/collections/posts/public/wikipedia/_posts/2016-11-24-narcisse-snake-dens.adoc +2 -7
  198. data/lib/starter_web/collections/posts/public/wikipedia/_posts/2016-11-26-columbia-river.adoc +2 -6
  199. data/lib/starter_web/index.html +16 -10
  200. data/lib/starter_web/package.json +5 -2
  201. data/lib/starter_web/pages/public/about/about_site.adoc +0 -2
  202. data/lib/starter_web/pages/public/about/become_a_patron.adoc +1 -3
  203. data/lib/starter_web/pages/public/blog/navigator/archive.html +8 -1
  204. data/lib/starter_web/pages/public/blog/navigator/archive/categoryview.html +7 -3
  205. data/lib/starter_web/pages/public/blog/navigator/archive/dateview.html +8 -1
  206. data/lib/starter_web/pages/public/blog/navigator/archive/tagview.html +7 -2
  207. data/lib/starter_web/pages/public/blog/navigator/index.html +6 -2
  208. data/lib/starter_web/pages/public/learn/kickstarter/web_in_a_day/100_meet_and_greet_jekyll.adoc +3 -4
  209. data/lib/starter_web/pages/public/learn/kickstarter/web_in_a_day/200_preparations.adoc +3 -4
  210. data/lib/starter_web/pages/public/learn/kickstarter/web_in_a_day/300_first_awesome_web.adoc +3 -4
  211. data/lib/starter_web/pages/public/learn/roundtrip/100_present_images.adoc +25 -20
  212. data/lib/starter_web/pages/public/learn/roundtrip/100_present_videos.adoc +14 -12
  213. data/lib/starter_web/pages/public/learn/roundtrip/200_typography.adoc +20 -20
  214. data/lib/starter_web/pages/public/learn/roundtrip/300_icon_fonts.adoc +13 -8
  215. data/lib/starter_web/pages/public/learn/roundtrip/400_asciidoc_extensions.adoc +14 -9
  216. data/lib/starter_web/pages/public/learn/roundtrip/410_bs_modals_extentions.adoc +9 -6
  217. data/lib/starter_web/pages/public/learn/roundtrip/420_responsive_tables_extensions.adoc +62 -8
  218. data/lib/starter_web/pages/public/learn/roundtrip/500_themes.adoc +9 -7
  219. data/lib/starter_web/pages/public/learn/roundtrip/600_lunr.adoc +237 -0
  220. data/lib/starter_web/pages/public/learn/roundtrip/610_fam.adoc +302 -0
  221. data/lib/starter_web/pages/public/learn/where_to_go.adoc +3 -7
  222. data/lib/starter_web/pages/public/legal/de/100_impress.adoc +3 -2
  223. data/lib/starter_web/pages/public/legal/de/200_terms_of_use.adoc +2 -1
  224. data/lib/starter_web/pages/public/legal/de/300_privacy.adoc +2 -1
  225. data/lib/starter_web/pages/public/legal/de/400_license_agreement.adoc +2 -1
  226. data/lib/starter_web/pages/public/legal/de/500_support.adoc +2 -1
  227. data/lib/starter_web/pages/public/legal/en/000_copyright.adoc +30 -27
  228. data/lib/starter_web/pages/public/legal/en/100_impress.adoc +8 -5
  229. data/lib/starter_web/pages/public/legal/en/200_terms_of_use.adoc +12 -8
  230. data/lib/starter_web/pages/public/legal/en/300_privacy.adoc +7 -0
  231. data/lib/starter_web/pages/public/legal/en/400_license_agreement.adoc +8 -1
  232. data/lib/starter_web/pages/public/legal/en/500_support.adoc +8 -1
  233. data/lib/starter_web/pages/public/previewer/bootstrap_theme.adoc +3 -1
  234. data/lib/starter_web/pages/public/previewer/iframer.adoc +36 -28
  235. data/lib/starter_web/pages/public/previewer/justified_gallery.html +2 -1
  236. data/lib/starter_web/pages/public/previewer/mdi_icons_preview.adoc +2 -1
  237. data/lib/starter_web/pages/public/previewer/rouge.adoc +4 -2
  238. data/lib/starter_web/pages/public/previewer/twitter_emoji_preview.adoc +2 -1
  239. data/lib/starter_web/pages/public/test_pages/breadcrumbs_tester.adoc +62 -0
  240. data/lib/starter_web/pages/public/test_pages/deck_of_posts.adoc +3 -0
  241. data/lib/starter_web/pages/public/test_pages/floating_actions_button.adoc +523 -0
  242. data/lib/starter_web/pages/public/test_pages/floating_ad.adoc +1 -0
  243. data/lib/starter_web/pages/public/test_pages/floating_div.adoc +1 -0
  244. data/lib/starter_web/pages/public/test_pages/lunr_tester.adoc +89 -0
  245. data/lib/starter_web/pages/public/test_pages/nav_pagination_tester.adoc +1 -0
  246. data/lib/starter_web/pages/public/test_pages/page_attribute_tester.adoc +1 -0
  247. data/lib/starter_web/pages/public/test_pages/responsive_images.adoc +3 -2
  248. data/lib/starter_web/pages/public/test_pages/responsive_tables.adoc +1 -0
  249. data/lib/starter_web/pages/public/test_pages/toccer_tester.adoc +2245 -0
  250. data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
  251. data/lib/starter_web/utilsrv/package.json +1 -1
  252. metadata +137 -29
  253. data/assets/data/search.json +0 -165
  254. data/assets/data/ssm.html +0 -242
  255. data/assets/themes/j1/adapter/js/back2top.js +0 -231
  256. data/assets/themes/j1/modules/jekyllSearch/js/simple-jekyll-search.js +0 -468
  257. data/assets/themes/j1/modules/jekyllSearch/js/simple-jekyll-search.min.js +0 -6
  258. data/assets/themes/j1/modules/tocbot/css/theme/uno.css +0 -95
  259. data/assets/themes/j1/modules/tocbot/css/theme/uno.min.css +0 -15
  260. data/assets/themes/j1/modules/tocbot/css/tocbot.css +0 -75
  261. data/assets/themes/j1/modules/tocbot/css/tocbot.min.css +0 -19
  262. data/assets/themes/j1/modules/tocbot/js/tocbot.js +0 -19
  263. data/assets/themes/j1/modules/tocbot/js/tocbot.min.js +0 -19
  264. data/lib/starter_web/_data/modules/defaults/back2top.yml +0 -146
  265. data/lib/starter_web/_data/modules/defaults/stickybits.yml +0 -36
  266. data/lib/starter_web/_data/modules/ssm.yml +0 -142
@@ -0,0 +1,42 @@
1
+ /* MIT https://github.com/fabiospampinato/cash */
2
+ (function(){
3
+ 'use strict';var e={"class":"className",contenteditable:"contentEditable","for":"htmlFor",readonly:"readOnly",maxlength:"maxLength",tabindex:"tabIndex",colspan:"colSpan",rowspan:"rowSpan",usemap:"useMap"};function aa(a,b){try{return a(b)}catch(c){return b}}
4
+ var k=document,m=window,ba=k.documentElement,n=k.createElement.bind(k),ca=n("div"),p=n("table"),da=n("tbody"),ea=n("tr"),q=Array.isArray,r=Array.prototype,fa=r.concat,t=r.filter,ha=r.indexOf,ia=r.map,ja=r.push,ka=r.slice,u=r.some,la=r.splice,ma=/^#(?:[\w-]|\\.|[^\x00-\xa0])*$/,na=/^\.(?:[\w-]|\\.|[^\x00-\xa0])*$/,oa=/<.+>/,pa=/^\w+$/;function v(a,b){return a&&(w(b)||x(b))?na.test(a)?b.getElementsByClassName(a.slice(1)):pa.test(a)?b.getElementsByTagName(a):b.querySelectorAll(a):[]}
5
+ var B=function(){function a(a,c){if(a){if(a instanceof B)return a;var b=a;if(C(a)){if(b=(c instanceof B?c[0]:c)||k,b=ma.test(a)?b.getElementById(a.slice(1)):oa.test(a)?qa(a):v(a,b),!b)return}else if(D(a))return this.ready(a);if(b.nodeType||b===m)b=[b];this.length=b.length;a=0;for(c=this.length;a<c;a++)this[a]=b[a]}}a.prototype.init=function(b,c){return new a(b,c)};return a}(),E=B.prototype,F=E.init;F.fn=F.prototype=E;E.length=0;E.splice=la;"function"===typeof Symbol&&(E[Symbol.iterator]=r[Symbol.iterator]);
6
+ E.map=function(a){return F(fa.apply([],ia.call(this,function(b,c){return a.call(b,c,b)})))};E.slice=function(a,b){return F(ka.call(this,a,b))};var ra=/-([a-z])/g;function G(a){return a.replace(ra,function(a,c){return c.toUpperCase()})}F.guid=1;function sa(a,b){var c=a&&(a.matches||a.webkitMatchesSelector||a.msMatchesSelector);return!!c&&!!b&&c.call(a,b)}function H(a){return!!a&&a===a.window}function w(a){return!!a&&9===a.nodeType}function x(a){return!!a&&1===a.nodeType}
7
+ function D(a){return"function"===typeof a}function C(a){return"string"===typeof a}function ta(a){return!isNaN(parseFloat(a))&&isFinite(a)}function I(a){if("object"!==typeof a||null===a)return!1;a=Object.getPrototypeOf(a);return null===a||a===Object.prototype}F.isWindow=H;F.isFunction=D;F.isArray=q;F.isNumeric=ta;F.isPlainObject=I;E.get=function(a){if(void 0===a)return ka.call(this);a=Number(a);return this[0>a?a+this.length:a]};E.eq=function(a){return F(this.get(a))};E.first=function(){return this.eq(0)};
8
+ E.last=function(){return this.eq(-1)};function J(a,b,c){if(c)for(c=a.length;c--&&!1!==b.call(a[c],c,a[c]););else if(I(a)){var d=Object.keys(a);c=0;for(var h=d.length;c<h;c++){var f=d[c];if(!1===b.call(a[f],f,a[f]))break}}else for(c=0,h=a.length;c<h&&!1!==b.call(a[c],c,a[c]);c++);return a}F.each=J;E.each=function(a){return J(this,a)};E.prop=function(a,b){if(a){if(C(a))return a=e[a]||a,2>arguments.length?this[0]&&this[0][a]:this.each(function(c,h){h[a]=b});for(var c in a)this.prop(c,a[c]);return this}};
9
+ E.removeProp=function(a){return this.each(function(b,c){delete c[e[a]||a]})};function K(){for(var a=[],b=0;b<arguments.length;b++)a[b]=arguments[b];b="boolean"===typeof a[0]?a.shift():!1;var c=a.shift(),d=a.length;if(!c)return{};if(!d)return K(b,F,c);for(var h=0;h<d;h++){var f=a[h],g;for(g in f)b&&(q(f[g])||I(f[g]))?(c[g]&&c[g].constructor===f[g].constructor||(c[g]=new f[g].constructor),K(b,c[g],f[g])):c[g]=f[g]}return c}F.extend=K;E.extend=function(a){return K(E,a)};
10
+ function L(a){return C(a)?function(b,c){return sa(c,a)}:D(a)?a:a instanceof B?function(b,c){return a.is(c)}:a?function(b,c){return c===a}:function(){return!1}}E.filter=function(a){var b=L(a);return F(t.call(this,function(a,d){return b.call(a,d,a)}))};function M(a,b){return b?a.filter(b):a}var ua=/\S+/g;function N(a){return C(a)?a.match(ua)||[]:[]}E.hasClass=function(a){return!!a&&u.call(this,function(b){return x(b)&&b.classList.contains(a)})};
11
+ E.removeAttr=function(a){var b=N(a);return this.each(function(a,d){x(d)&&J(b,function(a,b){d.removeAttribute(b)})})};E.attr=function(a,b){if(a){if(C(a)){if(2>arguments.length){if(!this[0]||!x(this[0]))return;var c=this[0].getAttribute(a);return null===c?void 0:c}return void 0===b?this:null===b?this.removeAttr(a):this.each(function(c,h){x(h)&&h.setAttribute(a,b)})}for(c in a)this.attr(c,a[c]);return this}};
12
+ E.toggleClass=function(a,b){var c=N(a),d=void 0!==b;return this.each(function(a,f){x(f)&&J(c,function(a,c){d?b?f.classList.add(c):f.classList.remove(c):f.classList.toggle(c)})})};E.addClass=function(a){return this.toggleClass(a,!0)};E.removeClass=function(a){return arguments.length?this.toggleClass(a,!1):this.attr("class","")};
13
+ function O(a,b,c,d){for(var h=[],f=D(b),g=d&&L(d),y=0,z=a.length;y<z;y++)if(f){var l=b(a[y]);l.length&&ja.apply(h,l)}else for(l=a[y][b];!(null==l||d&&g(-1,l));)h.push(l),l=c?l[b]:null;return h}function P(a){return 1<a.length?t.call(a,function(a,c,d){return ha.call(d,a)===c}):a}F.unique=P;E.add=function(a,b){return F(P(this.get().concat(F(a,b).get())))};function Q(a,b,c){if(x(a)){var d=m.getComputedStyle(a,null);return c?d.getPropertyValue(b)||void 0:d[b]||a.style[b]}}
14
+ function R(a,b){return parseInt(Q(a,b),10)||0}var S=/^--/,T={},va=ca.style,wa=["webkit","moz","ms"];function xa(a,b){void 0===b&&(b=S.test(a));if(b)return a;if(!T[a]){b=G(a);var c=""+b[0].toUpperCase()+b.slice(1);b=(b+" "+wa.join(c+" ")+c).split(" ");J(b,function(b,c){if(c in va)return T[a]=c,!1})}return T[a]}
15
+ var ya={animationIterationCount:!0,columnCount:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0};function za(a,b,c){void 0===c&&(c=S.test(a));return c||ya[a]||!ta(b)?b:b+"px"}
16
+ E.css=function(a,b){if(C(a)){var c=S.test(a);a=xa(a,c);if(2>arguments.length)return this[0]&&Q(this[0],a,c);if(!a)return this;b=za(a,b,c);return this.each(function(d,f){x(f)&&(c?f.style.setProperty(a,b):f.style[a]=b)})}for(var d in a)this.css(d,a[d]);return this};var Aa=/^\s+|\s+$/;function Ba(a,b){a=a.dataset[b]||a.dataset[G(b)];return Aa.test(a)?a:aa(JSON.parse,a)}
17
+ E.data=function(a,b){if(!a){if(!this[0])return;var c={},d;for(d in this[0].dataset)c[d]=Ba(this[0],d);return c}if(C(a))return 2>arguments.length?this[0]&&Ba(this[0],a):void 0===b?this:this.each(function(c,d){c=b;c=aa(JSON.stringify,c);d.dataset[G(a)]=c});for(d in a)this.data(d,a[d]);return this};function Ca(a,b){var c=a.documentElement;return Math.max(a.body["scroll"+b],c["scroll"+b],a.body["offset"+b],c["offset"+b],c["client"+b])}
18
+ function Da(a,b){return R(a,"border"+(b?"Left":"Top")+"Width")+R(a,"padding"+(b?"Left":"Top"))+R(a,"padding"+(b?"Right":"Bottom"))+R(a,"border"+(b?"Right":"Bottom")+"Width")}
19
+ J([!0,!1],function(a,b){J(["Width","Height"],function(a,d){E[(b?"outer":"inner")+d]=function(c){if(this[0])return H(this[0])?b?this[0]["inner"+d]:this[0].document.documentElement["client"+d]:w(this[0])?Ca(this[0],d):this[0][(b?"offset":"client")+d]+(c&&b?R(this[0],"margin"+(a?"Top":"Left"))+R(this[0],"margin"+(a?"Bottom":"Right")):0)}})});
20
+ J(["Width","Height"],function(a,b){var c=b.toLowerCase();E[c]=function(d){if(!this[0])return void 0===d?void 0:this;if(!arguments.length)return H(this[0])?this[0].document.documentElement["client"+b]:w(this[0])?Ca(this[0],b):this[0].getBoundingClientRect()[c]-Da(this[0],!a);var h=parseInt(d,10);return this.each(function(b,d){x(d)&&(b=Q(d,"boxSizing"),d.style[c]=za(c,h+("border-box"===b?Da(d,!a):0)))})}});var U={};
21
+ E.toggle=function(a){return this.each(function(b,c){if(x(c))if(void 0===a?"none"===Q(c,"display"):a){if(c.style.display=c.___cd||"","none"===Q(c,"display")){b=c.style;c=c.tagName;if(U[c])c=U[c];else{var d=n(c);k.body.insertBefore(d,null);var h=Q(d,"display");k.body.removeChild(d);c=U[c]="none"!==h?h:"block"}b.display=c}}else c.___cd=Q(c,"display"),c.style.display="none"})};E.hide=function(){return this.toggle(!1)};E.show=function(){return this.toggle(!0)};
22
+ function Ea(a,b){return!b||!u.call(b,function(b){return 0>a.indexOf(b)})}var V={focus:"focusin",blur:"focusout"},W={mouseenter:"mouseover",mouseleave:"mouseout"},Fa=/^(mouse|pointer|contextmenu|drag|drop|click|dblclick)/i;function Ga(a,b,c,d,h){var f=a.___ce=a.___ce||{};f[b]=f[b]||[];f[b].push([c,d,h]);a.addEventListener(b,h)}function X(a){a=a.split(".");return[a[0],a.slice(1).sort()]}
23
+ function Y(a,b,c,d,h){var f=a.___ce=a.___ce||{};if(b)f[b]&&(f[b]=f[b].filter(function(f){var g=f[0],z=f[1];f=f[2];if(h&&f.guid!==h.guid||!Ea(g,c)||d&&d!==z)return!0;a.removeEventListener(b,f)}));else for(b in f)Y(a,b,c,d,h)}
24
+ E.off=function(a,b,c){var d=this;if(void 0===a)this.each(function(a,b){(x(b)||w(b)||H(b))&&Y(b)});else if(C(a))D(b)&&(c=b,b=""),J(N(a),function(a,h){a=X(h);h=a[0];var f=a[1],g=W[h]||V[h]||h;d.each(function(a,d){(x(d)||w(d)||H(d))&&Y(d,g,f,b,c)})});else for(var h in a)this.off(h,a[h]);return this};
25
+ E.on=function(a,b,c,d,h){var f=this;if(!C(a)){for(var g in a)this.on(g,b,c,a[g],h);return this}C(b)||(void 0!==b&&null!==b&&(void 0!==c&&(d=c),c=b),b="");D(d)||(d=c,c=void 0);if(!d)return this;J(N(a),function(a,g){a=X(g);g=a[0];var l=a[1],z=W[g]||V[g]||g,y=g in W,Ka=g in V;z&&f.each(function(a,f){if(x(f)||w(f)||H(f))a=function La(a){if(a.target["___i"+a.type])return a.stopImmediatePropagation();if(!a.namespace||Ea(l,a.namespace.split(".")))if(b||!(Ka&&(a.target!==f||a.___ot===z)||y&&a.relatedTarget&&
26
+ f.contains(a.relatedTarget))){var g=f;if(b){for(var A=a.target;!sa(A,b);){if(A===f)return;A=A.parentNode;if(!A)return}g=A;a.___cd=!0}a.___cd&&Object.defineProperty(a,"currentTarget",{configurable:!0,get:function(){return g}});Object.defineProperty(a,"data",{configurable:!0,get:function(){return c}});A=d.call(g,a,a.___td);h&&Y(f,z,l,b,La);!1===A&&(a.preventDefault(),a.stopPropagation())}},a.guid=d.guid=d.guid||F.guid++,Ga(f,z,l,b,a)})});return this};E.one=function(a,b,c,d){return this.on(a,b,c,d,!0)};
27
+ E.ready=function(a){function b(){return setTimeout(a,0,F)}"loading"!==k.readyState?b():k.addEventListener("DOMContentLoaded",b);return this};E.trigger=function(a,b){if(C(a)){var c=X(a),d=c[0];c=c[1];var h=W[d]||V[d]||d;if(!h)return this;var f=Fa.test(h)?"MouseEvents":"HTMLEvents";a=k.createEvent(f);a.initEvent(h,!0,!0);a.namespace=c.join(".");a.___ot=d}a.___td=b;var g=a.___ot in V;return this.each(function(b,c){g&&D(c[a.___ot])&&(c["___i"+a.type]=!0,c[a.___ot](),c["___i"+a.type]=!1);c.dispatchEvent(a)})};
28
+ function Ha(a){return a.multiple&&a.options?O(t.call(a.options,function(a){return a.selected&&!a.disabled&&!a.parentNode.disabled}),"value"):a.value||""}var Ia=/%20/g,Ja=/\r?\n/g,Ma=/file|reset|submit|button|image/i,Na=/radio|checkbox/i;
29
+ E.serialize=function(){var a="";this.each(function(b,c){J(c.elements||[c],function(b,c){c.disabled||!c.name||"FIELDSET"===c.tagName||Ma.test(c.type)||Na.test(c.type)&&!c.checked||(b=Ha(c),void 0!==b&&(b=q(b)?b:[b],J(b,function(b,d){b=a;d="&"+encodeURIComponent(c.name)+"="+encodeURIComponent(d.replace(Ja,"\r\n")).replace(Ia,"+");a=b+d})))})});return a.slice(1)};
30
+ E.val=function(a){return arguments.length?this.each(function(b,c){if((b=c.multiple&&c.options)||Na.test(c.type)){var d=q(a)?ia.call(a,String):null===a?[]:[String(a)];b?J(c.options,function(a,b){b.selected=0<=d.indexOf(b.value)},!0):c.checked=0<=d.indexOf(c.value)}else c.value=void 0===a||null===a?"":a}):this[0]&&Ha(this[0])};E.clone=function(){return this.map(function(a,b){return b.cloneNode(!0)})};E.detach=function(a){M(this,a).each(function(a,c){c.parentNode&&c.parentNode.removeChild(c)});return this};
31
+ var Oa=/^\s*<(\w+)[^>]*>/,Pa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,Qa={"*":ca,tr:da,td:ea,th:ea,thead:p,tbody:p,tfoot:p};function qa(a){if(!C(a))return[];if(Pa.test(a))return[n(RegExp.$1)];var b=Oa.test(a)&&RegExp.$1;b=Qa[b]||Qa["*"];b.innerHTML=a;return F(b.childNodes).detach().get()}F.parseHTML=qa;E.empty=function(){return this.each(function(a,b){for(;b.firstChild;)b.removeChild(b.firstChild)})};
32
+ E.html=function(a){return arguments.length?void 0===a?this:this.each(function(b,c){x(c)&&(c.innerHTML=a)}):this[0]&&this[0].innerHTML};E.remove=function(a){M(this,a).detach().off();return this};E.text=function(a){return void 0===a?this[0]?this[0].textContent:"":this.each(function(b,c){x(c)&&(c.textContent=a)})};E.unwrap=function(){this.parent().each(function(a,b){"BODY"!==b.tagName&&(a=F(b),a.replaceWith(a.children()))});return this};
33
+ E.offset=function(){var a=this[0];if(a)return a=a.getBoundingClientRect(),{top:a.top+m.pageYOffset,left:a.left+m.pageXOffset}};E.offsetParent=function(){return this.map(function(a,b){for(a=b.offsetParent;a&&"static"===Q(a,"position");)a=a.offsetParent;return a||ba})};
34
+ E.position=function(){var a=this[0];if(a){var b="fixed"===Q(a,"position"),c=b?a.getBoundingClientRect():this.offset();if(!b){var d=a.ownerDocument;for(b=a.offsetParent||d.documentElement;(b===d.body||b===d.documentElement)&&"static"===Q(b,"position");)b=b.parentNode;b!==a&&x(b)&&(d=F(b).offset(),c.top-=d.top+R(b,"borderTopWidth"),c.left-=d.left+R(b,"borderLeftWidth"))}return{top:c.top-R(a,"marginTop"),left:c.left-R(a,"marginLeft")}}};
35
+ E.children=function(a){return M(F(P(O(this,function(a){return a.children}))),a)};E.contents=function(){return F(P(O(this,function(a){return"IFRAME"===a.tagName?[a.contentDocument]:"TEMPLATE"===a.tagName?a.content.childNodes:a.childNodes})))};E.find=function(a){return F(P(O(this,function(b){return v(a,b)})))};var Ra=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,Sa=/^$|^module$|\/(java|ecma)script/i,Ta=["type","src","nonce","noModule"];
36
+ function Ua(a,b){a=F(a);a.filter("script").add(a.find("script")).each(function(a,d){if(Sa.test(d.type)&&ba.contains(d)){var c=n("script");c.text=d.textContent.replace(Ra,"");J(Ta,function(a,b){d[b]&&(c[b]=d[b])});b.head.insertBefore(c,null);b.head.removeChild(c)}})}
37
+ function Z(a,b,c,d,h,f,g,y){J(a,function(a,f){J(F(f),function(a,f){J(F(b),function(b,g){var l=c?g:f;b=c?a:b;g=c?f:g;l=b?l.cloneNode(!0):l;b=!b;h?g.insertBefore(l,d?g.firstChild:null):g.parentNode.insertBefore(l,d?g:g.nextSibling);b&&Ua(l,g.ownerDocument)},y)},g)},f);return b}E.after=function(){return Z(arguments,this,!1,!1,!1,!0,!0)};E.append=function(){return Z(arguments,this,!1,!1,!0)};E.appendTo=function(a){return Z(arguments,this,!0,!1,!0)};E.before=function(){return Z(arguments,this,!1,!0)};
38
+ E.insertAfter=function(a){return Z(arguments,this,!0,!1,!1,!1,!1,!0)};E.insertBefore=function(a){return Z(arguments,this,!0,!0)};E.prepend=function(){return Z(arguments,this,!1,!0,!0,!0,!0)};E.prependTo=function(a){return Z(arguments,this,!0,!0,!0,!1,!1,!0)};E.replaceWith=function(a){return this.before(a).remove()};E.replaceAll=function(a){F(a).replaceWith(this);return this};E.wrapAll=function(a){a=F(a);for(var b=a[0];b.children.length;)b=b.firstElementChild;this.first().before(a);return this.appendTo(b)};
39
+ E.wrap=function(a){return this.each(function(b,c){var d=F(a)[0];F(c).wrapAll(b?d.cloneNode(!0):d)})};E.wrapInner=function(a){return this.each(function(b,c){b=F(c);c=b.contents();c.length?c.wrapAll(a):b.append(a)})};E.has=function(a){var b=C(a)?function(b,d){return v(a,d).length}:function(b,d){return d.contains(a)};return this.filter(b)};E.is=function(a){var b=L(a);return u.call(this,function(a,d){return b.call(a,d,a)})};E.next=function(a,b,c){return M(F(P(O(this,"nextElementSibling",b,c))),a)};
40
+ E.nextAll=function(a){return this.next(a,!0)};E.nextUntil=function(a,b){return this.next(b,!0,a)};E.not=function(a){var b=L(a);return this.filter(function(c,d){return(!C(a)||x(d))&&!b.call(d,c,d)})};E.parent=function(a){return M(F(P(O(this,"parentNode"))),a)};E.index=function(a){var b=a?F(a)[0]:this[0];a=a?this:F(b).parent().children();return ha.call(a,b)};E.closest=function(a){var b=this.filter(a);if(b.length)return b;var c=this.parent();return c.length?c.closest(a):b};
41
+ E.parents=function(a,b){return M(F(P(O(this,"parentElement",!0,b))),a)};E.parentsUntil=function(a,b){return this.parents(b,a)};E.prev=function(a,b,c){return M(F(P(O(this,"previousElementSibling",b,c))),a)};E.prevAll=function(a){return this.prev(a,!0)};E.prevUntil=function(a,b){return this.prev(b,!0,a)};E.siblings=function(a){return M(F(P(O(this,function(a){return F(a).parent().children().not(a)}))),a)};"undefined"!==typeof exports?module.exports=F:m.cash=m.$=F;
42
+ })();
@@ -0,0 +1,369 @@
1
+ /*
2
+ # -----------------------------------------------------------------------------
3
+ # ~/assets/themes/j1/modules/fam/css/fam.css
4
+ # Provides styles for J1 Module FAM (Floating Button Menu)
5
+ #
6
+ # Product/Info:
7
+ # https://jekyll.one
8
+ #
9
+ # Copyright (C) 2020 Juergen Adams
10
+ #
11
+ # J1 Template is licensed under the MIT License.
12
+ # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE
13
+ # -----------------------------------------------------------------------------
14
+ */
15
+
16
+ .fam-btn ul {
17
+ left: 0;
18
+ right: 0;
19
+ text-align: center;
20
+ position: absolute;
21
+ bottom: 64px;
22
+ margin: 0;
23
+ visibility: hidden;
24
+ padding-left: 0;
25
+ list-style-type: none;
26
+ }
27
+
28
+ .btn-large,
29
+ .btn-small {
30
+ border: none;
31
+ border-radius: 2px;
32
+ display: inline-block;
33
+ height: 36px;
34
+ line-height: 36px;
35
+ padding: 0 16px;
36
+ text-transform: uppercase;
37
+ vertical-align: middle;
38
+ -webkit-tap-highlight-color: transparent
39
+ }
40
+
41
+ .disabled.btn-large,
42
+ .disabled.btn-small,
43
+ .btn-fab-floating.disabled,
44
+ .btn-large.disabled,
45
+ .btn-small.disabled,
46
+ .btn-large:disabled,
47
+ .btn-small:disabled,
48
+ .btn-fab-floating:disabled,
49
+ .btn-large:disabled,
50
+ .btn-small:disabled,
51
+ [disabled].btn-large,
52
+ [disabled].btn-small,
53
+ .btn-fab-floating[disabled],
54
+ .btn-large[disabled],
55
+ .btn-small[disabled] {
56
+ pointer-events: none;
57
+ background-color: #DFDFDF !important;
58
+ -webkit-box-shadow: none;
59
+ box-shadow: none;
60
+ color: #9F9F9F !important;
61
+ cursor: default
62
+ }
63
+
64
+ .disabled.btn-large:hover,
65
+ .disabled.btn-small:hover,
66
+ .btn-fab-floating.disabled:hover,
67
+ .btn-large.disabled:hover,
68
+ .btn-small.disabled:hover,
69
+ .btn-large:disabled:hover,
70
+ .btn-small:disabled:hover,
71
+ .btn-fab-floating:disabled:hover,
72
+ .btn-large:disabled:hover,
73
+ .btn-small:disabled:hover,
74
+ [disabled].btn-large:hover,
75
+ [disabled].btn-small:hover,
76
+ .btn-fab-floating[disabled]:hover,
77
+ .btn-large[disabled]:hover,
78
+ .btn-small[disabled]:hover {
79
+ background-color: #DFDFDF !important;
80
+ color: #9F9F9F !important
81
+ }
82
+
83
+ .btn-large,
84
+ .btn-small,
85
+ .btn-fab-floating {
86
+ font-size: 14px;
87
+ outline: 0
88
+ }
89
+
90
+ .btn-large i,
91
+ .btn-small i,
92
+ .btn-fab-floating i {
93
+ font-size: 1.3rem;
94
+ line-height: inherit
95
+ }
96
+
97
+ .btn-large:focus,
98
+ .btn-small:focus,
99
+ .btn-fab-floating:focus {
100
+ background-color: #1d7d74
101
+ }
102
+
103
+ .btn-large,
104
+ .btn-small {
105
+ text-decoration: none;
106
+ color: #fff;
107
+ background-color: #26a69a;
108
+ text-align: center;
109
+ letter-spacing: .5px;
110
+ -webkit-transition: background-color .2s ease-out;
111
+ transition: background-color .2s ease-out;
112
+ cursor: pointer
113
+ }
114
+
115
+ .btn-large:hover,
116
+ .btn-small:hover {
117
+ background-color: #424242 !important;
118
+ }
119
+
120
+ .btn-fab-floating:hover {
121
+ background-color: #424242 !important;
122
+ }
123
+
124
+ .btn-fab-floating {
125
+ display: inline-block;
126
+ color: #fff;
127
+ position: relative;
128
+ overflow: hidden;
129
+ z-index: 1;
130
+ width: 40px;
131
+ height: 40px;
132
+ line-height: 40px;
133
+ padding: 0;
134
+ background-color: #26a69a;
135
+ border-radius: 50%;
136
+ -webkit-transition: background-color .3s;
137
+ transition: background-color .3s;
138
+ cursor: pointer;
139
+ vertical-align: middle
140
+ }
141
+
142
+ .btn-fab-floating:before {
143
+ border-radius: 0
144
+ }
145
+
146
+ .btn-fab-floating.btn-large {
147
+ width: 56px;
148
+ height: 56px;
149
+ padding: 0
150
+ }
151
+
152
+ .btn-fab-floating.btn-large.halfway-fab {
153
+ bottom: -28px
154
+ }
155
+
156
+ .btn-fab-floating.btn-large i {
157
+ line-height: 56px
158
+ }
159
+
160
+ .btn-fab-floating.btn-small {
161
+ width: 32.4px;
162
+ height: 32.4px
163
+ }
164
+
165
+ .btn-fab-floating.btn-small.halfway-fab {
166
+ bottom: -16.2px
167
+ }
168
+
169
+ .btn-fab-floating.btn-small i {
170
+ line-height: 32.4px
171
+ }
172
+
173
+ .btn-fab-floating.halfway-fab {
174
+ position: absolute;
175
+ right: 24px;
176
+ bottom: -20px
177
+ }
178
+
179
+ .btn-fab-floating.halfway-fab.left {
180
+ right: auto;
181
+ left: 24px
182
+ }
183
+
184
+ .btn-fab-floating i {
185
+ width: inherit;
186
+ display: inline-block;
187
+ text-align: center;
188
+ color: #fff;
189
+ font-size: 1.6rem;
190
+ line-height: 40px
191
+ }
192
+
193
+ button.btn-fab-floating {
194
+ border: none
195
+ }
196
+
197
+ .fam-btn {
198
+ position: fixed;
199
+ right: 1rem;
200
+ bottom: 1rem;
201
+ padding-top: 4rem;
202
+ margin-bottom: 0;
203
+ z-index: 9;
204
+ }
205
+
206
+ .fam-btn.active ul {
207
+ visibility: visible
208
+ }
209
+
210
+ .fam-btn.direction-left,
211
+ .fam-btn.direction-right {
212
+ padding: 0 0 0 15px
213
+ }
214
+
215
+ .fam-btn.direction-left ul,
216
+ .fam-btn.direction-right ul {
217
+ text-align: right;
218
+ right: 64px;
219
+ top: 50%;
220
+ -webkit-transform: translateY(-50%);
221
+ transform: translateY(-50%);
222
+ height: 100%;
223
+ left: auto;
224
+ width: 500px
225
+ }
226
+
227
+ .fam-btn.direction-left ul li,
228
+ .fam-btn.direction-right ul li {
229
+ display: inline-block;
230
+ margin: 7.5px 15px 0 0
231
+ }
232
+
233
+ .fam-btn.direction-right {
234
+ padding: 0 15px 0 0
235
+ }
236
+
237
+ .fam-btn.direction-right ul {
238
+ text-align: left;
239
+ direction: rtl;
240
+ left: 64px;
241
+ right: auto
242
+ }
243
+
244
+ .fam-btn.direction-right ul li {
245
+ margin: 7.5px 0 0 15px
246
+ }
247
+
248
+ .fam-btn.direction-bottom {
249
+ padding: 0 0 15px 0
250
+ }
251
+
252
+ .fam-btn.direction-bottom ul {
253
+ top: 64px;
254
+ bottom: auto;
255
+ display: -webkit-box;
256
+ display: -webkit-flex;
257
+ display: -ms-flexbox;
258
+ display: flex;
259
+ -webkit-box-orient: vertical;
260
+ -webkit-box-direction: reverse;
261
+ -webkit-flex-direction: column-reverse;
262
+ -ms-flex-direction: column-reverse;
263
+ flex-direction: column-reverse
264
+ }
265
+
266
+ .fam-btn.direction-bottom ul li {
267
+ margin: 15px 0 0 0
268
+ }
269
+
270
+ .fam-btn.toolbar {
271
+ padding: 0;
272
+ height: 56px
273
+ }
274
+
275
+ .fam-btn.toolbar.active>a i {
276
+ opacity: 0
277
+ }
278
+
279
+ .fam-btn.toolbar ul {
280
+ display: -webkit-box;
281
+ display: -webkit-flex;
282
+ display: -ms-flexbox;
283
+ display: flex;
284
+ top: 0;
285
+ bottom: 0;
286
+ z-index: 1
287
+ }
288
+
289
+ .fam-btn.toolbar ul li {
290
+ -webkit-box-flex: 1;
291
+ -webkit-flex: 1;
292
+ -ms-flex: 1;
293
+ flex: 1;
294
+ display: inline-block;
295
+ margin: 0;
296
+ height: 100%;
297
+ -webkit-transition: none;
298
+ transition: none
299
+ }
300
+
301
+ .fam-btn.toolbar ul li a {
302
+ display: block;
303
+ overflow: hidden;
304
+ position: relative;
305
+ width: 100%;
306
+ height: 100%;
307
+ background-color: transparent;
308
+ -webkit-box-shadow: none;
309
+ box-shadow: none;
310
+ color: #fff;
311
+ line-height: 56px;
312
+ z-index: 1
313
+ }
314
+
315
+ .fam-btn.toolbar ul li a i {
316
+ line-height: inherit
317
+ }
318
+
319
+ .fam-btn ul {
320
+ left: 0;
321
+ right: 0;
322
+ text-align: center;
323
+ position: absolute;
324
+ bottom: 64px;
325
+ margin: 0;
326
+ visibility: hidden
327
+ }
328
+
329
+ .fam-btn ul li {
330
+ margin-bottom: 15px
331
+ }
332
+
333
+ .fam-btn ul a.btn-fab-floating {
334
+ opacity: 0
335
+ }
336
+
337
+ .fam-btn .fam-btn-backdrop {
338
+ position: absolute;
339
+ top: 0;
340
+ left: 0;
341
+ z-index: -1;
342
+ width: 40px;
343
+ height: 40px;
344
+ background-color: #26a69a;
345
+ border-radius: 50%;
346
+ -webkit-transform: scale(0);
347
+ transform: scale(0)
348
+ }
349
+
350
+ .btn-large {
351
+ height: 54px;
352
+ line-height: 54px;
353
+ font-size: 15px;
354
+ padding: 0 28px
355
+ }
356
+
357
+ .btn-large i {
358
+ font-size: 1.6rem
359
+ }
360
+
361
+ .btn-small {
362
+ height: 32.4px;
363
+ line-height: 32.4px;
364
+ font-size: 13px
365
+ }
366
+
367
+ .btn-small i {
368
+ font-size: 1.2rem
369
+ }
@@ -0,0 +1,477 @@
1
+ /*
2
+ # -----------------------------------------------------------------------------
3
+ # ~/assets/themes/j1/modules/fam/js/fam.js
4
+ # Provides JS Core for J1 Module FAM (Floating Button Menu)
5
+ #
6
+ # Product/Info:
7
+ # https://jekyll.one
8
+ #
9
+ # Copyright (C) 2020 Juergen Adams
10
+ #
11
+ # J1 Template is licensed under the MIT License.
12
+ # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE
13
+ # -----------------------------------------------------------------------------
14
+ # TODO:
15
+ # jadams, 2020-10-11: module needs to be rewitten to PURE jQuery
16
+ # -----------------------------------------------------------------------------
17
+ */
18
+ 'use strict';
19
+
20
+ // -----------------------------------------------------------------------------
21
+ // ESLint shimming
22
+ // -----------------------------------------------------------------------------
23
+ /* eslint indent: "off" */
24
+ /* eslint no-unused-vars: "off" */
25
+ /* eslint no-undef: "off" */
26
+ /* eslint no-redeclare: "off" */
27
+ /* eslint indent: "off" */
28
+ // -----------------------------------------------------------------------------
29
+
30
+ (function($, anim) {
31
+
32
+ var _defaults = {
33
+ direction: 'top',
34
+ hoverEnabled: true,
35
+ toolbarEnabled: false
36
+ };
37
+
38
+ $.fn.reverse = [].reverse;
39
+
40
+ // jadams, 2020-10-10, added class from main (materialize.js)
41
+ //
42
+ class Component {
43
+ /**
44
+ * Generic constructor for all components
45
+ * @constructor
46
+ * @param {Element} el
47
+ * @param {Object} options
48
+ */
49
+ constructor(classDef, el, options) {
50
+ // Display error if el is valid HTML Element
51
+ if (!(el instanceof Element)) {
52
+ console.error(Error(el + ' is not an HTML Element'));
53
+ }
54
+
55
+ // If exists, destroy and reinitialize in child
56
+ var ins = classDef.getInstance(el);
57
+ if (!!ins) {
58
+ ins.destroy();
59
+ }
60
+
61
+ this.el = el;
62
+ this.$el = cash(el);
63
+ }
64
+
65
+ /**
66
+ * Initializes components
67
+ * @param {class} classDef
68
+ * @param {Element | NodeList | jQuery} els
69
+ * @param {Object} options
70
+ */
71
+ static init(classDef, els, options) {
72
+ var instances = null;
73
+ if (els instanceof Element) {
74
+ instances = new classDef(els, options);
75
+ } else if (!!els && (els.jquery || els.cash || els instanceof NodeList)) {
76
+ var instancesArr = [];
77
+ for (var i = 0; i < els.length; i++) {
78
+ instancesArr.push(new classDef(els[i], options));
79
+ }
80
+ instances = instancesArr;
81
+ }
82
+ return instances;
83
+ }
84
+ }
85
+
86
+ /**
87
+ * Initialize jQuery wrapper for plugin
88
+ * @param {Class} plugin javascript class
89
+ * @param {string} pluginName jQuery plugin name
90
+ * @param {string} classRef Class reference name
91
+ */
92
+ j1.initializeJqueryWrapper = function (plugin, pluginName, classRef) {
93
+ jQuery.fn[pluginName] = function (methodOrOptions) {
94
+ // Call plugin method if valid method name is passed in
95
+ if (plugin.prototype[methodOrOptions]) {
96
+ var params = Array.prototype.slice.call(arguments, 1);
97
+
98
+ // Getter methods
99
+ if (methodOrOptions.slice(0, 3) === 'get') {
100
+ var instance = this.first()[0][classRef];
101
+ return instance[methodOrOptions].apply(instance, params);
102
+ }
103
+
104
+ // Void methods
105
+ return this.each(function () {
106
+ var instance = this[classRef];
107
+ instance[methodOrOptions].apply(instance, params);
108
+ });
109
+
110
+ // Initialize plugin if options or no argument is passed in
111
+ } else if (typeof methodOrOptions === 'object' || !methodOrOptions) {
112
+ plugin.init(this, arguments[0]);
113
+ return this;
114
+ }
115
+
116
+ // Return error if an unrecognized method name is passed in
117
+ jQuery.error("Method " + methodOrOptions + " does not exist on jQuery." + pluginName);
118
+ };
119
+ };
120
+
121
+ /**
122
+ * @class
123
+ *
124
+ */
125
+ class FloatingActionButton extends Component {
126
+ /**
127
+ * Construct FloatingActionButton instance
128
+ * @constructor
129
+ * @param {Element} el
130
+ * @param {Object} options
131
+ */
132
+ constructor(el, options) {
133
+ super(FloatingActionButton, el, options);
134
+ this.el.M_FloatingActionButton = this;
135
+
136
+ /**
137
+ * Options for the fab
138
+ * @member FloatingActionButton#options
139
+ * @prop {Boolean} [direction] - Direction fab menu opens
140
+ * @prop {Boolean} [hoverEnabled=true] - Enable hover vs click
141
+ * @prop {Boolean} [toolbarEnabled=false] - Enable toolbar transition
142
+ */
143
+ this.options = $.extend({}, FloatingActionButton.defaults, options);
144
+
145
+ this.isOpen = false;
146
+ this.$anchor = this.$el.children('a').first();
147
+ this.$menu = this.$el.children('ul').first();
148
+ this.$floatingBtns = this.$el.find('ul .btn-fab-floating');
149
+ this.$floatingBtnsReverse = this.$el.find('ul .btn-fab-floating').reverse();
150
+ this.offsetY = 0;
151
+ this.offsetX = 0;
152
+
153
+ this.$el.addClass(`direction-${this.options.direction}`);
154
+ if (this.options.direction === 'top') {
155
+ this.offsetY = 40;
156
+ } else if (this.options.direction === 'right') {
157
+ this.offsetX = -40;
158
+ } else if (this.options.direction === 'bottom') {
159
+ this.offsetY = -40;
160
+ } else {
161
+ this.offsetX = 40;
162
+ }
163
+ this._setupEventHandlers();
164
+ }
165
+
166
+ static get defaults() {
167
+ return _defaults;
168
+ }
169
+
170
+ static init(els, options) {
171
+ return super.init(this, els, options);
172
+ }
173
+
174
+ /**
175
+ * Get Instance
176
+ */
177
+ static getInstance(el) {
178
+ var domElem = !!el.jquery ? el[0] : el;
179
+ return domElem.M_FloatingActionButton;
180
+ }
181
+
182
+ /**
183
+ * Teardown component
184
+ */
185
+ destroy() {
186
+ this._removeEventHandlers();
187
+ this.el.M_FloatingActionButton = undefined;
188
+ }
189
+
190
+ /**
191
+ * Setup Event Handlers
192
+ */
193
+ _setupEventHandlers() {
194
+ this._handleFABClickBound = this._handleFABClick.bind(this);
195
+ this._handleOpenBound = this.open.bind(this);
196
+ this._handleCloseBound = this.close.bind(this);
197
+
198
+ if (this.options.hoverEnabled && !this.options.toolbarEnabled) {
199
+ this.el.addEventListener('mouseenter', this._handleOpenBound);
200
+ this.el.addEventListener('mouseleave', this._handleCloseBound);
201
+ } else {
202
+ this.el.addEventListener('click', this._handleFABClickBound);
203
+ }
204
+ }
205
+
206
+ /**
207
+ * Remove Event Handlers
208
+ */
209
+ _removeEventHandlers() {
210
+ if (this.options.hoverEnabled && !this.options.toolbarEnabled) {
211
+ this.el.removeEventListener('mouseenter', this._handleOpenBound);
212
+ this.el.removeEventListener('mouseleave', this._handleCloseBound);
213
+ } else {
214
+ this.el.removeEventListener('click', this._handleFABClickBound);
215
+ }
216
+ }
217
+
218
+ /**
219
+ * Handle FAB Click
220
+ */
221
+ _handleFABClick() {
222
+ if (this.isOpen) {
223
+ this.close();
224
+ } else {
225
+ this.open();
226
+ }
227
+ }
228
+
229
+ /**
230
+ * Handle Document Click
231
+ * @param {Event} e
232
+ */
233
+ _handleDocumentClick(e) {
234
+ if (!$(e.target).closest(this.$menu).length) {
235
+ this.close();
236
+ }
237
+ }
238
+
239
+ /**
240
+ * Open FAB
241
+ */
242
+ open() {
243
+ if (this.isOpen) {
244
+ return;
245
+ }
246
+
247
+ if (this.options.toolbarEnabled) {
248
+ this._animateInToolbar();
249
+ } else {
250
+ this._animateInFAB();
251
+ }
252
+ this.isOpen = true;
253
+ }
254
+
255
+ /**
256
+ * Close FAB
257
+ */
258
+ close() {
259
+ if (!this.isOpen) {
260
+ return;
261
+ }
262
+
263
+ if (this.options.toolbarEnabled) {
264
+ window.removeEventListener('scroll', this._handleCloseBound, true);
265
+ document.body.removeEventListener('click', this._handleDocumentClickBound, true);
266
+ this._animateOutToolbar();
267
+ } else {
268
+ this._animateOutFAB();
269
+ }
270
+ this.isOpen = false;
271
+ }
272
+
273
+ /**
274
+ * Classic FAB Menu open
275
+ */
276
+ _animateInFAB() {
277
+ this.$el.addClass('active');
278
+
279
+ var time = 0;
280
+ this.$floatingBtnsReverse.each((el) => {
281
+ anim({
282
+ targets: el,
283
+ opacity: 1,
284
+ scale: [0.4, 1],
285
+ translateY: [this.offsetY, 0],
286
+ translateX: [this.offsetX, 0],
287
+ duration: 275,
288
+ delay: time,
289
+ easing: 'easeInOutQuad'
290
+ });
291
+ time += 40;
292
+ });
293
+ }
294
+
295
+ /**
296
+ * Classic FAB Menu close
297
+ */
298
+ _animateOutFAB() {
299
+ this.$floatingBtnsReverse.each((el) => {
300
+ anim.remove(el);
301
+ anim({
302
+ targets: el,
303
+ opacity: 0,
304
+ scale: 0.4,
305
+ translateY: this.offsetY,
306
+ translateX: this.offsetX,
307
+ duration: 175,
308
+ easing: 'easeOutQuad',
309
+ complete: () => {
310
+ this.$el.removeClass('active');
311
+ }
312
+ });
313
+ });
314
+ }
315
+
316
+ /**
317
+ * Toolbar transition Menu open
318
+ */
319
+ _animateInToolbar() {
320
+ var scaleFactor;
321
+ var windowWidth = window.innerWidth;
322
+ var windowHeight = window.innerHeight;
323
+ var btnRect = this.el.getBoundingClientRect();
324
+ var backdrop = $('<div class="fam-btn-backdrop"></div>');
325
+ var fabColor = this.$anchor.css('background-color');
326
+
327
+ this.$anchor.append(backdrop);
328
+
329
+ this.offsetX = btnRect.left - windowWidth / 2 + btnRect.width / 2;
330
+ this.offsetY = windowHeight - btnRect.bottom;
331
+ scaleFactor = windowWidth / backdrop[0].clientWidth;
332
+ this.btnBottom = btnRect.bottom;
333
+ this.btnLeft = btnRect.left;
334
+ this.btnWidth = btnRect.width;
335
+
336
+ // Set initial state
337
+ this.$el.addClass('active');
338
+ this.$el.css({
339
+ 'text-align': 'center',
340
+ width: '100%',
341
+ bottom: 0,
342
+ left: 0,
343
+ transform: 'translateX(' + this.offsetX + 'px)',
344
+ transition: 'none'
345
+ });
346
+ this.$anchor.css({
347
+ transform: 'translateY(' + -this.offsetY + 'px)',
348
+ transition: 'none'
349
+ });
350
+ backdrop.css({
351
+ 'background-color': fabColor
352
+ });
353
+
354
+ setTimeout(() => {
355
+ this.$el.css({
356
+ transform: '',
357
+ transition:
358
+ 'transform .2s cubic-bezier(0.550, 0.085, 0.680, 0.530), background-color 0s linear .2s'
359
+ });
360
+ this.$anchor.css({
361
+ overflow: 'visible',
362
+ transform: '',
363
+ transition: 'transform .2s'
364
+ });
365
+
366
+ setTimeout(() => {
367
+ this.$el.css({
368
+ overflow: 'hidden',
369
+ 'background-color': fabColor
370
+ });
371
+ backdrop.css({
372
+ transform: 'scale(' + scaleFactor + ')',
373
+ transition: 'transform .2s cubic-bezier(0.550, 0.055, 0.675, 0.190)'
374
+ });
375
+ this.$menu
376
+ .children('li')
377
+ .children('a')
378
+ .css({
379
+ opacity: 1
380
+ });
381
+
382
+ // Scroll to close
383
+ this._handleDocumentClickBound = this._handleDocumentClick.bind(this);
384
+ window.addEventListener('scroll', this._handleCloseBound, true);
385
+ document.body.addEventListener('click', this._handleDocumentClickBound, true);
386
+ }, 100);
387
+ }, 0);
388
+ }
389
+
390
+ /**
391
+ * Toolbar transition Menu close
392
+ */
393
+ _animateOutToolbar() {
394
+ var windowWidth = window.innerWidth;
395
+ var windowHeight = window.innerHeight;
396
+ var backdrop = this.$el.find('.fam-btn-backdrop');
397
+ var fabColor = this.$anchor.css('background-color');
398
+
399
+ this.offsetX = this.btnLeft - windowWidth / 2 + this.btnWidth / 2;
400
+ this.offsetY = windowHeight - this.btnBottom;
401
+
402
+ // Hide backdrop
403
+ this.$el.removeClass('active');
404
+ this.$el.css({
405
+ 'background-color': 'transparent',
406
+ transition: 'none'
407
+ });
408
+ this.$anchor.css({
409
+ transition: 'none'
410
+ });
411
+ backdrop.css({
412
+ transform: 'scale(0)',
413
+ 'background-color': fabColor
414
+ });
415
+ this.$menu
416
+ .children('li')
417
+ .children('a')
418
+ .css({
419
+ opacity: ''
420
+ });
421
+
422
+ setTimeout(() => {
423
+ backdrop.remove();
424
+
425
+ // Set initial state.
426
+ this.$el.css({
427
+ 'text-align': '',
428
+ width: '',
429
+ bottom: '',
430
+ left: '',
431
+ overflow: '',
432
+ 'background-color': '',
433
+ transform: 'translate3d(' + -this.offsetX + 'px,0,0)'
434
+ });
435
+ this.$anchor.css({
436
+ overflow: '',
437
+ transform: 'translate3d(0,' + this.offsetY + 'px,0)'
438
+ });
439
+
440
+ setTimeout(() => {
441
+ this.$el.css({
442
+ transform: 'translate3d(0,0,0)',
443
+ transition: 'transform .2s'
444
+ });
445
+ this.$anchor.css({
446
+ transform: 'translate3d(0,0,0)',
447
+ transition: 'transform .2s cubic-bezier(0.550, 0.055, 0.675, 0.190)'
448
+ });
449
+ }, 20);
450
+ }, 200);
451
+ }
452
+ }
453
+
454
+ // jadams, 2020-10-10: moved to j1 name space
455
+ //
456
+ // M.FloatingActionButton = FloatingActionButton;
457
+ j1.fam = FloatingActionButton;
458
+
459
+ // jadams, 2020-10-10: check how to transform to jQuery
460
+ //
461
+
462
+ // Check for jQuery
463
+ //
464
+ j1.jQueryLoaded = !!window.jQuery;
465
+
466
+ if (j1.jQueryLoaded) {
467
+ j1.initializeJqueryWrapper (
468
+ FloatingActionButton,
469
+ 'floatingActionButton',
470
+ 'M_FloatingActionButton'
471
+ );
472
+ }
473
+
474
+ // jadams, 2020-10-10: TODO: check if anime could be a replacement
475
+ // for (huge) animate.css
476
+ // })($, j1.anime);
477
+ })(cash, j1.anime);