j1-template 2020.0.3 → 2020.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/_includes/themes/j1/layouts/content_generator_blog_archive.html +21 -17
- data/_includes/themes/j1/layouts/content_generator_collection.html +14 -11
- data/_includes/themes/j1/layouts/content_generator_page.html +15 -16
- data/_includes/themes/j1/layouts/content_generator_post.html +17 -22
- data/_includes/themes/j1/modules/navigator/generator.html +31 -25
- data/assets/data/{sidebar.html → mmenu_sidebar.html} +24 -18
- data/assets/data/mmenu_toc.html +45 -0
- data/assets/data/quicklinks.html +12 -4
- data/assets/error_pages/HTTP204.html +3 -3
- data/assets/themes/j1/core/css/theme_extensions.css +2 -2
- data/assets/themes/j1/core/css/theme_extensions.min.css +1 -1
- data/assets/themes/j1/core/css/uno.css +2 -2
- data/assets/themes/j1/core/css/uno.min.css +1 -1
- data/assets/themes/j1/core/js/template.js +2 -2
- data/assets/themes/j1/core/js/template.js.map +1 -1
- data/assets/themes/j1/core/js/template.min.js +1 -1
- data/lib/j1/version.rb +1 -1
- data/lib/starter_web/Gemfile +1 -1
- data/lib/starter_web/_config.yml +12 -139
- data/lib/starter_web/_data/modules/defaults/navigator.yml +2 -24
- data/lib/starter_web/_data/modules/defaults/toccer.yml +1 -1
- data/lib/starter_web/_data/modules/navigator.yml +158 -97
- data/lib/starter_web/_data/modules/toccer.yml +2 -1
- data/lib/starter_web/_data/resources.yml +8 -2
- data/lib/starter_web/assets/themes/j1/adapter/js/mmenu.js +207 -44
- data/lib/starter_web/assets/themes/j1/adapter/js/navigator.js +8 -32
- data/lib/starter_web/assets/themes/j1/adapter/js/toccer.js +40 -36
- data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/css/mmenu-light.min.css +375 -1
- data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/css/themes/uno.css +95 -0
- data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/css/themes/uno.min.css +95 -0
- data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/js/mmenu-light.js +3 -1
- data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/js/mmenu-light.min.js +11 -3
- data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/js/mmenu-light.polyfills.min.js +118 -0
- data/lib/starter_web/collections/posts/public/{jekyll → featured}/_posts/2018-05-01-confusion-about-base-url.adoc +0 -0
- data/lib/starter_web/package.json +1 -1
- data/lib/starter_web/pages/public/learn/roundtrip/100_present_images.adoc +2 -2
- data/lib/starter_web/pages/public/learn/roundtrip/200_typography.adoc +2 -2
- data/lib/starter_web/pages/public/legal/en/500_support.adoc +1 -1
- data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
- data/lib/starter_web/utilsrv/package.json +1 -1
- metadata +8 -4
@@ -44,24 +44,179 @@ settings:
|
|
44
44
|
delay_open_menu: 250
|
45
45
|
|
46
46
|
# ----------------------------------------------------------------------------
|
47
|
-
# NavMenu (
|
47
|
+
# NavMenu (MMobile)
|
48
48
|
#
|
49
49
|
nav_mmenu:
|
50
50
|
enabled: true
|
51
51
|
|
52
|
+
# --------------------------------------------------------------------------
|
53
|
+
# INSTANCE configuration (drawers|menus)
|
54
|
+
# --------------------------------------------------------------------------
|
55
|
+
menus:
|
56
|
+
|
57
|
+
# ------------------------------------------------------------------------
|
58
|
+
# NAVIGATION Main
|
59
|
+
#
|
60
|
+
- menu:
|
61
|
+
enabled: true
|
62
|
+
|
63
|
+
xhr_container_id: navigator_nav_mmenu
|
64
|
+
xhr_data_path: /assets/data/mmenu/index.html
|
65
|
+
|
66
|
+
drawer:
|
67
|
+
position: right
|
68
|
+
|
69
|
+
content:
|
70
|
+
type: navigation
|
71
|
+
title: Starter Web
|
72
|
+
theme: dark
|
73
|
+
toggler: "#navbar-toggler"
|
74
|
+
|
75
|
+
# ------------------------------------------------------------------------
|
76
|
+
# DRAWER Sidebar
|
77
|
+
#
|
78
|
+
- menu:
|
79
|
+
enabled: true
|
80
|
+
|
81
|
+
xhr_container_id: navigator_sidebar_mmenu
|
82
|
+
xhr_data_path: /assets/data/mmenu_sidebar/index.html
|
83
|
+
|
84
|
+
drawer:
|
85
|
+
position: left
|
86
|
+
|
87
|
+
content:
|
88
|
+
type: drawer
|
89
|
+
title: Site Info
|
90
|
+
theme: dark
|
91
|
+
toggler: "#navbar-brand"
|
92
|
+
toggler_animation: rotateIn
|
93
|
+
toggler_activated: always
|
94
|
+
|
95
|
+
boxes:
|
96
|
+
|
97
|
+
- box:
|
98
|
+
enabled: true
|
99
|
+
type: user_info
|
100
|
+
title: User
|
101
|
+
|
102
|
+
links:
|
103
|
+
- title: Provider
|
104
|
+
value: ??provider
|
105
|
+
href: ??provider-site-url
|
106
|
+
target: _blank
|
107
|
+
icon: domain
|
108
|
+
- title: User
|
109
|
+
icon: account
|
110
|
+
value: ??user-name
|
111
|
+
href: ??provider_member_url
|
112
|
+
target: none
|
113
|
+
- title: Permissions
|
114
|
+
icon: account-check
|
115
|
+
value: ??provider-permissions
|
116
|
+
href: ??provider_member_url
|
117
|
+
target: none
|
118
|
+
- title: Membership
|
119
|
+
icon: account-settings
|
120
|
+
value: ??provider-membership
|
121
|
+
href: ??provider_member_url
|
122
|
+
target: none
|
123
|
+
- title: Cookies
|
124
|
+
icon: cookie
|
125
|
+
value: ??cookie-state
|
126
|
+
href: ??provider_privacy_url
|
127
|
+
target: none
|
128
|
+
|
129
|
+
- box:
|
130
|
+
enabled: true
|
131
|
+
type: theme_info
|
132
|
+
title: Theme
|
133
|
+
|
134
|
+
links:
|
135
|
+
- title: Name
|
136
|
+
icon: face
|
137
|
+
value: ??theme-name
|
138
|
+
href: /pages/public/previewer/theme/
|
139
|
+
target: none
|
140
|
+
- title: Author
|
141
|
+
icon: grease-pencil
|
142
|
+
value: ??theme-author
|
143
|
+
href: ??theme-author-url
|
144
|
+
target: _blank
|
145
|
+
- title: Version
|
146
|
+
icon: numeric
|
147
|
+
value: ??theme-version
|
148
|
+
href: /pages/public/previewer/theme/
|
149
|
+
target: none
|
150
|
+
|
151
|
+
- box:
|
152
|
+
enabled: true
|
153
|
+
type: site_info
|
154
|
+
title: Site
|
155
|
+
|
156
|
+
links:
|
157
|
+
- title: About
|
158
|
+
icon: home-outline
|
159
|
+
href: /pages/public/about/site/
|
160
|
+
target: none
|
161
|
+
|
162
|
+
# - title: Become a Patron
|
163
|
+
# icon: patreon
|
164
|
+
# href: /pages/public/about/become_a_patron/
|
165
|
+
# target: _blank
|
166
|
+
|
167
|
+
- title: Impress
|
168
|
+
icon: alert-outline
|
169
|
+
href: /pages/public/legal/en/impress/
|
170
|
+
target: none
|
171
|
+
- title: Privacy
|
172
|
+
icon: heart
|
173
|
+
href: /pages/public/legal/en/privacy/
|
174
|
+
target: none
|
175
|
+
- title: License
|
176
|
+
icon: checkbox-multiple-marked-circle-outline
|
177
|
+
href: /pages/public/legal/en/license_agreement/
|
178
|
+
target: none
|
179
|
+
|
180
|
+
# - title: Contact
|
181
|
+
# icon: contact-mail
|
182
|
+
# href: mailto:contact@jekyll.one
|
183
|
+
# target: none
|
184
|
+
|
185
|
+
# ------------------------------------------------------------------------
|
186
|
+
# DRAWER Toc
|
187
|
+
#
|
188
|
+
- menu:
|
189
|
+
enabled: true
|
190
|
+
|
191
|
+
xhr_container_id: navigator_toc_mmenu
|
192
|
+
xhr_data_path: /assets/data/mmenu_toc/index.html
|
193
|
+
|
194
|
+
drawer:
|
195
|
+
position: right
|
196
|
+
|
197
|
+
content:
|
198
|
+
type: drawer
|
199
|
+
title: Table of Contents
|
200
|
+
theme: light
|
201
|
+
toggler: "#toc-toggler"
|
202
|
+
toggler_animation: rotateIn
|
203
|
+
toggler_activated: "js-toc-content"
|
204
|
+
|
52
205
|
# ----------------------------------------------------------------------------
|
53
206
|
# NavQuicklinks
|
54
207
|
#
|
55
208
|
nav_quicklinks:
|
56
209
|
enabled: true
|
57
210
|
|
58
|
-
home_url:
|
211
|
+
home_url: / # none | URL
|
59
212
|
back_url: none # none | URL
|
60
213
|
|
214
|
+
toc_toggler: true
|
215
|
+
|
61
216
|
r_text_sizer: false # true | false
|
62
217
|
|
63
|
-
disqus_url: https://disqus.com/
|
64
218
|
github_url: https://github.com/jekyll-one
|
219
|
+
disqus_url: none # https://disqus.com/
|
65
220
|
patreon_url: none # https://www.patreon.com/jekyll_one/posts
|
66
221
|
|
67
222
|
# ----------------------------------------------------------------------------
|
@@ -70,99 +225,5 @@ settings:
|
|
70
225
|
nav_topsearch:
|
71
226
|
enabled: true
|
72
227
|
|
73
|
-
# ----------------------------------------------------------------------------
|
74
|
-
# NavSidebar
|
75
|
-
#
|
76
|
-
nav_sidebar:
|
77
|
-
enabled: true
|
78
|
-
|
79
|
-
boxes:
|
80
|
-
|
81
|
-
- box:
|
82
|
-
enabled: true
|
83
|
-
type: user_info
|
84
|
-
title: User
|
85
|
-
|
86
|
-
links:
|
87
|
-
- title: Provider
|
88
|
-
value: ??provider
|
89
|
-
href: ??provider-site-url
|
90
|
-
target: _blank
|
91
|
-
icon: domain
|
92
|
-
- title: User
|
93
|
-
icon: account
|
94
|
-
value: ??user-name
|
95
|
-
href: ??provider_member_url
|
96
|
-
target: none
|
97
|
-
|
98
|
-
- title: Permissions
|
99
|
-
icon: account-check
|
100
|
-
value: ??provider-permissions
|
101
|
-
href: ??provider_member_url
|
102
|
-
target: none
|
103
|
-
- title: Membership
|
104
|
-
icon: account-settings
|
105
|
-
value: ??provider-membership
|
106
|
-
href: ??provider_member_url
|
107
|
-
target: none
|
108
|
-
- title: Cookies
|
109
|
-
icon: cookie
|
110
|
-
value: ??cookie-state
|
111
|
-
href: ??provider_privacy_url
|
112
|
-
target: none
|
113
|
-
|
114
|
-
- box:
|
115
|
-
enabled: true
|
116
|
-
type: theme_info
|
117
|
-
title: Theme
|
118
|
-
links:
|
119
|
-
- title: Name
|
120
|
-
icon: face
|
121
|
-
value: ??theme-name
|
122
|
-
href: /pages/public/previewer/theme/
|
123
|
-
target: none
|
124
|
-
- title: Author
|
125
|
-
icon: grease-pencil
|
126
|
-
value: ??theme-author
|
127
|
-
href: ??theme-author-url
|
128
|
-
target: _blank
|
129
|
-
- title: Version
|
130
|
-
icon: numeric
|
131
|
-
value: ??theme-version
|
132
|
-
href: /pages/public/previewer/theme/
|
133
|
-
target: none
|
134
|
-
|
135
|
-
- box:
|
136
|
-
enabled: true
|
137
|
-
type: site_info
|
138
|
-
title: Site
|
139
|
-
links:
|
140
|
-
- title: About
|
141
|
-
icon: home-outline
|
142
|
-
href: /pages/public/about/site/
|
143
|
-
target: none
|
144
|
-
# - title: Become a Patron
|
145
|
-
# icon: patreon
|
146
|
-
# href: /pages/public/about/become_a_patron/
|
147
|
-
# target: _blank
|
148
|
-
- title: Impress
|
149
|
-
icon: alert-outline
|
150
|
-
href: /pages/public/legal/en/impress/
|
151
|
-
target: none
|
152
|
-
- title: Privacy
|
153
|
-
icon: heart
|
154
|
-
href: /pages/public/legal/en/privacy/
|
155
|
-
target: none
|
156
|
-
- title: License
|
157
|
-
icon: checkbox-multiple-marked-circle-outline
|
158
|
-
href: /pages/public/legal/en/license_agreement/
|
159
|
-
target: none
|
160
|
-
|
161
|
-
# - title: Contact
|
162
|
-
# icon: contact-mail
|
163
|
-
# href: mailto:contact@jekyll.one
|
164
|
-
# target: none
|
165
|
-
|
166
|
-
|
167
228
|
# ------------------------------------------------------------------------------
|
168
229
|
# END config
|
@@ -45,6 +45,7 @@ settings:
|
|
45
45
|
# ----------------------------------------------------------------------------
|
46
46
|
enabled: true
|
47
47
|
log: false
|
48
|
+
delay: 400
|
48
49
|
|
49
50
|
# ----------------------------------------------------------------------------
|
50
51
|
# MODULE settings
|
@@ -169,4 +170,4 @@ settings:
|
|
169
170
|
|
170
171
|
|
171
172
|
# ------------------------------------------------------------------------------
|
172
|
-
# END config
|
173
|
+
# END config
|
@@ -712,9 +712,15 @@ resources:
|
|
712
712
|
dependencies: false
|
713
713
|
pass_init_data: false
|
714
714
|
data:
|
715
|
-
css: [
|
715
|
+
css: [
|
716
|
+
extensions/mmenu-light/css/mmenu-light,
|
717
|
+
extensions/mmenu-light/css/themes/uno
|
718
|
+
]
|
716
719
|
files: [ adapter/js/mmenu.js]
|
717
|
-
js: [
|
720
|
+
js: [
|
721
|
+
extensions/mmenu-light/js/mmenu-light,
|
722
|
+
extensions/mmenu-light/js/mmenu-light.polyfills
|
723
|
+
]
|
718
724
|
init_function: [ j1.adapter.mmenu.init ]
|
719
725
|
|
720
726
|
# ==============================================================================
|
@@ -92,9 +92,13 @@ j1.adapter['mmenu'] = (function (j1, window) {
|
|
92
92
|
// ---------------------------------------------------------------------------
|
93
93
|
// globals
|
94
94
|
// ---------------------------------------------------------------------------
|
95
|
-
var environment
|
96
|
-
var dclFinished
|
97
|
-
var moduleOptions
|
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;
|
98
102
|
var _this;
|
99
103
|
var logger;
|
100
104
|
var logText;
|
@@ -123,15 +127,19 @@ j1.adapter['mmenu'] = (function (j1, window) {
|
|
123
127
|
module_name: 'j1.adapter.mmenu',
|
124
128
|
generated: '{{site.time}}'
|
125
129
|
}, options);
|
130
|
+
|
131
|
+
// -----------------------------------------------------------------------
|
132
|
+
// globals
|
133
|
+
// -----------------------------------------------------------------------
|
126
134
|
_this = j1.adapter.mmenu;
|
127
135
|
logger = log4javascript.getLogger('j1.adapter.mmenu');
|
128
136
|
|
129
137
|
// -----------------------------------------------------------------------
|
130
138
|
// options loader
|
131
139
|
// -----------------------------------------------------------------------
|
132
|
-
var navMenuOptions = {};
|
133
|
-
|
134
|
-
|
140
|
+
var navMenuOptions = $.extend({}, {{nav_mmenu_options | replace: '=>', ':' }});
|
141
|
+
var xhr_data_path;
|
142
|
+
var menu_id;
|
135
143
|
|
136
144
|
// save config settings into the mmenu object for global access
|
137
145
|
//
|
@@ -139,80 +147,235 @@ j1.adapter['mmenu'] = (function (j1, window) {
|
|
139
147
|
|
140
148
|
// Load (individual) frontmatter options (currently NOT used)
|
141
149
|
//
|
142
|
-
if (options
|
150
|
+
if (options != null) { var frontmatterOptions = $.extend({}, options) }
|
143
151
|
|
144
152
|
_this.setState('started');
|
145
153
|
logger.info('state: ' + _this.getState());
|
146
154
|
logger.info('module is being initialized');
|
147
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
|
+
|
148
193
|
// -----------------------------------------------------------------------
|
149
|
-
// data
|
194
|
+
// Load HTML data (AJAX)
|
150
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 %}
|
151
211
|
$.when (
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
xhr_data_path: navMenuOptions.xhr_data_path },
|
156
|
-
'mmenu_loaded'))
|
157
|
-
.done (function (mmenu) {
|
158
|
-
// -----------------------------------------------------------------------
|
159
|
-
// core initializer
|
160
|
-
// -----------------------------------------------------------------------
|
161
|
-
var dependencies_met_mmenu_loaded = setInterval (function () {
|
162
|
-
if (mmenu && _this.getState() === 'mmenu_loaded') {
|
163
|
-
const menu_selector = document.querySelector( '#' + navMenuOptions.xhr_container_id );
|
164
|
-
const navbar_toggler = document.querySelector( "#navbar-toggler" );
|
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 %}
|
165
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');
|
166
232
|
_this.setState('processing');
|
167
233
|
logger.info('status: ' + _this.getState());
|
168
|
-
logger.info('initialize
|
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
|
169
241
|
|
170
|
-
|
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 (
|
171
271
|
menu_selector,
|
172
|
-
'(max-width: ' +
|
272
|
+
'(max-width: ' + mmOptions.mmenu_plugin.max_width +'px)', {
|
173
273
|
// plugin options
|
174
|
-
node:
|
175
|
-
mediaQuery:
|
274
|
+
node: mmOptions.mmenu_plugin.node,
|
275
|
+
mediaQuery: mmOptions.mmenu_plugin.mediaQuery
|
176
276
|
});
|
177
277
|
|
178
|
-
const
|
179
|
-
//
|
180
|
-
|
181
|
-
slidingSubmenus: navMenuOptions.mmenu_navigator.slidingSubmenus,
|
182
|
-
title: navMenuOptions.mmenu_navigator.title,
|
183
|
-
theme: navMenuOptions.mmenu_navigator.theme
|
278
|
+
const drawer_{{menu_id}} = mmenu_{{menu_id}}.offcanvas ({
|
279
|
+
// drawer options
|
280
|
+
position: mmOptions.mmenu_drawer.position
|
184
281
|
});
|
185
282
|
|
186
|
-
const
|
187
|
-
//
|
188
|
-
|
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
|
189
289
|
});
|
190
290
|
|
191
291
|
// Toggle Bars (Hamburger) for the NavBar to open|close
|
192
292
|
// the mmenu drawer
|
193
|
-
$('
|
293
|
+
$('{{item.menu.content.toggler}}').each(function(e) {
|
194
294
|
var $this = $(this);
|
195
295
|
|
196
296
|
$this.on('click', function(e){
|
197
|
-
|
297
|
+
const toggler_{{menu_id}} = this;
|
198
298
|
|
199
299
|
// TODO: Animated toggle button
|
200
300
|
//
|
201
|
-
$('
|
202
|
-
$('
|
301
|
+
$('{{item.menu.content.toggler}}').toggleClass('fadeIn');
|
302
|
+
$('{{item.menu.content.toggler}}').toggleClass('rotateIn')
|
203
303
|
|
204
304
|
$('.mdi', this).toggleClass('mdi-menu');
|
205
305
|
$('.mdi', this).toggleClass('mdi-close');
|
206
306
|
e.preventDefault();
|
207
|
-
(
|
307
|
+
(toggler_{{menu_id}}.t = !toggler_{{menu_id}}.t)
|
308
|
+
? drawer_{{menu_id}}.open()
|
309
|
+
: drawer_{{menu_id}}.close();
|
208
310
|
});
|
209
311
|
});
|
210
|
-
clearInterval(
|
211
|
-
|
312
|
+
clearInterval(dependencies_met_{{menu_id}}_loaded);
|
313
|
+
logger.info('initializing mmenu finished on id: #{{menu_id}}');
|
212
314
|
}; // END mmenu_loaded
|
213
315
|
}); // END dependencies_met_mmenu_loaded
|
214
|
-
|
215
|
-
|
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
|
+
// Toggler for the MMenu tocbar to open|close the toc drawer
|
343
|
+
$('{{item.menu.content.toggler}}').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.toggler}}').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
|
216
379
|
|
217
380
|
// -------------------------------------------------------------------------
|
218
381
|
// messageHandler
|