j1-template 2020.0.2 → 2020.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/_includes/themes/j1/modules/navigator/generator.html +24 -18
  3. data/assets/data/menu.html +4 -4
  4. data/assets/data/mmenu.html +455 -0
  5. data/assets/themes/j1/core/css/bootstrap.css +116 -93
  6. data/assets/themes/j1/core/css/bootstrap.min.css +4 -4
  7. data/assets/themes/j1/core/css/theme_extensions.css +11 -22
  8. data/assets/themes/j1/core/css/theme_extensions.min.css +1 -1
  9. data/assets/themes/j1/core/css/uno.css +11 -22
  10. data/assets/themes/j1/core/css/uno.min.css +1 -1
  11. data/assets/themes/j1/core/css/vendor.css +130 -104
  12. data/assets/themes/j1/core/css/vendor.min.css +4 -4
  13. data/assets/themes/j1/core/js/template.js +296 -24
  14. data/assets/themes/j1/core/js/template.js.map +1 -1
  15. data/assets/themes/j1/core/js/template.min.js +1 -1
  16. data/lib/j1/version.rb +1 -1
  17. data/lib/j1_app/j1_auth_manager/auth_manager.rb +8 -0
  18. data/lib/starter_web/Gemfile +1 -1
  19. data/lib/starter_web/_config.yml +1 -1
  20. data/lib/starter_web/_data/modules/defaults/navigator.yml +27 -4
  21. data/lib/starter_web/_data/modules/navigator.yml +7 -1
  22. data/lib/starter_web/_data/resources.yml +44 -5
  23. data/lib/starter_web/apps/public/{cc → cc/cc.yml} +0 -0
  24. data/lib/starter_web/apps/public/cc/index.adoc +107 -0
  25. data/lib/starter_web/assets/themes/j1/adapter/js/algolia.js +321 -0
  26. data/lib/starter_web/assets/themes/j1/adapter/js/mmenu.js +269 -0
  27. data/lib/starter_web/assets/themes/j1/adapter/js/navigator.js +21 -15
  28. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/css/mmenu-light.css +384 -0
  29. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/css/mmenu-light.min.css +10 -0
  30. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/js/mmenu-light.js +213 -0
  31. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/js/mmenu-light.min.js +205 -0
  32. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/js/mmenu-light.polyfills.js +118 -0
  33. data/lib/starter_web/package.json +1 -1
  34. data/lib/starter_web/pages/public/site_search.adoc +196 -0
  35. data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
  36. data/lib/starter_web/utilsrv/package.json +1 -1
  37. metadata +13 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d7984c1650f6ccb9ef434fa65f54e85cd625bd133435fc073ba851a9cb83abe2
4
- data.tar.gz: f4b738d93a3f61f97af77ffe7d052b921fe15255752eb0b11e3b2645e81db7ce
3
+ metadata.gz: 5d3711d432bcb8345139685cd06df4952544d74b98bcce348dc3a23435d023ac
4
+ data.tar.gz: b5a7e08cdff2b51c815d86cada41ac601c57a083465d1bee31883dae2596a520
5
5
  SHA512:
6
- metadata.gz: 186ea24e4f24ee80ddb74957ace1f6a42f4ba8c741f2a7ae6fe4df1400979772a1ee9fa404a883a95e4e09e7d6c6a9236352648c66e846c0885606e65d34d75d
7
- data.tar.gz: df3b80e39aa47a1704ec296b3c8a87cdb9ff71f9b3866657ead7143d7a797dfeb12020d6e3283a7968a06382bab603a01852a4398dcdf1cf749fb49d2d7b92d2
6
+ metadata.gz: 17d0793bbc2f65a280e4447b5b8d5b2cfa47e9541c24be3d118fa51165fd50d576bc3ca428d32892201340562213b714dffe73b9d05715f611a44ad11dc2e78b
7
+ data.tar.gz: 908afd620d27216ce001e2861a8e110df0bf8fef04957df898ae37cc050f3767ed5cf55b7a82342bc2e3c908aa0e83368ca5de18a8ac74bf16cb80c413fd14af
@@ -1,7 +1,7 @@
1
- {% comment %}
1
+ {% comment %}
2
2
  # -----------------------------------------------------------------------------
3
3
  # ~/_includes/themes/j1/modules/navigator/generator.html
4
- # Liquid HTML template to create the Navigation System for J1 Template
4
+ # Liquid HTML template to create the Navigation System for J1 Template
5
5
  #
6
6
  # Product/Info:
7
7
  # https://jekyll.one
@@ -41,7 +41,7 @@
41
41
  {% assign template_config = site.data.template_settings %}
42
42
  {% assign blocks = site.data.blocks %}
43
43
  {% assign modules = site.data.modules %}
44
-
44
+
45
45
  {% comment %} Set config files
46
46
  -------------------------------------------------------------------------------- {% endcomment %}
47
47
  {% assign authentication_defaults = modules.defaults.authentication.defaults %}
@@ -92,17 +92,18 @@
92
92
  -------------------------------------------------------------------------------- {% endcomment %}
93
93
  {% assign nav_bar_id = navigator_defaults.nav_bar.xhr_container_id %}
94
94
  {% assign nav_menu_id = navigator_defaults.nav_menu.xhr_container_id %}
95
+ {% assign nav_mmenu_id = navigator_defaults.nav_mmenu.xhr_container_id %}
95
96
  {% assign nav_sidebar_id = navigator_defaults.nav_sidebar.xhr_container_id %}
96
97
  {% assign nav_quicklinks_id = navigator_defaults.nav_quicklinks.xhr_container_id %}
97
98
  {% assign authclient_modals_id = authclient_options.xhr_container_id %}
98
99
  {% assign nav_navbar_media_breakpoint = navigator_defaults.nav_bar.media_breakpoint %}
99
100
 
100
- {% comment %} Set navBarProperties
101
+ {% comment %} Set navBarProperties
101
102
  -------------------------------------------------------------------------------- {% endcomment %}
102
103
  {% if nav_fixed %}
103
104
  {% assign nav_bar_fixed = 'navbar-fixed' %}
104
105
  {% if nav_style == 'overlay' %} {% assign nav_bar_style = 'navbar-transparent' %} {% endif %}
105
- {% endif %}
106
+ {% endif %}
106
107
 
107
108
  {% if nav_color == 'light' %}
108
109
  {% assign nav_bar_color = 'light' %}
@@ -111,7 +112,6 @@
111
112
  {% capture nav_bar_default_css_classes %}navbar navigator navbar-expand-{{nav_navbar_media_breakpoint}} navbar-default{% endcapture %}
112
113
 
113
114
 
114
-
115
115
  {% comment %} Main
116
116
  -------------------------------------------------------------------------------- {% endcomment %}
117
117
 
@@ -119,11 +119,17 @@
119
119
  -------------------------------------------------------------------------------- {% endcomment %}
120
120
  <!-- [INFO ] [j1.modules.navigator.generator.html ] [ check for topsearch ] -->
121
121
  {% if topsearch_options.enabled %}
122
- <!-- [INFO ] [j1.modules.navigator.generator.html ] [ start processing: topsearch ] -->
122
+ <!-- [INFO ] [j1.modules.navigator.generator.html ] [ start processing: topsearch ] -->
123
123
  {% include {{ topsearch_create }} options=topsearch_options %}
124
124
  <!-- [INFO ] [j1.modules.navigator.generator.html ] [ end processing: topsearch ] -->
125
125
  {% endif %}
126
126
 
127
+ {% comment %} Place Mobile NAV menu container (HTML data loaded via AJAX)
128
+ ------------------------------------------------------------------------------ {% endcomment %}
129
+ <!-- [INFO ] [j1.modules.navigator.generator.html ] [ start processing: mmenu ] -->
130
+ <!-- [INFO ] [j1.modules.navigator.generator.html ] [ place nav menu container for AJAX load (mobile) ] -->
131
+ <nav id="{{nav_mmenu_id}}"></nav>
132
+
127
133
  <!-- [INFO ] [j1.modules.navigator.generator.html ] [ start processing: navigation ] -->
128
134
  <nav id="{{nav_bar_id}}" class="{{nav_bar_default_css_classes}} {{nav_bar_color}} {{nav_bar_fixed}} {{nav_bar_style}}">
129
135
 
@@ -147,35 +153,37 @@
147
153
  {% else %}
148
154
  <a class="navbar-brand" href="{{home_path}}" "> <b><font color="{{site.brand.text_color}}">{{ site.brand.text }}</font></b></a>
149
155
  {% endif %}
150
- <button type="button" class="navigator navbar-toggler animated fadeIn" data-toggle="collapse" data-target="#{{nav_menu_id}}" aria-controls="{{nav_menu_id}}" aria-expanded="false" aria-label="Toggle navigation">
156
+ <button id="navbar-toggler" type="button" class="navigator navbar-toggler animated fadeIn" data-toggle="collapse" data-target="#{{nav_menu_id}}" aria-controls="{{nav_menu_id}}" aria-expanded="false" aria-label="Toggle navigation">
151
157
  <i class="mdi mdi-menu mdi-48px"></i>
152
158
  </button>
153
159
  {% elsif brand_position == "right" %}
154
160
  <!-- [INFO ] [j1.modules.navigator.generator.html ] [ place brand to the: right ] -->
155
- <button type="button" class="navigator navbar-toggler animated fadeIn" data-toggle="collapse" data-target="#{{nav_menu_id}}" aria-controls="{{nav_menu_id}}" aria-expanded="false" aria-label="Toggle navigation">
156
- <i class="mdi mdi-menu mdi-48px"></i>
157
- </button>
158
161
  {% if site.brand.image %}
159
162
  <a class="navbar-brand" href="{{ home_path }}"> <img src="{{ site.data.template_settings.image_path }}/{{ site.brand.image }}" height="{{ site.brand.image_height }}" alt="{{ site.brand.text }}"></a>
160
163
  {% else %}
161
164
  <a class="navbar-brand" href="{{home_path}}" "> <b><font color="{{site.brand.text_color}}">{{ site.brand.text }}</font></b></a>
162
165
  {% endif %}
163
- {% else %}
164
- <!-- [INFO ] [j1.modules.navigator.generator.html ] [ place brand to default position: left ] -->
165
- <button type="button" class="navigator navbar-toggler animated fadeIn" data-toggle="collapse" data-target="#{{nav_menu_id}}" aria-controls="{{nav_menu_id}}" aria-expanded="false" aria-label="Toggle navigation">
166
+ <!-- [INFO ] [j1.modules.navigator.generator.html ] [ place menu toggler to the: left ] -->
167
+ <button id="navbar-toggler" type="button" class="navigator navbar-toggler animated fadeIn" data-toggle="collapse" data-target="#{{nav_menu_id}}" aria-controls="{{nav_menu_id}}" aria-expanded="false" aria-label="Toggle navigation">
166
168
  <i class="mdi mdi-menu mdi-48px"></i>
167
169
  </button>
170
+ {% else %}
171
+ <!-- [INFO ] [j1.modules.navigator.generator.html ] [ place brand to default position: left ] -->
168
172
  {% if site.brand.image %}
169
173
  <a class="navbar-brand" href="{{ home_path }}"> <img src="{{ site.data.template_settings.image_path }}/{{ site.brand.image }}" height="{{ site.brand.image_height }}" alt="{{ site.brand.text }}"></a>
170
174
  {% else %}
171
175
  <a class="navbar-brand" href="{{home_path}}" "> <b><font color="{{site.brand.text_color}}">{{ site.brand.text }}</font></b></a>
172
176
  {% endif %}
177
+ <!-- [INFO ] [j1.modules.navigator.generator.html ] [ place menu toggler to the: right ] -->
178
+ <button id="navbar-toggler" type="button" class="navigator navbar-toggler animated fadeIn" data-toggle="collapse" data-target="#{{nav_menu_id}}" aria-controls="{{nav_menu_id}}" aria-expanded="false" aria-label="Toggle navigation">
179
+ <i class="mdi mdi-menu mdi-48px"></i>
180
+ </button>
173
181
  {% endif %}
174
182
 
175
- {% comment %} Place NAV menu container (HTML data loaded via AJAX)
183
+ {% comment %} Place Desktop NAV menu container (HTML data loaded via AJAX)
176
184
  ------------------------------------------------------------------------------ {% endcomment %}
177
185
  <!-- [INFO ] [j1.modules.navigator.generator.html ] [ start processing: nav bar ] -->
178
- <!-- [INFO ] [j1.modules.navigator.generator.html ] [ place nav menu container for AJAX load ] -->
186
+ <!-- [INFO ] [j1.modules.navigator.generator.html ] [ place nav menu container for AJAX load (desktop) ] -->
179
187
  <div id="{{nav_menu_id}}" class="collapse"></div>
180
188
 
181
189
  {% comment %} Place|Hide Quicklinks container (HTML data loaded via AJAX)
@@ -198,5 +206,3 @@
198
206
  <div id="{{authclient_modals_id}}" class="authclient_modals"></div>
199
207
  <!-- [INFO ] [j1.modules.navigator.generator.html ] [ end processing: auth_client ] -->
200
208
  <!-- [INFO ] [j1.modules.navigator.generator.html ] [ end processing: navigation ] -->
201
-
202
-
@@ -138,9 +138,9 @@ regenerate: true
138
138
  <!-- div id="{{nav_menu_id}}" class="{{dropdown_collapse}}" -->
139
139
  <!-- div class="{{dropdown_collapse}}" -->
140
140
  {% if nav_menu_animation %}
141
- <ul class="nav navbar-nav navigator navbar-{{nav_bar_position}}" data-in="{{animate_in}}" data-out="{{animate_out}}">
141
+ <ul id="desktop_menu" class="nav navbar-nav navigator navbar-{{nav_bar_position}}" data-in="{{animate_in}}" data-out="{{animate_out}}">
142
142
  {% else %}
143
- <ul class="nav navbar-nav navigator navbar-{{nav_bar_position}}" data-in="fadeIn" data-out="fadeOut">
143
+ <ul id="desktop_menu" class="nav navbar-nav navigator navbar-{{nav_bar_position}}" data-in="fadeIn" data-out="fadeOut">
144
144
  {% endif %}
145
145
 
146
146
  {% for menu in navigator_menu_config %}
@@ -460,10 +460,10 @@ regenerate: true
460
460
  <!-- [INFO ] [j1.modules.navigator.menu.html ] [nav_menu_settings: end menu] -->
461
461
  </ul>
462
462
  <!-- [INFO ] [j1.modules.navigator.menu.html ] [nav_menu_settings: end navbar] -->
463
- <!-- div -->
463
+ <!-- div -->
464
464
  <!-- [INFO ] [j1.modules.navigator.menu.html ] [nav_menu_settings: end processing] -->
465
465
 
466
466
  {% endcapture %}
467
467
 
468
468
  {{ cache | pretty_print | remove:'<html><body>' | remove:'</body></html>' | strip_empty_lines }}
469
- {% assign cache = nil %}
469
+ {% assign cache = nil %}
@@ -0,0 +1,455 @@
1
+ ---
2
+ regenerate: true
3
+ ---
4
+
5
+ {% capture cache %}
6
+
7
+ {% comment %}
8
+ # -----------------------------------------------------------------------------
9
+ # ~/assets/data/menu.html
10
+ # Liquid procedure to generate HTML portion of the main menu bar
11
+ # NOTE: Loaded dynamically by J1 NAV Manager module (AJAX)
12
+ #
13
+ # Product/Info:
14
+ # https://jekyll.one
15
+ #
16
+ # Copyright (C) 2020 Juergen Adams
17
+ #
18
+ # J1 Template is licensed under the MIT License.
19
+ # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE
20
+ # -----------------------------------------------------------------------------
21
+ # Test data:
22
+ # {{variable | debug}}
23
+ # -----------------------------------------------------------------------------
24
+ {% endcomment %}
25
+
26
+ {% comment %} Liquid procedures
27
+ -------------------------------------------------------------------------------- {% endcomment %}
28
+ {% capture select_color %}themes/{{site.template.name}}/procedures/global/select_color.proc{% endcapture %}
29
+ {% capture select_icon_size %}themes/{{site.template.name}}/procedures/global/select_icon_size.proc{% endcapture %}
30
+
31
+
32
+ {% comment %} Liquid var initialization
33
+ -------------------------------------------------------------------------------- {% endcomment %}
34
+
35
+ {% comment %} Set config files
36
+ -------------------------------------------------------------------------------- {% endcomment %}
37
+ {% assign site_config = site %}
38
+ {% assign template_config = site.data.template_settings %}
39
+ {% assign modules = site.data.modules %}
40
+
41
+ {% comment %} Set config data
42
+ -------------------------------------------------------------------------------- {% endcomment %}
43
+ {% assign navigator_settings = modules.navigator.settings %}
44
+ {% assign navigator_defaults = modules.defaults.navigator.defaults %}
45
+ {% assign navigator_menu_config = modules.navigator_menu %}
46
+
47
+ {% assign themer_defaults = modules.defaults.themer.defaults %}
48
+ {% assign themer_settings = modules.themer.settings %}
49
+
50
+ {% assign nav_bar_defaults = navigator_defaults.nav_bar %}
51
+ {% assign nav_bar_settings = navigator_settings.nav_bar %}
52
+ {% assign nav_menu_defaults = navigator_defaults.nav_menu %}
53
+ {% assign nav_menu_settings = navigator_settings.nav_menu %}
54
+
55
+ {% comment %} Set config options
56
+ -------------------------------------------------------------------------------- {% endcomment %}
57
+ {% assign themer_options = themer_defaults | merge: themer_settings %}
58
+ {% assign nav_bar_options = nav_bar_defaults | merge: nav_bar_settings %}
59
+ {% assign nav_menu_options = nav_menu_defaults | merge: nav_menu_settings %}
60
+ {% assign theme_preview = themer_options.preview_page %}
61
+ {% assign nav_menu_id = nav_menu_options.id %}
62
+
63
+ {% assign ext = '' %}
64
+ {% if site.permalink == 'none' %}
65
+ {% assign ext = '.html' %}
66
+ {% endif %}
67
+
68
+ <!-- [DEBUG ] [j1.modules.mmenu.html ] [detect bs type] -->
69
+ {% assign bs_type = 'bmd4' %}
70
+ {% if navigator_settings.bs_type == 'bs4' %}
71
+ {% assign bs_type = 'bs4' %}
72
+ {% endif %}
73
+
74
+ {% if bs_type == 'bmd4' %}
75
+ {% assign dropdown_collapse = 'collapse' %}
76
+ {% elsif bs_type == 'bs4' %}
77
+ {% assign dropdown_collapse = 'fake-class collapse' %}
78
+ {% endif %}
79
+
80
+ <!-- [DEBUG ] [j1.modules.mmenu.html ] [bs type detected: {{bs_type}}] -->
81
+
82
+ {% comment %} Set navBarOptions
83
+ -------------------------------------------------------------------------------- {% endcomment %}
84
+ {% assign nav_bar_position = nav_bar_options.position %}
85
+
86
+ {% comment %} Set navMenuOptions
87
+ -------------------------------------------------------------------------------- {% endcomment %}
88
+ {% assign nav_menu_animation = nav_menu_options.dropdown_animate %}
89
+ {% if nav_menu_animation %}
90
+ {% assign animate_in = nav_menu_options.dropdown_animate_in %}
91
+ {% assign animate_out = nav_menu_options.dropdown_animate_out %}
92
+ {% endif %}
93
+
94
+ {% comment %} Set base nav features
95
+ -------------------------------------------------------------------------------- {% endcomment %}
96
+ {% capture nav_menu_position %}dropdown-menu-{{nav_bar_position}}{% endcapture %}
97
+ {% unless nav_menu_animation %} {% assign nav_menu_animation = false %} {% endunless %}
98
+
99
+ <!-- [DEBUG ] [j1.modules.mmenu.html ] [initialize default menu properties] -->
100
+ {% if nav_menu_options.raised_level %}
101
+ {% assign raised_level = nav_menu_options.raised_level %}
102
+ {% else %}
103
+ {% assign raised_level = 0 %}
104
+ {% endif %}
105
+
106
+ {% comment %} Set base icons and sizes
107
+ -------------------------------------------------------------------------------- {% endcomment %}
108
+ <!-- [DEBUG ] [j1.modules.mmenu.html ] [initialize default menu icon properties] -->
109
+ {% assign nav_menu_icon_family = nav_menu_options.icon_family %}
110
+ {% assign nav_menu_icon_style = nav_menu_options.icon_style %}
111
+ {% assign nav_menu_icon_color = nav_menu_options.icon_color %}
112
+ {% assign nav_menu_icon_size = nav_menu_options.icon_size %}
113
+
114
+ {% assign icon_family = nav_menu_icon_family | strip | downcase %}
115
+
116
+ {% if icon_family == 'fontawesome' or icon_family == 'fontawesome5' %}
117
+ {% assign nav_menu_icon_family = 'fa' %}
118
+ {% assign nav_menu_icon_style = nav_menu_icon_style %}
119
+ {% elsif icon_family == 'mdi' %}
120
+ {% assign nav_menu_icon_family = 'mdi' %}
121
+ {% assign nav_menu_icon_style = nav_menu_icon_style %}
122
+ {% else %}
123
+ {% assign nav_menu_icon_family = 'mdi' %}
124
+ {% assign nav_menu_icon_style = nav_menu_icon_style %}
125
+ {% endif %}
126
+
127
+ {% include {{select_color}} color=nav_menu_icon_color fallback="#9E9E9E" %}
128
+ {% assign nav_menu_icon_color = color %}
129
+
130
+ {% include {{select_icon_size}} family=nav_menu_icon_family size=nav_menu_icon_size %}
131
+ {% assign nav_menu_icon_size = size %}
132
+
133
+
134
+ {% comment %} Main
135
+ -------------------------------------------------------------------------------- {% endcomment %}
136
+
137
+ <!-- [DEBUG ] [j1.modules.mmenu.html ] [collect all nav links for the navigation bar (navbar)] -->
138
+ <!-- div id="{{nav_menu_id}}" class="{{dropdown_collapse}}" -->
139
+ <!-- div class="{{dropdown_collapse}}" -->
140
+ <ul id="mobile_menu">
141
+
142
+ {% for menu in navigator_menu_config %}
143
+
144
+ {% comment %} Identify the menu (item) type
145
+ ---------------------------------------------------------------------------- {% endcomment %}
146
+
147
+ {% if menu.sublevel %}
148
+ {% assign menu_type = 'sublevel_menu' %}
149
+ {% elsif menu.megamenu %}
150
+ {% assign menu_type = 'mega_menu' %}
151
+ {% elsif menu.auth_client %}
152
+ {% assign menu_type = 'auth_client' %}
153
+ {% elsif menu.theme_select %}
154
+ {% assign menu_type = 'theme_select' %}
155
+ {% elsif menu.sublevel == null and menu.megamenu == null and menu.login_menu == null and menu.theme_select == null %}
156
+ {% assign menu_type = 'top_level_item' %}
157
+ {% endif %}
158
+
159
+
160
+ {% comment %} Process all menu sections
161
+ ---------------------------------------------------------------------------- {% endcomment %}
162
+
163
+ {% case menu_type %}
164
+
165
+ {% comment %} Collect items having a SUB menue
166
+ ---------------------------------------------------------------------------- {% endcomment %}
167
+ {% when 'sublevel_menu' %}
168
+ <!-- [INFO ] [j1.modules.mmenu.html ] [found menu-type: sub-menue] -->
169
+ <!-- [INFO ] [j1.modules.mmenu.html ] [submenu level 1 detected] -->
170
+ <li>
171
+ {% if menu.icon == null %}
172
+ <a href="#">{{menu.item}}</a>
173
+ {% else %}
174
+ <a href="#"> <i class="{{nav_menu_icon_style}} {{nav_menu_icon_family}}-{{menu.icon}} {{nav_menu_icon_size}} mr-2" style="color:{{nav_menu_icon_color}}"></i>{{menu.item}}</a>
175
+ {% endif %}
176
+
177
+ <ul>
178
+ {% for level_1 in menu.sublevel %}
179
+ {% if level_1.dropdown == null %}
180
+ {% if level_1.icon == null %}
181
+ {% if level_1.target == null %}
182
+ <li><a href="{{level_1.href}}{{ext}}">{{level_1.title}}</a></li>
183
+ {% else %}
184
+ <li><a href="{{level_1.href}}{{ext}}" target="{{level_1.target}}">{{level_1.title}}</a></li>
185
+ {% endif %}
186
+ {% else %}
187
+ {% if level_1.target == null %}
188
+ <li><a href="{{level_1.href}}{{ext}}"><i class="{{nav_menu_icon_style}} {{nav_menu_icon_family}}-{{level_1.icon}} {{nav_menu_icon_size}} mr-2" style="color:{{nav_menu_icon_color}}"></i> {{level_1.title}}</a></li>
189
+ {% else %}
190
+ <li><a href="{{level_1.href}}{{ext}}" target="{{level_1.target}}"><i class="{{nav_menu_icon_style}} {{nav_menu_icon_family}}-{{level_1.icon}} {{nav_menu_icon_size}} mr-2" style="color:{{nav_menu_icon_color}}"></i> {{level_1.title}}</a></li>
191
+ {% endif %}
192
+ {% endif %}
193
+ {% endif %}
194
+
195
+ {% if level_1.dropdown %}
196
+ <!-- [INFO ] [j1.modules.mmenu.html ] [submenu level 2 (dropdown) detected] -->
197
+ <li>
198
+ {% if level_1.icon == null %}
199
+ <a href="#">{{level_1.title}}</a>
200
+ {% else %}
201
+ <a href="#"><i class="{{nav_menu_icon_style}} {{nav_menu_icon_family}}-{{level_1.icon}} {{nav_menu_icon_size}} mr-2" style="color:{{nav_menu_icon_color}}"></i> {{level_1.title}}</a>
202
+ {% endif %}
203
+
204
+ <ul>
205
+ {% for level_2 in level_1.dropdown %}
206
+ {% if level_2.dropdown == null %}
207
+ {% if level_2.icon == null %}
208
+ {% if level_2.target == null %}
209
+ <li><a href="{{level_2.href}}{{ext}}">{{level_2.title}}</a></li>
210
+ {% else %}
211
+ <li><a href="{{level_2.href}}{{ext}}" target="{{level_2.target}}">{{level_2.title}}</a></li>
212
+ {% endif %}
213
+ {% else %}
214
+ {% if level_2.target == null %}
215
+ <li><a href="{{level_2.href}}{{ext}}"><i class="{{nav_menu_icon_style}} {{nav_menu_icon_family}}-{{level_2.icon}} {{nav_menu_icon_size}} mr-2" style="color:{{nav_menu_icon_color}}"></i> {{level_2.title}}</a></li>
216
+ {% else %}
217
+ <li><a href="{{level_2.href}}{{ext}}" target="{{level_2.target}}"><i class="{{nav_menu_icon_style}} {{nav_menu_icon_family}}-{{level_2.icon}} {{nav_menu_icon_size}} mr-2" style="color:{{nav_menu_icon_color}}"></i> {{level_2.title}}</a></li>
218
+ {% endif %}
219
+ {% endif %}
220
+ {% endif %}
221
+ {% if level_2.dropdown %}
222
+ <!-- [INFO ] [j1.modules.mmenu.html ] [submenu level 3 detected (last level supported)] -->
223
+ <li>
224
+ {% if level_2.icon == null %}
225
+ <a href="#" >{{level_2.title}}</a>
226
+ {% else %}
227
+ <a href="#" ><i class="{{nav_menu_icon_style}} {{nav_menu_icon_family}}-{{level_2.icon}} {{nav_menu_icon_size}} mr-2" style="color:{{nav_menu_icon_color}}"></i> {{level_2.title}}</a>
228
+ {% endif %}
229
+
230
+ <ul>
231
+ {% for level_3 in level_2.dropdown %}
232
+ {% if level_2.icon == null %}
233
+ {% if level_3.target == null %}
234
+ <li><a href="{{level_3.href}}{{ext}}">{{level_3.title}}</a></li>
235
+ {% else %}
236
+ <li><a href="{{level_3.href}}{{ext}}" target="{{level_3.target}}">{{level_3.title}}</a></li>
237
+ {% endif %}
238
+ {% else %}
239
+ {% if level_3.target == null %}
240
+ <li><a href="{{level_3.href}}{{ext}}"><i class="{{nav_menu_icon_style}} {{nav_menu_icon_family}}-{{level_3.icon}} {{nav_menu_icon_size}} mr-2" style="color:{{nav_menu_icon_color}}"></i> {{level_3.title}}</a></li>
241
+ {% else %}
242
+ <li><a href="{{level_3.href}}{{ext}}" target="{{level_3.target}}"><i class="{{nav_menu_icon_style}} {{nav_menu_icon_family}}-{{level_3.icon}} {{nav_menu_icon_size}} mr-2" style="color:{{nav_menu_icon_color}}"></i> {{level_3.title}}</a></li>
243
+ {% endif %}
244
+ {% endif %}
245
+ {% if level_3.divider %} <li class="divider"></li> {% endif %}
246
+ {% endfor %} <!-- [INFO ] [j1.modules.mmenu.html ] [end processing: level 3] -->
247
+ </ul>
248
+ </li>
249
+ {% endif %}
250
+ {% endfor %} <!-- [INFO ] [j1.modules.mmenu.html ] [end processing: level 2] -->
251
+ </ul>
252
+ </li>
253
+ {% endif %}
254
+ {% endfor %} <!-- [INFO ] [j1.modules.mmenu.html ] [end processing: level 1] -->
255
+ </ul>
256
+ </li>
257
+ <!-- [INFO ] [j1.modules.mmenu.html ] [reset menu_type for next loop] -->
258
+ {% assign menu_type = '' %}
259
+
260
+
261
+ {% comment %} Collect items having a MEGA menu (disabled for now)
262
+ ---------------------------------------------------------------------------- {% endcomment %}
263
+ {% when 'mmmmmmmega_menu' %}
264
+ <!-- [INFO ] [j1.modules.mmenu.html ] [found menu-type: megamenu-menue] -->
265
+ <!-- calculate size of mm_columns -->
266
+ {% assign columns = menu.megamenu | size %}
267
+ {% assign columns_width_md = 12 | divided_by:columns %}
268
+ <!-- [INFO ] [j1.modules.mmenu.html ] [Calculated size of mm_columns: {{columns_width_md}}] -->
269
+
270
+ <li>
271
+ <a href="#" >{{menu.item}} </a>
272
+ <ul>
273
+ <li>
274
+ <div class="row">
275
+ {% for megabox in menu.megamenu %}
276
+ <div class="col-menu col-md-{{columns_width_md}} col-sm-6">
277
+ {% if megabox.icon == null %}
278
+ <div class="post-headline mt-2 mb-3">
279
+ <h2 class="title" style="font-size:1.25em !important">{{megabox.title}}</h2>
280
+ </div>
281
+ {% else %}
282
+ <div class="post-headline mt-2 mb-3">
283
+ <h2 class="title" style="font-size:1.25em !important"><i class="{{nav_menu_icon_style}} {{nav_menu_icon_family}}-{{megabox.icon}} mr-2" style="color:{{nav_menu_icon_color}}"></i> {{megabox.title}}</h2>
284
+ </div>
285
+ {% endif %}
286
+ <div class="content">
287
+ <ul class="menu-col">
288
+ {% for links in megabox.column %}
289
+ {% if links.icon == null %}
290
+ <li class="dropdown-megamenu-item"><a href="{{links.href}}{{ext}}" target="{{links.target}}">{{links.title}}</a></li>
291
+ {% else %}
292
+ <li class="dropdown-megamenu-item"><a href="{{links.href}}{{ext}}" target="{{links.target}}"><i class="{{nav_menu_icon_style}} {{nav_menu_icon_family}}-{{links.icon}} {{nav_menu_icon_size}} mr-2" style="color:{{nav_menu_icon_color}}"></i> {{links.title}}</a></li>
293
+ {% endif %}
294
+ {% endfor %}
295
+ </ul>
296
+ </div>
297
+ </div>
298
+ <!-- [INFO ] [j1.modules.mmenu.html ] [megamenu-menue: end megabox] -->
299
+ {% endfor %}
300
+ </div>
301
+ </li>
302
+ </ul>
303
+ </li>
304
+ <!-- [INFO ] [j1.modules.mmenu.html ] [megamenu-menue: end mega-menu] -->
305
+ <!-- [INFO ] [j1.modules.mmenu.html ] [reset menu_type for next loop] -->
306
+ {% assign menu_type = '' %}
307
+
308
+
309
+ {% comment %} Collect TOP-LEVEL items (NO sub-menu)
310
+ -------------------------------------------------------------------------- {% endcomment %}
311
+ {% when 'top_level_item' %}
312
+ <!-- [INFO ] [j1.modules.mmenu.html ] [found menu-type: menu-top-level-only] -->
313
+ {% if menu.icon == null %}
314
+ <!-- [INFO ] [j1.modules.mmenu.html ] [no icon for menu-item found -->
315
+ {% if menu.target == null %}
316
+ <li> <a href="{{menu.href}}{{ext}}">{{menu.item}}</a> </li>
317
+ {% else %}
318
+ <li> <a href="{{menu.href}}{{ext}}" target="{{menu.target}}">{{menu.item}}</a> </li>
319
+ {% endif %}
320
+ {% elsif menu.icon %}
321
+ <!-- [INFO ] [j1.modules.mmenu.html ] [no icon for menu-item found -->
322
+ {% if menu.target == null %}
323
+ <li> <a href="{{menu.href}}{{ext}}"><i class="{{nav_menu_icon_style}} {{nav_menu_icon_family}}-{{menu.icon}} {{nav_menu_icon_size}}" style="color:{{nav_menu_icon_color}}"></i> {{menu.item}}</a> </li>
324
+ {% else %}
325
+ <li> <a href="{{menu.href}}{{ext}}" target="{{menu.target}}"><i class="{{nav_menu_icon_style}} {{nav_menu_icon_family}}-{{menu.icon}} {{nav_menu_icon_size}}" style="color:{{nav_menu_icon_color}}"></i> {{menu.item}}</a> </li>
326
+ {% endif %}
327
+ {% else %}
328
+ <!-- [FATAL ] [nav_menu.menu-top-level-only ] [processing menu item failed] -->
329
+ {% endif %}
330
+ <!-- [INFO ] [j1.modules.mmenu.html ] [menu-top-level-only: end menu] -->
331
+ <!-- [INFO ] [j1.modules.mmenu.html ] [reset menu_type for next loop] -->
332
+ {% assign menu_type = '' %}
333
+
334
+
335
+ {% comment %} Collect items having a LOGIN menu (disabled for now)
336
+ ------------------------------------------------------------------------ {% endcomment %}
337
+ {% when 'aaaaaaauth_client' %}
338
+ <!-- [INFO ] [j1.modules.mmenu.html ] [found menu-type: auth_client] -->
339
+ <li id="menuBarSignInOut" class="dropdown nav-item">
340
+ <a href="#">{{menu.item}} </a>
341
+
342
+ <ul>
343
+ {% assign item_found = 'false' %}
344
+ {% for item in menu.auth_client %}
345
+
346
+ <!-- [INFO ] [j1.modules.mmenu.html ] [START: check signin] -->
347
+ {% if item.mode == 'signin' %}
348
+ <li>
349
+ <a href="#" data-toggle="modal" data-target="#modalOmniSignIn"><i class="{{nav_menu_icon_style}} {{nav_menu_icon_family}}-{{item.icon}} {{nav_menu_icon_size}}" style="color:{{nav_menu_icon_color}}"></i>{{item.title}}</a>
350
+ </li>
351
+ {% assign item_found = 'true' %}
352
+ {% endif %}
353
+ <!-- [INFO ] [j1.modules.mmenu.html ] [END: check signin] -->
354
+
355
+ <!-- [INFO ] [j1.modules.mmenu.html ] [START: check signout] -->
356
+ {% if item.mode == 'signout' %}
357
+ <li>
358
+ <a href="#" data-toggle="modal" data-target="#modalOmniSignOut"><i class="{{nav_menu_icon_style}} {{nav_menu_icon_family}}-{{item.icon}} {{nav_menu_icon_size}}" style="color:{{nav_menu_icon_color}}"></i>{{item.title}}</a>
359
+ </li>
360
+ {% assign item_found = 'true' %}
361
+ {% endif %}
362
+ <!-- [INFO ] [j1.modules.mmenu.html ] [END: check signout] -->
363
+
364
+ {% if item_found == 'false' %}
365
+ <!-- [FATAL ] [j1.modules.mmenu.html ] [no valid menu item config found] -->
366
+ <li>
367
+ {% if item.title %}
368
+ <a href="#" >Invalid: {{item.title}}</a>
369
+ {% else %}
370
+ <a href="#" >Item invalid</a>
371
+ {% endif %}
372
+ </li>
373
+ {% endif %}
374
+
375
+ {% endfor %}
376
+ <!-- [INFO ] [j1.modules.mmenu.html ] [login_menu: end menu] -->
377
+ </ul>
378
+ </li>
379
+ <!-- [INFO ] [j1.modules.mmenu.html ] [reset menu_type for next loop] -->
380
+ {% assign menu_type = '' %}
381
+
382
+ {% comment %} Collect items having a THEMES menu (disabled for now)
383
+ ---------------------------------------------------------------------- {% endcomment %}
384
+ {% when 'ttttttttheme_select' %}
385
+ {% if themer_options.enabled %}
386
+ <!-- [INFO ] [j1.modules.mmenu.html ] [found menu-type: theme_select] -->
387
+ <li>
388
+ <a href="#">{{menu.item}} </a>
389
+ {% if nav_menu_animation %}
390
+ <ul>
391
+ <!-- ul class="dropdown-menu data-in="{{nav_menu_animation}}" data-out="{{nav_menu_animation}}" -->
392
+ {% else %}
393
+ <ul>
394
+ {% endif %}
395
+ {% assign item_found = 'false' %}
396
+ {% for item in menu.theme_select %}
397
+ <!-- check for J1 Theme selector -->
398
+ {% if item.local_themes and item.local_themes == 'enabled' %}
399
+ <li>
400
+ <a href="#"><i class="{{nav_menu_icon_family}} {{nav_menu_icon_family}}-{{item.icon}} {{nav_menu_icon_size}} mr-2" style="color:{{nav_menu_icon_color}}"></i> {{item.title}}</a>
401
+ <ul id="ThemeSelect"> </ul>
402
+ </li>
403
+ {% assign item_found = 'true' %}
404
+ {% endif %} <!-- end J1 theme selector -->
405
+ <!-- check for BootSwatch theme selector -->
406
+ {% if item.bootswatch_themes and item.bootswatch_themes == 'enabled' %}
407
+ <li>
408
+ <a href="#"><i class="{{nav_menu_icon_family}} {{nav_menu_icon_family}}-{{item.icon}} {{nav_menu_icon_size}} mr-2" style="color:{{nav_menu_icon_color}}"></i> {{item.title}}</a>
409
+ <ul id="ThemeList"> </ul>
410
+ </li>
411
+ {% assign item_found = 'true' %}
412
+ {% endif %} <!-- end BootSwatch theme selector -->
413
+ {% if item.preview and item.preview == 'enabled' %}
414
+ <li>
415
+ <a href="{{theme_preview}}" ><i class="{{nav_menu_icon_family}} {{nav_menu_icon_family}}-{{item.icon}} {{nav_menu_icon_size}} mr-2" style="color:{{nav_menu_icon_color}}"></i> {{item.title}}</a>
416
+ </li>
417
+ {% assign item_found = 'true' %}
418
+ {% endif %} <!-- end theme preview -->
419
+ <!-- fallback if no valid config found -->
420
+ {% if item_found == 'false' %}
421
+ <li>
422
+ {% if item.title %}
423
+ <a href="#" >Invalid: {{item.title}}</a>
424
+ {% else %}
425
+ <a href="#" >Item invalid</a>
426
+ {% endif %}
427
+ </li>
428
+ {% endif %} <!-- end fallback -->
429
+ {% endfor %}
430
+ </ul>
431
+ </li>
432
+ <!-- [INFO ] [j1.modules.mmenu.html ] [reset menu_type for next loop] -->
433
+ {% endif %}
434
+ {% assign menu_type = '' %}
435
+
436
+
437
+ {% comment %} Collect items failed
438
+ ---------------------------------------------------------------------- {% endcomment %}
439
+ {% else %}
440
+ <!-- [FATAL ] [j1.modules.mmenu.html ] [detecting menu items|type failed] -->
441
+ {% assign menu_type = '' %}
442
+
443
+ {% endcase %}
444
+
445
+ {% endfor %}
446
+ <!-- [INFO ] [j1.modules.mmenu.html ] [nav_menu_settings: end menu] -->
447
+ </ul>
448
+ <!-- [INFO ] [j1.modules.mmenu.html ] [nav_menu_settings: end navbar] -->
449
+ <!-- div -->
450
+ <!-- [INFO ] [j1.modules.mmenu.html ] [nav_menu_settings: end processing] -->
451
+
452
+ {% endcapture %}
453
+
454
+ {{cache | pretty_print | remove:'<html><body>' | remove:'</body></html>' | strip_empty_lines}}
455
+ {% assign cache = nil %}