j1-template 2022.3.1 → 2022.4.0
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/modules/navigator/generator.html +1 -1
- data/assets/data/cookieconsent.html +4 -4
- data/assets/data/nbinteract.html +128 -0
- data/assets/data/quicklinks.html +15 -0
- data/assets/data/translator.html +15 -15
- data/assets/themes/j1/adapter/js/j1.js +150 -75
- data/assets/themes/j1/adapter/js/mmenu.js +25 -3
- data/assets/themes/j1/adapter/js/navigator.js +2 -2
- data/assets/themes/j1/adapter/js/nbinteract.js +240 -33
- data/assets/themes/j1/adapter/js/rangeSlider.js +27 -10
- data/assets/themes/j1/core/css/themes/unolight/bootstrap.css +27 -54
- data/assets/themes/j1/core/css/themes/unolight/bootstrap.min.css +1 -1
- data/assets/themes/j1/core/js/template.js +14 -3
- data/assets/themes/j1/core/js/template.min.js +1 -1
- data/assets/themes/j1/core/js/template.min.js.map +1 -1
- data/assets/themes/j1/modules/nbInteract/js/nbinteract/nbinteract-core.js +1 -1
- data/assets/themes/j1/modules/nbInteract/js/nbinteract/nbinteract-core.js.map +1 -1
- data/assets/themes/j1/modules/nbInteract/js/nbinteract/nbinteract-core.min.js +1 -1
- data/assets/themes/j1/modules/rangeSlider/css/theme/uno/nouislider.css +5 -0
- data/assets/themes/j1/modules/rangeSlider/css/theme/uno/nouislider.min.css +1 -1
- data/lib/j1/version.rb +1 -1
- data/lib/starter_web/Gemfile +1 -1
- data/lib/starter_web/_config.yml +1 -1
- data/lib/starter_web/_data/j1_config.yml +22 -7
- data/lib/starter_web/_data/modules/defaults/cookieconsent.yml +51 -41
- data/lib/starter_web/_data/modules/defaults/navigator.yml +4 -0
- data/lib/starter_web/_data/modules/defaults/nbinteract.yml +99 -1
- data/lib/starter_web/_data/modules/defaults/translator.yml +24 -12
- data/lib/starter_web/_data/modules/rangeSlider.yml +38 -1
- data/lib/starter_web/_plugins/asciidoctor-extensions/range-slider-block.rb +44 -0
- data/lib/starter_web/_plugins/lunr_index.rb +1 -1
- data/lib/starter_web/package.json +1 -1
- data/lib/starter_web/pages/public/jupyter/docs/j1-nbinteract-doc.adoc +2 -3
- data/lib/starter_web/pages/public/jupyter/docs/nbinteract-doc.adoc +17 -17
- data/lib/starter_web/pages/public/jupyter/examples/j1-circular-times-table.adoc +7 -8
- data/lib/starter_web/pages/public/jupyter/examples/j1-interactive-widgets.adoc +4 -5
- data/lib/starter_web/pages/public/jupyter/examples/j1-odes-in-python.adoc +5 -6
- data/lib/starter_web/pages/public/jupyter/examples/j1-testing-plotly.adoc +3 -4
- data/lib/starter_web/pages/public/jupyter/examples/j1_climate-change-forecast.adoc +4 -4
- data/lib/starter_web/pages/public/jupyter/notebooks/j1/.ipynb_checkpoints/j1_interactive_widgets-checkpoint.ipynb +26 -26
- data/lib/starter_web/pages/public/jupyter/notebooks/j1/j1_interactive_widgets.ipynb +26 -26
- data/lib/starter_web/pages/public/jupyter/notebooks/j1/j1_odes_in_python.ipynb +16 -16
- data/lib/starter_web/pages/public/jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_examples_central_limit_theorem-checkpoint.ipynb +247 -0
- data/lib/starter_web/pages/public/jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_recipes_graphing-checkpoint.ipynb +18 -18
- data/lib/starter_web/pages/public/jupyter/notebooks/nbi-docs/nbi_docs_examples_central_limit_theorem.ipynb +1 -2
- data/lib/starter_web/pages/public/jupyter/notebooks/nbi-docs/nbi_docs_recipes_graphing.ipynb +18 -18
- data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_interactive_widgets.html +3 -3
- data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_odes_in_python.html +10 -10
- data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/nbi_docs_recipes_graphing.html +4 -4
- data/lib/starter_web/pages/public/previewer/preview_bootstrap_theme.adoc +2 -2
- data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
- data/lib/starter_web/utilsrv/package.json +1 -1
- metadata +5 -7
- data/assets/themes/j1/modules/nbInteract/js/nbinteract/_new/nbinteract-core.js +0 -94
- data/assets/themes/j1/modules/nbInteract/js/nbinteract/_new/nbinteract-core.js.map +0 -1
- data/assets/themes/j1/modules/nbInteract/js/nbinteract/_old/j1-nbinteract-core.js +0 -94
- data/assets/themes/j1/modules/nbInteract/js/nbinteract/_old/j1-nbinteract-core.js.map +0 -1
- data/lib/starter_web/pages/public/se/se-fake.adoc +0 -47
@@ -134,26 +134,41 @@ var j1 = (function () {
|
|
134
134
|
// ---------------------------------------------------------------------------
|
135
135
|
// globals
|
136
136
|
// ---------------------------------------------------------------------------
|
137
|
+
// base page resources
|
137
138
|
var rePager = new RegExp('navigator|dateview|tagview|archive');
|
138
139
|
var environment = '{{environment}}';
|
139
140
|
var moduleOptions = {};
|
140
141
|
var j1_runtime_data = {};
|
142
|
+
var _this;
|
143
|
+
var settings;
|
144
|
+
var json_data;
|
145
|
+
var ep;
|
146
|
+
var baseUrl;
|
147
|
+
var referrer;
|
141
148
|
|
142
|
-
//
|
149
|
+
// defaults for status information
|
143
150
|
var state = 'not_started';
|
144
151
|
var mode = 'not_detected';
|
145
152
|
|
146
|
-
//
|
147
|
-
|
148
|
-
|
149
|
-
|
153
|
+
// defaults for tracking providers
|
154
|
+
var tracking_enabled = ('{{tracking_enabled}}' === 'true') ? true: false;
|
155
|
+
var tracking_id = '{{tracking_id}}';
|
156
|
+
var tracking_id_valid = (tracking_id.includes('tracking-id')) ? false : true;
|
150
157
|
|
151
|
-
//
|
158
|
+
// defaults for comment providers
|
152
159
|
var comment_provider = '{{comment_provider}}';
|
153
160
|
var site_id = '{{site_id}}';
|
154
161
|
var checkCookies = {{cookie_options.checkCookies}};
|
155
162
|
var expireCookiesOnRequiredOnly = ('{{cookie_options.expireCookiesOnRequiredOnly}}' === 'true') ? true: false;
|
156
163
|
|
164
|
+
// defaults for dynamic pages
|
165
|
+
var autoScrollRatioThreshold = '{{template_config.autoScrollRatioThreshold}}';
|
166
|
+
var pageGrowthRatio = 0; // ratio a dynamic page has grown in height
|
167
|
+
var pageBaseHeigth = 0; // base height of a dynamic page
|
168
|
+
var staticPage = false; // defalt: false, but decided in ResizeObserver
|
169
|
+
var pageHeight; // height of a page dynamic detected in ResizeObserver
|
170
|
+
|
171
|
+
// defaults for the cookie management
|
157
172
|
var current_user_data;
|
158
173
|
var current_page;
|
159
174
|
var previous_page;
|
@@ -163,30 +178,23 @@ var j1 = (function () {
|
|
163
178
|
var user_session_detected;
|
164
179
|
var cookie_written;
|
165
180
|
|
166
|
-
//
|
181
|
+
// defaults for themes
|
167
182
|
var themeName;
|
168
183
|
var themeCss;
|
169
184
|
var cssExtension = (environment === 'production')
|
170
185
|
? '.min.css'
|
171
186
|
: '.css'
|
172
187
|
|
173
|
-
|
188
|
+
// defaults for data files
|
174
189
|
var colors_data_path = '{{template_config.colors_data_path}}';
|
175
190
|
var font_size_data_path = '{{template_config.font_size_data_path}}';
|
176
191
|
var runtime_data_path = '{{template_config.runtime_data_path}}';
|
177
192
|
var message_catalog_data_path = '{{template_config.message_catalog_data_path}}';
|
178
193
|
|
179
|
-
// Logger
|
194
|
+
// Logger resources
|
180
195
|
var logger;
|
181
196
|
var logText;
|
182
197
|
|
183
|
-
var _this;
|
184
|
-
var settings;
|
185
|
-
var json_data;
|
186
|
-
var ep;
|
187
|
-
var baseUrl;
|
188
|
-
var referrer;
|
189
|
-
|
190
198
|
// initial cookie settings
|
191
199
|
var cookie_names = {
|
192
200
|
'app_session': '{{template_config.cookies.app_session}}',
|
@@ -282,44 +290,6 @@ var j1 = (function () {
|
|
282
290
|
j1['xhrDataState'] = {};
|
283
291
|
j1['xhrDOMState'] = {};
|
284
292
|
|
285
|
-
// -----------------------------------------------------------------------
|
286
|
-
// final updates before browser page|tab
|
287
|
-
// see: https://stackoverflow.com/questions/3888902/detect-browser-or-tab-closing
|
288
|
-
// -----------------------------------------------------------------------
|
289
|
-
window.addEventListener('beforeunload', function (event) {
|
290
|
-
var cookie_names = j1.getCookieNames();
|
291
|
-
var date = new Date();
|
292
|
-
var timestamp_now = date.toISOString();
|
293
|
-
var user_state = j1.readCookie(cookie_names.user_state);
|
294
|
-
var user_consent = j1.readCookie(cookie_names.user_consent);
|
295
|
-
var ep_status;
|
296
|
-
var url;
|
297
|
-
var baseUrl;
|
298
|
-
|
299
|
-
// final update of the user state cookie
|
300
|
-
user_state.session_active = false;
|
301
|
-
user_state.last_session_ts = timestamp_now;
|
302
|
-
|
303
|
-
if (!user_consent.analysis || !user_consent.personalization) {
|
304
|
-
logger.debug('\n' + 'write to cookie : ' + cookie_names.user_state);
|
305
|
-
|
306
|
-
cookie_written = j1.writeCookie({
|
307
|
-
name: cookie_names.user_state,
|
308
|
-
data: user_state,
|
309
|
-
secure: secure,
|
310
|
-
expires: 0
|
311
|
-
});
|
312
|
-
} else {
|
313
|
-
logger.debug('\n' + 'write to cookie : ' + cookie_names.user_state);
|
314
|
-
cookie_written = j1.writeCookie({
|
315
|
-
name: cookie_names.user_state,
|
316
|
-
data: user_state,
|
317
|
-
secure: secure,
|
318
|
-
expires: 365
|
319
|
-
});
|
320
|
-
}
|
321
|
-
}); // END beforeunload
|
322
|
-
|
323
293
|
// -----------------------------------------------------------------------
|
324
294
|
// initialize|load user cookies
|
325
295
|
// -----------------------------------------------------------------------
|
@@ -354,11 +324,7 @@ var j1 = (function () {
|
|
354
324
|
}
|
355
325
|
}
|
356
326
|
|
357
|
-
|
358
|
-
// -----------------------------------------------------------------------
|
359
|
-
window.onkeyup = function (event) {
|
360
|
-
if (event.keyCode == 27) window.history.back();
|
361
|
-
};
|
327
|
+
j1.registerEvents(logger);
|
362
328
|
|
363
329
|
// detect middleware (mode 'app') and update user session cookie
|
364
330
|
// -----------------------------------------------------------------------
|
@@ -988,12 +954,16 @@ var j1 = (function () {
|
|
988
954
|
logText = '\n' + 'page finalized successfully';
|
989
955
|
logger.info(logText);
|
990
956
|
|
991
|
-
// do a (smooth) scroll if all nav elements ready
|
957
|
+
// do a (smooth) scroll for static pages (if all nav elements ready)
|
992
958
|
// -----------------------------------------------------------------
|
993
959
|
var dependencies_met_navigator_finished = setInterval(function() {
|
994
|
-
|
960
|
+
// NOTE: dynamic pages scrolled at a growth ratio of 100 percent as well
|
961
|
+
if (j1.adapter.navigator.getState() == 'finished' && staticPage) {
|
995
962
|
// if a page requested contains an anchor element, do a smooth scroll
|
996
|
-
|
963
|
+
logger.debug('\n' + 'Scroll static page, growth ratio at 100 (percent)');
|
964
|
+
// NOTE: on some pages, the offset is NOT correct
|
965
|
+
var scrollOffset = j1.getScrollOffset();
|
966
|
+
j1.scrollTo(scrollOffset);
|
997
967
|
clearInterval(dependencies_met_navigator_finished);
|
998
968
|
}
|
999
969
|
}, 25);
|
@@ -1003,7 +973,6 @@ var j1 = (function () {
|
|
1003
973
|
// web mode
|
1004
974
|
// ---------------------------------------------------------------------
|
1005
975
|
setTimeout (function() {
|
1006
|
-
// j1.setState('finished');
|
1007
976
|
logger.info('\n' + 'state: finished');
|
1008
977
|
logger.info('\n' + 'page initialization: finished');
|
1009
978
|
|
@@ -1129,15 +1098,19 @@ var j1 = (function () {
|
|
1129
1098
|
logText = '\n' + 'page finalized successfully';
|
1130
1099
|
logger.info(logText);
|
1131
1100
|
|
1132
|
-
// do a (smooth) scroll if all nav elements ready
|
1101
|
+
// do a (smooth) scroll for static pages (if all nav elements ready)
|
1133
1102
|
// -------------------------------------------------------------------
|
1134
1103
|
var dependencies_met_navigator_finished = setInterval(function() {
|
1135
|
-
if (j1.adapter.navigator.getState() == 'finished') {
|
1104
|
+
if (j1.adapter.navigator.getState() == 'finished' && staticPage) {
|
1105
|
+
logger.debug('\n' + 'Scroll static page, growth ratio at 100 (percent)');
|
1136
1106
|
// if a page requested contains an anchor element, do a smooth scroll
|
1137
|
-
|
1107
|
+
// NOTE: on some pages, the offset is NOT correct
|
1108
|
+
var scrollOffset = j1.getScrollOffset();
|
1109
|
+
j1.scrollTo(scrollOffset);
|
1138
1110
|
clearInterval(dependencies_met_navigator_finished);
|
1139
1111
|
}
|
1140
1112
|
}, 25);
|
1113
|
+
|
1141
1114
|
}, flickerTimeout);
|
1142
1115
|
}
|
1143
1116
|
},
|
@@ -1191,11 +1164,11 @@ var j1 = (function () {
|
|
1191
1164
|
|
1192
1165
|
// -------------------------------------------------------------------------
|
1193
1166
|
// getScrollOffset()
|
1194
|
-
// Calculate offset for correct (smooth) scroll position
|
1167
|
+
// Calculate offset for a correct (smooth) scroll position
|
1195
1168
|
// -------------------------------------------------------------------------
|
1196
1169
|
getScrollOffset: function () {
|
1197
1170
|
var scrollOffset;
|
1198
|
-
var offsetCorrection;
|
1171
|
+
var offsetCorrection = 0;
|
1199
1172
|
|
1200
1173
|
var $pagehead = $('.attic');
|
1201
1174
|
var $navbar = $('nav.navbar');
|
@@ -1210,8 +1183,10 @@ var j1 = (function () {
|
|
1210
1183
|
|
1211
1184
|
// Unclear why or what element cause the need of a correction
|
1212
1185
|
// TODO: General revision of scrollOffset needed
|
1186
|
+
// NOTE: Disabled for now
|
1213
1187
|
//
|
1214
|
-
offsetCorrection = navbarType == 'fixed' ? 10 : -25;
|
1188
|
+
// offsetCorrection = navbarType == 'fixed' ? 10 : -25;
|
1189
|
+
|
1215
1190
|
scrollOffset = navbarType == 'fixed'
|
1216
1191
|
? -1*(n + a + f) + offsetCorrection
|
1217
1192
|
: -1*(n + a + f) + h + offsetCorrection;
|
@@ -1224,23 +1199,25 @@ var j1 = (function () {
|
|
1224
1199
|
// Scrolls smooth to any anchor referenced by an page URL on
|
1225
1200
|
// e.g. a page reload. Values e.g for delay are taken from
|
1226
1201
|
// TOCCER module
|
1202
|
+
// NOTE: crollTo() is triggered by 'onDocumentHeigthChange'
|
1227
1203
|
// -------------------------------------------------------------------------
|
1228
|
-
scrollTo: function () {
|
1204
|
+
scrollTo: function (offset) {
|
1229
1205
|
var logger = log4javascript.getLogger('j1.scrollTo');
|
1230
1206
|
var anchor = window.location.href.split('#')[1];
|
1231
1207
|
var anchor_id = typeof anchor !== 'undefined' ? '#' + anchor : false;
|
1232
1208
|
var scrollDuration = {{toccer_options.scrollSmoothDuration}};
|
1233
|
-
var scrollOffset = j1.getScrollOffset();
|
1209
|
+
var scrollOffset = offset ; // j1.getScrollOffset();
|
1234
1210
|
var isSlider = false;
|
1235
|
-
var selector;
|
1211
|
+
var selector = $(anchor_id);
|
1236
1212
|
|
1237
|
-
|
1238
|
-
|
1239
|
-
|
1213
|
+
// skip invalid anchors|selectors
|
1214
|
+
//
|
1215
|
+
if (typeof anchor === 'undefined' || anchor.includes('googtrans') || !$(selector).length) {
|
1240
1216
|
return false;
|
1241
1217
|
}
|
1242
1218
|
|
1243
1219
|
// Check if the anchor is an slider/gallery element
|
1220
|
+
//
|
1244
1221
|
if (typeof anchor !== 'undefined') {
|
1245
1222
|
isSlider = anchor.includes('slide');
|
1246
1223
|
}
|
@@ -1249,6 +1226,7 @@ var j1 = (function () {
|
|
1249
1226
|
// scroll only, if an anchor is given with an URL
|
1250
1227
|
selector = $(anchor_id);
|
1251
1228
|
if (selector.length) {
|
1229
|
+
logger.info('\n' + 'scrollTo header: ' + anchor_id);
|
1252
1230
|
j1.core.scrollSmooth.scroll(anchor_id, {
|
1253
1231
|
duration: scrollDuration,
|
1254
1232
|
offset: scrollOffset,
|
@@ -2251,6 +2229,7 @@ var j1 = (function () {
|
|
2251
2229
|
window.location.href = 'about:blank';
|
2252
2230
|
}
|
2253
2231
|
},
|
2232
|
+
|
2254
2233
|
// -------------------------------------------------------------------------
|
2255
2234
|
// goBack()
|
2256
2235
|
// Redirect current page to last visited page (referrer)
|
@@ -2258,6 +2237,102 @@ var j1 = (function () {
|
|
2258
2237
|
goBack: function () {
|
2259
2238
|
// where visitor has come from
|
2260
2239
|
window.location.href = document.referrer;
|
2240
|
+
},
|
2241
|
+
|
2242
|
+
// -------------------------------------------------------------------------
|
2243
|
+
// registerEvents()
|
2244
|
+
// Redirect current page to last visited page (referrer)
|
2245
|
+
// -------------------------------------------------------------------------
|
2246
|
+
registerEvents: function (logger) {
|
2247
|
+
|
2248
|
+
// Add ResizeObserver to monitor the page height of dynamic pages
|
2249
|
+
// see: https://stackoverflow.com/questions/14866775/detect-document-height-change
|
2250
|
+
//
|
2251
|
+
const observer = new ResizeObserver(entries => {
|
2252
|
+
const scrollOffset = j1.getScrollOffset();
|
2253
|
+
// Set autoScrollRatioThreshold if NOT specified
|
2254
|
+
autoScrollRatioThreshold = autoScrollRatioThreshold ? autoScrollRatioThreshold : 100;
|
2255
|
+
for (const entry of entries) {
|
2256
|
+
|
2257
|
+
// each entry is an instance of ResizeObserverEntry
|
2258
|
+
pageHeight = Math.round(entry.contentRect.height);
|
2259
|
+
|
2260
|
+
// set base height on a page height <> 0
|
2261
|
+
if (!pageBaseHeigth && pageHeight) {
|
2262
|
+
pageBaseHeigth = pageHeight;
|
2263
|
+
}
|
2264
|
+
|
2265
|
+
// calculation of the ratio a page that has lengthened
|
2266
|
+
if (pageBaseHeigth) {
|
2267
|
+
pageGrowthRatio = Math.round(pageHeight / pageBaseHeigth *100);
|
2268
|
+
}
|
2269
|
+
|
2270
|
+
// log only if page grown above 'autoScrollRatioThreshold'
|
2271
|
+
if (pageGrowthRatio > autoScrollRatioThreshold) {
|
2272
|
+
logger.debug('\n' + 'Page growth ratio reached the threshold: ', pageGrowthRatio);
|
2273
|
+
}
|
2274
|
+
|
2275
|
+
// identify a 'staticPage'
|
2276
|
+
if (pageGrowthRatio < autoScrollRatioThreshold) {
|
2277
|
+
staticPage = true;
|
2278
|
+
} else {
|
2279
|
+
// identify a page as 'dynamic' if autoScrollRatioThreshold reached
|
2280
|
+
staticPage = false;
|
2281
|
+
}
|
2282
|
+
|
2283
|
+
// dynamic page that has been increased in size above the threshold
|
2284
|
+
if (pageGrowthRatio > autoScrollRatioThreshold) {
|
2285
|
+
j1.scrollTo(scrollOffset);
|
2286
|
+
logger.debug('\n' + 'Scroll dynamic page on growth ratio: ', pageGrowthRatio);
|
2287
|
+
}
|
2288
|
+
}
|
2289
|
+
});
|
2290
|
+
// monitor the page 'body'
|
2291
|
+
observer.observe(document.querySelector('body'));
|
2292
|
+
|
2293
|
+
// -----------------------------------------------------------------------
|
2294
|
+
// final updates before browser page|tab
|
2295
|
+
// see: https://stackoverflow.com/questions/3888902/detect-browser-or-tab-closing
|
2296
|
+
// -----------------------------------------------------------------------
|
2297
|
+
window.addEventListener('beforeunload', function (event) {
|
2298
|
+
var cookie_names = j1.getCookieNames();
|
2299
|
+
var date = new Date();
|
2300
|
+
var timestamp_now = date.toISOString();
|
2301
|
+
var user_state = j1.readCookie(cookie_names.user_state);
|
2302
|
+
var user_consent = j1.readCookie(cookie_names.user_consent);
|
2303
|
+
var url = new liteURL(window.location.href);
|
2304
|
+
var secure = (url.protocol.includes('https')) ? true : false;
|
2305
|
+
var ep_status;
|
2306
|
+
var url;
|
2307
|
+
var baseUrl;
|
2308
|
+
|
2309
|
+
// final update of the user state cookie
|
2310
|
+
user_state.session_active = false;
|
2311
|
+
user_state.last_session_ts = timestamp_now;
|
2312
|
+
|
2313
|
+
if (!user_consent.analysis || !user_consent.personalization) {
|
2314
|
+
|
2315
|
+
cookie_written = j1.writeCookie({
|
2316
|
+
name: cookie_names.user_state,
|
2317
|
+
data: user_state,
|
2318
|
+
secure: secure,
|
2319
|
+
expires: 0
|
2320
|
+
});
|
2321
|
+
} else {
|
2322
|
+
cookie_written = j1.writeCookie({
|
2323
|
+
name: cookie_names.user_state,
|
2324
|
+
data: user_state,
|
2325
|
+
secure: secure,
|
2326
|
+
expires: 365
|
2327
|
+
});
|
2328
|
+
}
|
2329
|
+
}); // END beforeunload
|
2330
|
+
|
2331
|
+
// initialize event handler for window/history/back on <ESC>
|
2332
|
+
//
|
2333
|
+
window.onkeyup = function (event) {
|
2334
|
+
if (event.keyCode == 27) window.history.back();
|
2335
|
+
};
|
2261
2336
|
}
|
2262
2337
|
};
|
2263
2338
|
}) (j1, window);
|
@@ -275,7 +275,8 @@ j1.adapter.mmenu = (function (j1, window) {
|
|
275
275
|
|
276
276
|
const drawer_{{menu_id}} = mmenu_{{menu_id}}.offcanvas ({
|
277
277
|
// drawer options
|
278
|
-
position: mmOptions.mmenu_drawer.position
|
278
|
+
position: mmOptions.mmenu_drawer.position,
|
279
|
+
toggle_mode: false
|
279
280
|
});
|
280
281
|
|
281
282
|
const navigator_{{menu_id}} = mmenu_{{menu_id}}.navigation ({
|
@@ -286,19 +287,40 @@ j1.adapter.mmenu = (function (j1, window) {
|
|
286
287
|
theme: mmOptions.mmenu_navigator.theme
|
287
288
|
});
|
288
289
|
|
290
|
+
// make sure the QL menu is shown, if mmenu is closed
|
291
|
+
// by mmenu backdrop
|
292
|
+
//
|
293
|
+
$(".mm-ocd").click(function() {
|
294
|
+
$('#quicklinks').show();
|
295
|
+
return false
|
296
|
+
});
|
297
|
+
|
289
298
|
// Toggle Bars (Hamburger) for the NavBar to open|close
|
290
299
|
// the mmenu drawer
|
300
|
+
//
|
291
301
|
$('{{item.menu.content.button}}').each(function(e) {
|
292
302
|
var $this = $(this);
|
303
|
+
var clicked;
|
293
304
|
|
294
|
-
$this.on('click', function(e){
|
305
|
+
$this.on('click', function(e) {
|
295
306
|
const button_{{menu_id}} = this;
|
296
307
|
e.preventDefault();
|
297
|
-
|
308
|
+
// toggle mmenu open|clse
|
309
|
+
clicked = $('body.mm-ocd-opened').length ? true : false;
|
310
|
+
if (clicked) {
|
311
|
+
drawer_{{menu_id}}.close();
|
312
|
+
$('#quicklinks').show();
|
313
|
+
clicked = false;
|
314
|
+
} else {
|
315
|
+
$('#quicklinks').hide();
|
316
|
+
drawer_{{menu_id}}.open();
|
317
|
+
clicked = true;
|
318
|
+
}
|
298
319
|
});
|
299
320
|
});
|
300
321
|
|
301
322
|
// jadams, 2020-09-30: loading the menues (themes) if enabled
|
323
|
+
//
|
302
324
|
if (themerEnabled) {
|
303
325
|
// load REMOTE themes from Bootswatch API (localFeed EMPTY!)
|
304
326
|
$('#remote_themes_mmenu').bootstrapThemeSwitcher({
|
@@ -716,8 +716,8 @@ j1.adapter.navigator = (function (j1, window) {
|
|
716
716
|
|
717
717
|
// navQuicklinks styles
|
718
718
|
// -----------------------------------------------------------------------
|
719
|
-
$('head').append('<style>.
|
720
|
-
$('head').append('<style>.
|
719
|
+
$('head').append('<style>.quicklink-nav> ul > li > a { color: ' +navQuicklinksOptions.icon_color+ ' !important; }</style>');
|
720
|
+
$('head').append('<style>.quicklink-nav> ul > li > a:hover { color: ' +navQuicklinksOptions.icon_color_hover+ ' !important; }</style>');
|
721
721
|
|
722
722
|
// navMenu styles
|
723
723
|
// -----------------------------------------------------------------------
|