j1-template 2020.0.5 → 2020.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/_includes/themes/j1/modules/navigator/generator.html +2 -2
  3. data/assets/data/mmenu.html +1 -1
  4. data/assets/data/mmenu_sidebar.html +1 -1
  5. data/assets/data/mmenu_toc.html +1 -1
  6. data/assets/data/ssm.html +5 -5
  7. data/assets/themes/j1/core/css/theme_extensions.css +38 -75
  8. data/assets/themes/j1/core/css/theme_extensions.min.css +1 -1
  9. data/assets/themes/j1/core/css/uno.css +38 -75
  10. data/assets/themes/j1/core/css/uno.min.css +1 -1
  11. data/assets/themes/j1/core/js/template.js +30 -30
  12. data/assets/themes/j1/core/js/template.js.map +1 -1
  13. data/assets/themes/j1/core/js/template.min.js +1 -1
  14. data/lib/j1/version.rb +1 -1
  15. data/lib/starter_web/Gemfile +1 -1
  16. data/lib/starter_web/_config.yml +1 -1
  17. data/lib/starter_web/_data/modules/defaults/ssm.yml +1 -1
  18. data/lib/starter_web/_data/modules/defaults/toccer.yml +13 -14
  19. data/lib/starter_web/_data/modules/navigator.yml +4 -1
  20. data/lib/starter_web/_data/modules/toccer.yml +19 -62
  21. data/lib/starter_web/_data/resources.yml +2 -45
  22. data/lib/starter_web/_data/template_settings.yml +13 -13
  23. data/lib/starter_web/_plugins/uglify.rb +41 -0
  24. data/lib/starter_web/assets/themes/j1/adapter/js/algolia.js +3 -3
  25. data/lib/starter_web/assets/themes/j1/adapter/js/attic.js +4 -4
  26. data/lib/starter_web/assets/themes/j1/adapter/js/carousel.js +3 -3
  27. data/lib/starter_web/assets/themes/j1/adapter/js/framer.js +3 -3
  28. data/lib/starter_web/assets/themes/j1/adapter/js/j1.js +15 -38
  29. data/lib/starter_web/assets/themes/j1/adapter/js/mmenu.js +19 -6
  30. data/lib/starter_web/assets/themes/j1/adapter/js/navigator.js +21 -3
  31. data/lib/starter_web/assets/themes/j1/adapter/js/ssm.js +5 -3
  32. data/lib/starter_web/assets/themes/j1/adapter/js/themer.js +1 -1
  33. data/lib/starter_web/assets/themes/j1/adapter/js/toccer.js +38 -45
  34. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/css/themes/uno.css +60 -2
  35. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/css/themes/uno.min.css +60 -2
  36. data/lib/starter_web/package.json +1 -1
  37. data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
  38. data/lib/starter_web/utilsrv/package.json +1 -1
  39. metadata +3 -11
  40. data/assets/themes/j1/core/css/globals.scss +0 -28
  41. data/lib/starter_web/_data/modules/back2top.yml +0 -40
  42. data/lib/starter_web/_data/modules/defaults/back2top.yml +0 -147
  43. data/lib/starter_web/_data/modules/defaults/smooth_scroll.yml +0 -169
  44. data/lib/starter_web/_data/modules/navigator.yml.new +0 -232
  45. data/lib/starter_web/_data/modules/smooth_scroll.yml +0 -169
  46. data/lib/starter_web/assets/themes/j1/adapter/js/back2top.js +0 -227
  47. data/lib/starter_web/assets/themes/j1/adapter/js/mmenu.js.new +0 -432
  48. data/lib/starter_web/assets/themes/j1/adapter/js/scroller.js +0 -177
@@ -1,169 +0,0 @@
1
- # ------------------------------------------------------------------------------
2
- # ~/_data/modules/smooth_scroll.yml
3
- # User configuration settings for J1 Smoothscroll module
4
- #
5
- # Product/Info:
6
- # https://jekyll.one
7
- #
8
- # Copyright (C) 2020 Juergen Adams
9
- #
10
- # J1 Template is licensed under the MIT License.
11
- # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE
12
- #
13
- # ------------------------------------------------------------------------------
14
-
15
- # ------------------------------------------------------------------------------
16
- # About this configuration (used for J1 CC only)
17
- #
18
- about_config:
19
-
20
- title: SmoothScroll
21
- scope: User settings
22
- location: _data/modules/smooth_scroll.yml
23
-
24
- # ------------------------------------------------------------------------------
25
- # User configuration settings
26
- #
27
- settings:
28
-
29
- # ------------------------------------------------------------------------------
30
- # J1 Scroll Manager settings
31
- # ------------------------------------------------------------------------------
32
- # SmoothScroll settings
33
- # Enables smooth vertical page scrolling on Mouse Wheel, Keyboard and Touchpad
34
- #
35
- # enabled
36
- # ----------------------------------------------------------------------------
37
- # Enables|Disables the use of SmoothControl
38
- #
39
- # values: boolean (true|false)
40
- # default: false
41
- #
42
- # SCROLLING CORE
43
- # --------------
44
- #
45
- # frameRate
46
- # ----------------------------------------------------------------------------
47
- # ...
48
- #
49
- # values: integer (Hz)
50
- # default: 150
51
- #
52
- # animationTime
53
- # ----------------------------------------------------------------------------
54
- # ...
55
- #
56
- # values: integer (msec)
57
- # default: 400
58
- #
59
- # stepSize
60
- # ----------------------------------------------------------------------------
61
- # ...
62
- #
63
- # values: integer (px)
64
- # default: 100
65
- #
66
- # ACCELERATION SETTINGS
67
- # ---------------------
68
- #
69
- # accelerationDelta
70
- # ----------------------------------------------------------------------------
71
- # ...
72
- #
73
- # values: integer
74
- # default: 50
75
- #
76
- # accelerationMax
77
- # ----------------------------------------------------------------------------
78
- # ...
79
- #
80
- # values: integer
81
- # default: 3
82
- #
83
- # KEYBOARD SETTINGS
84
- # -----------------
85
- #
86
- # keyboardSupport
87
- # ----------------------------------------------------------------------------
88
- # Enables|Disables Keyboard support for smooth scrolling
89
- #
90
- # values: boolean (true|false)
91
- # default: true
92
- #
93
- # arrowScroll
94
- # ----------------------------------------------------------------------------
95
- # Number of pixels to scroll when pressing a keyboard arrow key
96
- #
97
- # values: integer (px)
98
- # default: 50
99
- #
100
- # PULSE ALGORITHM SETTINGS
101
- # ------------------------
102
- #
103
- # pulseAlgorithm
104
- # ----------------------------------------------------------------------------
105
- # Enables easing of the scrolling animation. When disabled, the page
106
- # animation will be linear (ratio of "tail" to "acceleration")
107
- #
108
- # values: boolean (true|false)
109
- # default: true
110
- #
111
- # pulseScale
112
- # ----------------------------------------------------------------------------
113
- # Defines the speed of pulse step scrolling
114
- #
115
- # values: integer
116
- # default: 4
117
- #
118
- # pulseNormalize
119
- # ----------------------------------------------------------------------------
120
- # ...
121
- #
122
- # values: integer
123
- # default: 1
124
- #
125
- # TOUCHPAD SETTINGS
126
- # -----------------
127
- #
128
- # touchpadSupport
129
- # ----------------------------------------------------------------------------
130
- # Enables|Disables Touchpad support for smooth scrolling
131
- #
132
- # values: boolean (true|false)
133
- # default: false
134
- #
135
- # OTHER SETTINGS
136
- # --------------
137
- #
138
- # fixedBackground
139
- # ----------------------------------------------------------------------------
140
- # ...
141
- #
142
- # values: boolean (true|false)
143
- # default: true
144
- #
145
- # excluded
146
- # ----------------------------------------------------------------------------
147
- # ...
148
- #
149
- # values: string
150
- # default: empty string
151
- # ------------------------------------------------------------------------------
152
- enabled: false
153
- frameRate: 150
154
- animationTime: 400
155
- stepSize: 100
156
- accelerationDelta: 50
157
- accelerationMax: 3
158
- keyboardSupport: true
159
- arrowScroll: 50
160
- pulseAlgorithm: true
161
- pulseScale: 4
162
- pulseNormalize: 1
163
- touchpadSupport: false
164
- fixedBackground: true
165
- excluded:
166
-
167
-
168
- # ------------------------------------------------------------------------------
169
- # END config
@@ -1,227 +0,0 @@
1
- ---
2
- regenerate: false
3
- ---
4
-
5
- {% capture cache %}
6
-
7
- {% comment %}
8
- # -----------------------------------------------------------------------------
9
- # ~/assets/themes/j1/adapter/js/back2top.js
10
- # Liquid template to adapt Back2Top Core functions
11
- #
12
- # Product/Info:
13
- # https://jekyll.one
14
- # http://dynamicdrive.com/dynamicindex3/scrolltop.htm
15
- #
16
- # Copyright (C) 2020 Juergen Adams
17
- # Copyright (C) 2009 dynamicdrive.com
18
- #
19
- # J1 Template is licensed under the MIT License.
20
- # For details, see https://jekyll.one
21
- # -----------------------------------------------------------------------------
22
- # Test data:
23
- # {{ liquid_var | debug }}
24
- # -----------------------------------------------------------------------------
25
- {% endcomment %}
26
-
27
- {% comment %} Liquid procedures
28
- -------------------------------------------------------------------------------- {% endcomment %}
29
- {% capture select_color %}themes/{{site.template.name}}/procedures/global/select_color.proc{% endcapture %}
30
-
31
- {% comment %} Set global settings
32
- -------------------------------------------------------------------------------- {% endcomment %}
33
- {% assign environment = site.environment %}
34
- {% assign template_version = site.version %}
35
-
36
-
37
- {% comment %} Process YML config data
38
- ================================================================================ {% endcomment %}
39
-
40
- {% comment %} Set config files
41
- -------------------------------------------------------------------------------- {% endcomment %}
42
- {% assign template_config = site.data.template_settings %}
43
- {% assign blocks = site.data.blocks %}
44
- {% assign modules = site.data.modules %}
45
-
46
- {% comment %} Set config data
47
- -------------------------------------------------------------------------------- {% endcomment %}
48
- {% assign back2top_defaults = modules.defaults.back2top.defaults %}
49
- {% assign back2top_settings = modules.back2top.settings %}
50
-
51
- {% comment %} Set config options
52
- -------------------------------------------------------------------------------- {% endcomment %}
53
- {% assign back2top_options = back2top_defaults | merge: back2top_settings %}
54
- {% assign active_color = back2top_options.active_color %}
55
- {% assign background_color = back2top_options.background_color %}
56
- {% assign back2top_icon = back2top_options.icon %}
57
- {% assign color = back2top_options.color %}
58
-
59
- {% if back2top_options.icon_family == 'MDI' %}
60
- {% assign back2top_icon_family = 'Material Design Icons' %}
61
- {% elsif moduleOptions.icon_family == 'FA' %}
62
- {% assign back2top_icon_family = 'FontAweSome' %}
63
- {% else %}
64
- {% assign back2top_icon_family = 'Material Design Icons' %}
65
- {% endif %}
66
-
67
-
68
- /*
69
- # -----------------------------------------------------------------------------
70
- # ~/assets/themes/j1/adapter/js/back2top.js
71
- # JS Adapter for J1 Back2Top
72
- #
73
- # Product/Info:
74
- # https://jekyll.one
75
- # http://dynamicdrive.com/dynamicindex3/scrolltop.htm
76
- #
77
- # Copyright (C) 2020 Juergen Adams
78
- # Copyright (C) 2009 dynamicdrive.com
79
- #
80
- # J1 Template is licensed under the MIT License.
81
- # For details, see https://jekyll.one
82
- #
83
- # -----------------------------------------------------------------------------
84
- # Adapter generated: {{site.time}}
85
- # -----------------------------------------------------------------------------
86
- */
87
- 'use strict';
88
-
89
- {% comment %} Main
90
- -------------------------------------------------------------------------------- {% endcomment %}
91
- j1.adapter['back2top'] = (function (j1, window) {
92
-
93
- {% comment %} Set global variables
94
- ------------------------------------------------------------------------------ {% endcomment %}
95
- var environment = '{{environment}}';
96
- var moduleOptions = {};
97
- var _this;
98
- var logger;
99
- var logText;
100
-
101
- // ---------------------------------------------------------------------------
102
- // Helper functions
103
- // ---------------------------------------------------------------------------
104
-
105
- // ---------------------------------------------------------------------------
106
- // Main object
107
- // ---------------------------------------------------------------------------
108
- return {
109
-
110
- // -------------------------------------------------------------------------
111
- // Initializer
112
- // -------------------------------------------------------------------------
113
- init: function (options) {
114
- // initialize state flag
115
- j1.adapter.back2top.state = 'pending';
116
-
117
- // -----------------------------------------------------------------------
118
- // Default module settings
119
- // -----------------------------------------------------------------------
120
- var settings = $.extend({
121
- module_name: 'j1.adapter.back2top',
122
- generated: '{{site.time}}'
123
- }, options);
124
-
125
- {% comment %} Set global variables
126
- -------------------------------------------------------------------------- {% endcomment %}
127
- _this = j1.adapter.back2top;
128
- logger = log4javascript.getLogger('j1.adapter.back2top');
129
-
130
- {% comment %} Load module config from yml data
131
- -------------------------------------------------------------------------- {% endcomment %}
132
- // Load module DEFAULTS|CONFIG
133
- moduleOptions = $.extend({}, {{back2top_options | replace: '=>', ':' | replace: 'nil', '""'}});
134
-
135
- if (typeof settings !== 'undefined') {
136
- moduleOptions = j1.mergeData(moduleOptions, settings);
137
- }
138
-
139
- if (moduleOptions.enabled) {
140
- _this.setState('started');
141
- logger.info('state: ' + _this.getState());
142
- logger.info('module is being initialized');
143
-
144
- _this.setCss();
145
- j1.core.back2top.init(moduleOptions);
146
-
147
- _this.setState('finished');
148
- logger.info('state: ' + _this.getState());
149
- } else {
150
- _this.setState('finished');
151
- logger.info('state: ' + _this.getState());
152
- logger.warn('module back2top disabled');
153
- }
154
-
155
- return true;
156
- }, // END init
157
-
158
- // -------------------------------------------------------------------------
159
- // Set dynamic styles for Back2Top
160
- // -------------------------------------------------------------------------
161
- setCss: function () {
162
- var bg_primary = j1.getStyleValue('bg-primary', 'background-color');
163
-
164
- var dependencies_met_back2top_adapter = setInterval(function() {
165
- if (typeof j1.colors !== 'undefined') {
166
- $('head').append('<style>#topcontrol { background: ' + j1.colors['{{background_color}}'] + '; }</style>');
167
- // $('head').append('<style>#topcontrol:hover { background: ' + j1.colors['{{active_color}}'] + '; }</style>');
168
- $('head').append('<style>#topcontrol:hover { background: ' +bg_primary+ '; }</style>');
169
- $('head').append('<style>#topcontrol:after { content: "\\{{back2top_icon}}"; font-family: {{back2top_icon_family}}; }</style>');
170
- // clear interval checking
171
- clearInterval(dependencies_met_back2top_adapter);
172
- } // END 'getState'
173
- }, 50); // END 'dataLoaded'
174
-
175
- return true;
176
- }, // END setCss
177
-
178
- // -------------------------------------------------------------------------
179
- // messageHandler: MessageHandler for J1 CookieConsent module
180
- // Manage messages send from other J1 modules
181
- // -------------------------------------------------------------------------
182
- messageHandler: function (sender, message) {
183
- // var json_message = JSON.stringify(message, undefined, 2);
184
- var json_message = JSON.stringify(message);
185
-
186
- logText = 'received message from ' + sender + ': ' + json_message;
187
- logger.debug(logText);
188
-
189
- // -----------------------------------------------------------------------
190
- // Process commands|actions
191
- // -----------------------------------------------------------------------
192
- if (message.type === 'command' && message.action === 'module_initialized') {
193
- //
194
- // Place handling of command|action here
195
- //
196
- logger.info(message.text);
197
- }
198
-
199
- //
200
- // Place handling of other command|action here
201
- //
202
-
203
- return true;
204
- }, // END messageHandler
205
-
206
- // -------------------------------------------------------------------------
207
- // setState
208
- // Set the current (processing) state of the module
209
- // -------------------------------------------------------------------------
210
- setState: function (stat) {
211
- j1.adapter.scroller.state = stat;
212
- }, // END setState
213
-
214
- // -------------------------------------------------------------------------
215
- // getState
216
- // Returns the current (processing) state of the module
217
- // -------------------------------------------------------------------------
218
- getState: function () {
219
- return j1.adapter.scroller.state;
220
- } // END state
221
-
222
- }; // END return
223
- })(j1, window);
224
-
225
- {% endcapture %}
226
- {{ cache | strip_empty_lines }}
227
- {% assign cache = nil %}
@@ -1,432 +0,0 @@
1
- ---
2
- regenerate: true
3
- ---
4
-
5
- {% capture cache %}
6
-
7
- {% comment %}
8
- # -----------------------------------------------------------------------------
9
- # ~/assets/themes/j1/adapter/js/mmenu.js
10
- # Liquid template to adapt Mmenu-Light Core functions
11
- #
12
- # Product/Info:
13
- # https://jekyll.one
14
- #
15
- # Copyright (C) 2020 Juergen Adams
16
- #
17
- # J1 Template is licensed under the MIT License.
18
- # For details, see https://jekyll.one
19
- # -----------------------------------------------------------------------------
20
- # Test data:
21
- # {{ liquid_var | debug }}
22
- # -----------------------------------------------------------------------------
23
- # NOTE:
24
- #
25
- # JSON pretty print
26
- # Example: var str = JSON.stringify(obj, null, 2); // spacing level = 2
27
- # See: https://stackoverflow.com/questions/4810841/how-can-i-pretty-print-json-using-javascript
28
- # -----------------------------------------------------------------------------
29
- {% endcomment %}
30
-
31
- {% comment %} Liquid procedures
32
- -------------------------------------------------------------------------------- {% endcomment %}
33
- {% capture select_color %}themes/{{site.template.name}}/procedures/global/select_color.proc{% endcapture %}
34
-
35
- {% comment %} Set global settings
36
- -------------------------------------------------------------------------------- {% endcomment %}
37
- {% assign environment = site.environment %}
38
- {% assign brand_image_height = site.brand.image_height %}
39
-
40
- {% comment %} Process YML config data
41
- ================================================================================ {% endcomment %}
42
-
43
- {% comment %} Set config files
44
- {% assign auth_manager_config = site.j1_auth %}
45
- -------------------------------------------------------------------------------- {% endcomment %}
46
- {% assign site_config = site %}
47
- {% assign template_config = site.data.template_settings %}
48
- {% assign blocks = site.data.blocks %}
49
- {% assign modules = site.data.modules %}
50
-
51
- {% assign template_config = site.data.template_settings %}
52
- {% assign navigator_defaults = site.data.modules.defaults.navigator.defaults %}
53
- {% assign navigator_settings = site.data.modules.navigator.settings %}
54
-
55
- {% comment %} Set config data
56
- -------------------------------------------------------------------------------- {% endcomment %}
57
- {% assign nav_mmenu_defaults = navigator_defaults.nav_mmenu %}
58
- {% assign nav_mmenu_settings = navigator_settings.nav_mmenu %}
59
-
60
- {% comment %} Set config options
61
- -------------------------------------------------------------------------------- {% endcomment %}
62
- {% assign nav_mmenu_options = nav_mmenu_defaults | merge: nav_mmenu_settings %}
63
- {% assign nav_mmenu_id = navigator_defaults.nav_mmenu.xhr_container_id %}
64
- {% assign nav_navbar_media_breakpoint = navigator_defaults.nav_bar.media_breakpoint %}
65
-
66
- /*
67
- # -----------------------------------------------------------------------------
68
- # ~/assets/themes/j1/adapter/js/mmenu.js
69
- # JS Adapter for J1 MobileMenu (MMenu Light)
70
- #
71
- # Product/Info:
72
- # {{site.data.template_settings.theme_author_url}}
73
- #
74
- # Copyright (C) 2020 Juergen Adams
75
- #
76
- # J1 Template is licensed under the MIT License.
77
- # For details, see {{site.data.template_settings.theme_author_url}}
78
- # -----------------------------------------------------------------------------
79
- # NOTE: For AJAX (XHR) loads see
80
- # https://stackoverflow.com/questions/3709597/wait-until-all-jquery-ajax-requests-are-done
81
- # -----------------------------------------------------------------------------
82
- # NOTE: For getStyleValue helper see
83
- # https://stackoverflow.com/questions/16965515/how-to-get-a-style-attribute-from-a-css-class-by-javascript-jquery
84
- # -----------------------------------------------------------------------------
85
- # Adapter generated: {{site.time}}
86
- # -----------------------------------------------------------------------------
87
- */
88
- 'use strict';
89
-
90
- j1.adapter['mmenu'] = (function (j1, window) {
91
-
92
- // ---------------------------------------------------------------------------
93
- // globals
94
- // ---------------------------------------------------------------------------
95
- var environment = '{{environment}}';
96
- var dclFinished = false;
97
- var moduleOptions = {};
98
- var cookie_names = j1.getCookieNames();
99
- var user_state;
100
- var user_session;
101
- var user_data;
102
- var _this;
103
- var logger;
104
- var logText;
105
-
106
- // ---------------------------------------------------------------------------
107
- // helper functions
108
- // ---------------------------------------------------------------------------
109
-
110
-
111
- // ---------------------------------------------------------------------------
112
- // main object
113
- // ---------------------------------------------------------------------------
114
- return {
115
-
116
- // -------------------------------------------------------------------------
117
- // module initializer
118
- // -------------------------------------------------------------------------
119
- init: function (options) {
120
- // initialize state flag
121
- j1.adapter.mmenu.state = 'pending';
122
-
123
- // -----------------------------------------------------------------------
124
- // defaults
125
- // -----------------------------------------------------------------------
126
- var settings = $.extend({
127
- module_name: 'j1.adapter.mmenu',
128
- generated: '{{site.time}}'
129
- }, options);
130
-
131
- // -----------------------------------------------------------------------
132
- // globals
133
- // -----------------------------------------------------------------------
134
- _this = j1.adapter.mmenu;
135
- logger = log4javascript.getLogger('j1.adapter.mmenu');
136
-
137
- // -----------------------------------------------------------------------
138
- // options loader
139
- // -----------------------------------------------------------------------
140
- var navMenuOptions = $.extend({}, {{nav_mmenu_options | replace: '=>', ':' }});
141
- var xhr_data_path;
142
- var menu_id;
143
-
144
- // save config settings into the mmenu object for global access
145
- //
146
- j1.adapter.mmenu['navMenuOptions'] = navMenuOptions;
147
-
148
- // Load (individual) frontmatter options (currently NOT used)
149
- //
150
- if (options != null) { var frontmatterOptions = $.extend({}, options) }
151
-
152
- _this.setState('started');
153
- logger.info('state: ' + _this.getState());
154
- logger.info('module is being initialized');
155
-
156
- // jadams, 2020-06-24: Set max_count to 100 what cause to wait 2.5s
157
- // for J1 Navigator to finish (init)
158
- //
159
- var interval_count = 0;
160
- var max_count = 100;
161
-
162
- var dependencies_met_navigator = setInterval(function() {
163
- interval_count += 1;
164
- if ( j1.adapter.navigator.getState() == 'finished' ) {
165
- logger.info('dependencies of module navigator met for: mmenu');
166
- logger.info('dependencies of module navigator met after: ' + interval_count * 25 + ' ms');
167
- j1.adapter.mmenu.mmenuLoader(navMenuOptions);
168
- clearInterval(dependencies_met_navigator);
169
- }
170
- if (interval_count > max_count) {
171
- logger.warn('dependency check failed for module: navigator');
172
- logger.warn('dependencies of module navigator met after: ' + interval_count * 25 + ' ms');
173
- clearInterval(dependencies_met_navigator);
174
- j1.adapter.mmenu.mmenuLoader(navMenuOptions);
175
- }
176
- }, 25);
177
-
178
- }, // END init
179
-
180
- // -------------------------------------------------------------------------
181
- // MMenu Loader
182
- // -------------------------------------------------------------------------
183
- mmenuLoader: function (mmOptions) {
184
- var menu_id;
185
- var xhr_data_path;
186
-
187
- _this.setState('loading');
188
- logger.info('status: ' + _this.getState());
189
- logger.info('load HTML data for navs and drawers');
190
-
191
- {% assign id_list = "" %}
192
-
193
- // -----------------------------------------------------------------------
194
- // Load HTML data (AJAX)
195
- // -----------------------------------------------------------------------
196
- // jadams, 202-06-24: Promise (chain) if $.when seems NOT to work correctly.
197
- // It semms a chain using .then will be a better solution to make it sure
198
- // that the last Deferred set the state to 'data_loaded'.
199
- // Found the final state randomly set to 'null' what prevent the module
200
- // to run mmenuInitializer.
201
- // Workaround: Set 'data_loaded' to be returned by all Deferred in
202
- // the chain.
203
- // See: https://stackoverflow.com/questions/5436327/jquery-deferreds-and-promises-then-vs-done
204
- //
205
- {% comment %} Modify chain
206
- --------------------------------------------------------------------------
207
- {% if forloop.last %}'data_loaded'{% else %}'null'{% endif %}){% if forloop.last %}{% else %},{% endif %}
208
- to
209
- {% if forloop.last %}'data_loaded'{% else %}'data_loaded'{% endif %}){% if forloop.last %}{% else %},{% endif %}
210
- -------------------------------------------------------------------------- {% endcomment %}
211
- $.when (
212
- {% for item in nav_mmenu_options.menus %} {% if item.menu.enabled %}
213
- {% assign menu_id = item.menu.xhr_container_id %}
214
- {% assign xhr_data_path = item.menu.xhr_data_path %}
215
-
216
- j1.xhrData (
217
- 'j1.adapter.mmenu', {
218
- xhr_container_id: "{{menu_id}}",
219
- xhr_data_path: "{{xhr_data_path}}" },
220
- {% if forloop.last %}'data_loaded'{% else %}'data_loaded'{% endif %}){% if forloop.last %}{% else %},{% endif %}
221
-
222
- {% endif %}
223
- {% capture id_list %}{{id_list}}{{menu_id}}{% if forloop.last %}{% else %},{% endif %} {% endcapture %}
224
- {% endfor %} // ENDFOR menus
225
- ).done (function ({{id_list}}) {
226
- // ---------------------------------------------------------------------
227
- // Initialize MMenu Navs and Drawers
228
- // ---------------------------------------------------------------------
229
- var dependencies_met_mmenu_initialized = setInterval (function () {
230
- if (_this.getState() === 'data_loaded') {
231
- logger.info('load HTML data (AJAX): finished');
232
- _this.setState('processing');
233
- logger.info('status: ' + _this.getState());
234
- logger.info('initialize navs and drawers');
235
- j1.adapter.mmenu.mmenuInitializer(mmOptions);
236
- clearInterval(dependencies_met_mmenu_initialized);
237
- }
238
- }); // END dependencies_met_mmenu_loaded
239
- }); // END done
240
- }, // END dataLoader
241
-
242
- // -------------------------------------------------------------------------
243
- // MMenu Initializer
244
- // -------------------------------------------------------------------------
245
- mmenuInitializer: function (mmOptions) {
246
- var menu_id;
247
- var xhr_data_path;
248
-
249
- {% for item in nav_mmenu_options.menus %} {% if item.menu.enabled %}
250
-
251
- {% assign menu_id = item.menu.xhr_container_id %}
252
- menu_id = "{{menu_id}}";
253
- xhr_data_path = "{{item.menu.xhr_data_path}}";
254
-
255
- // Create an mmenu instance if id exists: {{menu_id}}
256
- if ($('#{{menu_id}}').length) {
257
-
258
- logger.info('mmenu is being initialized on id: {{menu_id}}');
259
-
260
- {% if item.menu.content.type == "navigation" %}
261
- // Create an mmenu instance of type NAVIGATION
262
- logger.info('found content type: NAVIGATION');
263
- // ---------------------------------------------------------------------
264
- // menu initializer (NAVIGATION)
265
- // ---------------------------------------------------------------------
266
- logger.info('initialize mmenu on id: #{{menu_id}}');
267
- var dependencies_met_{{menu_id}}_loaded = setInterval (function () {
268
- if ({{menu_id}}) {
269
- const menu_selector = document.querySelector('#{{menu_id}}');
270
- const mmenu_{{menu_id}} = new MmenuLight (
271
- menu_selector,
272
- '(max-width: ' + mmOptions.mmenu_plugin.max_width +'px)', {
273
- // plugin options
274
- node: mmOptions.mmenu_plugin.node,
275
- mediaQuery: mmOptions.mmenu_plugin.mediaQuery
276
- });
277
-
278
- const drawer_{{menu_id}} = mmenu_{{menu_id}}.offcanvas ({
279
- // drawer options
280
- position: mmOptions.mmenu_drawer.position
281
- });
282
-
283
- const navigator_{{menu_id}} = mmenu_{{menu_id}}.navigation ({
284
- // navigator options
285
- selected: mmOptions.mmenu_navigator.selected,
286
- slidingSubmenus: mmOptions.mmenu_navigator.slidingSubmenus,
287
- title: mmOptions.mmenu_navigator.title,
288
- theme: mmOptions.mmenu_navigator.theme
289
- });
290
-
291
- // Button|Toggler for the NavBar to open|close
292
- // the mmenu drawer
293
- $('{{item.menu.content.button_selector}}').each(function(e) {
294
- var $this = $(this);
295
-
296
- $this.on('click', function(e){
297
- const toggler_{{menu_id}} = this;
298
-
299
- // TODO: Animated toggle button
300
- //
301
- $('{{item.menu.content.button_selector}}').toggleClass('fadeIn');
302
- $('{{item.menu.content.button_selector}}').toggleClass('rotateIn')
303
-
304
- $('.mdi', this).toggleClass('mdi-menu');
305
- $('.mdi', this).toggleClass('mdi-close');
306
- e.preventDefault();
307
- (toggler_{{menu_id}}.t = !toggler_{{menu_id}}.t)
308
- ? drawer_{{menu_id}}.open()
309
- : drawer_{{menu_id}}.close();
310
- });
311
- });
312
- clearInterval(dependencies_met_{{menu_id}}_loaded);
313
- logger.info('initializing mmenu finished on id: #{{menu_id}}');
314
- }; // END mmenu_loaded
315
- }); // END dependencies_met_mmenu_loaded
316
- {% endif %} // ENDIF content_type: NAVIGATION
317
-
318
- {% if item.menu.content.type == "drawer" %}
319
- // Create an mmenu instance of type HTML
320
- logger.info('found content type: DRAWER');
321
- // -------------------------------------------------------------------
322
- // menu initializer (DRAWER)
323
- // -------------------------------------------------------------------
324
- logger.info('initialize mmenu on id: #{{menu_id}}');
325
- var dependencies_met_{{menu_id}}_loaded = setInterval (function () {
326
- if ({{menu_id}}) {
327
- const menu_selector = document.querySelector('#{{menu_id}}');
328
-
329
- const mmenu_{{menu_id}} = new MmenuLight (
330
- menu_selector,
331
- '(max-width: ' + mmOptions.mmenu_plugin.max_width +'px)', {
332
- // plugin options
333
- node: mmOptions.mmenu_plugin.node,
334
- mediaQuery: mmOptions.mmenu_plugin.mediaQuery
335
- });
336
-
337
- const drawer_{{menu_id}} = mmenu_{{menu_id}}.offcanvas ({
338
- // drawer options
339
- position: "{{item.menu.drawer.position}}"
340
- });
341
-
342
- // Button|Toggler for the MMenu tocbar to open|close the toc drawer
343
- $('{{item.menu.content.button_selector}}').each(function(e) {
344
- var $this = $(this);
345
-
346
- $this.on('click', function(e) {
347
- var toggler_{{menu_id}} = this;
348
- var hasClass;
349
-
350
- // check if the toggler should be activated
351
- // e.g for TOC only if clas js-toc-content is found
352
- //
353
- if ('{{item.menu.content.toggler_activated}}' != 'always') {
354
- hasClass = $('main').hasClass('{{item.menu.content.toggler_activated}}');
355
- } else {
356
- hasClass = true;
357
- }
358
- if (hasClass) {
359
- // Toggle button animation
360
- $('{{item.menu.content.button_selector}}').toggleClass('{{item.menu.content.toggler_animation}}')
361
-
362
- e.preventDefault();
363
- (toggler_{{menu_id}}.t = !toggler_{{menu_id}}.t)
364
- ? drawer_{{menu_id}}.open()
365
- : drawer_{{menu_id}}.close();
366
- } // END if hasclass
367
- });
368
- });
369
- clearInterval(dependencies_met_{{menu_id}}_loaded);
370
- }; // END if menu_loaded
371
- }); // END dependencies_met_mmenu_loaded
372
- logger.info('initializing mmenu finished on id: #{{menu_id}}');
373
- {% endif %} // ENDIF content_type: DRAWER
374
- } // END menus|drawers
375
-
376
- {% endif %} // ENDIF menu enabled
377
- {% endfor %} // ENDFOR menus
378
- }, // END mmenuInitializer
379
-
380
- // -------------------------------------------------------------------------
381
- // messageHandler
382
- // Manage messages (paylods) send from other J1 modules
383
- // -------------------------------------------------------------------------
384
- messageHandler: function (sender, message) {
385
- // var json_message = JSON.stringify(message, undefined, 2); // multiline
386
- var json_message = JSON.stringify(message);
387
-
388
- logText = 'received message from ' + sender + ': ' + json_message;
389
- logger.debug(logText);
390
-
391
- // -----------------------------------------------------------------------
392
- // Process commands|actions
393
- // -----------------------------------------------------------------------
394
- if (message.type === 'command' && message.action === 'module_initialized') {
395
- //
396
- // Place handling of command|action here
397
- //
398
- logger.info(message.text);
399
- }
400
- if (message.type === 'command' && message.action === 'status') {
401
- logger.info('messageHandler: received - ' + message.action);
402
- }
403
-
404
- //
405
- // Place handling of other command|action here
406
- //
407
-
408
- return true;
409
- }, // END messageHandler
410
-
411
- // -------------------------------------------------------------------------
412
- // setState
413
- // Set the current (processing) state of the module
414
- // -------------------------------------------------------------------------
415
- setState: function (stat) {
416
- j1.adapter.mmenu.state = stat;
417
- }, // END setState
418
-
419
- // -------------------------------------------------------------------------
420
- // getState
421
- // Returns the current (processing) state of the module
422
- // -------------------------------------------------------------------------
423
- getState: function () {
424
- return j1.adapter.mmenu.state;
425
- } // END state
426
-
427
- }; // END return
428
- })(j1, window);
429
-
430
- {% endcapture %}
431
- {{ cache | strip_empty_lines }}
432
- {% assign cache = nil %}