j1-template 2024.1.5 → 2024.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (193) hide show
  1. checksums.yaml +4 -4
  2. data/_includes/themes/j1/layouts/content_generator_page.html +0 -34
  3. data/_includes/themes/j1/modules/searcher/generator.html +4 -1
  4. data/_includes/themes/j1/modules/searcher/procedures/topsearch.proc +59 -56
  5. data/assets/data/authclient.html +1 -8
  6. data/assets/data/banner.html +1 -7
  7. data/assets/data/fab.html +2 -13
  8. data/assets/data/footer.html +0 -3
  9. data/assets/data/galeries.html +2 -13
  10. data/assets/data/gemini-ui.html +74 -21
  11. data/assets/data/iframes.html +1 -4
  12. data/assets/data/masonry.html +1 -13
  13. data/assets/data/masterslider.html +10 -21
  14. data/assets/data/menu.html +6 -14
  15. data/assets/data/mmenu.html +6 -5
  16. data/assets/data/mmenu_toc.html +2 -1
  17. data/assets/data/panel.html +4 -11
  18. data/assets/data/particles.yml +8 -8
  19. data/assets/data/quicklinks.html +4 -23
  20. data/assets/data/rtext_resizer.html +3 -1
  21. data/assets/data/slick.html +9 -11
  22. data/assets/data/translator.html +0 -1
  23. data/assets/themes/j1/adapter/js/advertising.js +141 -172
  24. data/assets/themes/j1/adapter/js/algolia.js +61 -54
  25. data/assets/themes/j1/adapter/js/analytics.js +67 -47
  26. data/assets/themes/j1/adapter/js/asciidoctor.js +32 -20
  27. data/assets/themes/j1/adapter/js/attic.js +75 -69
  28. data/assets/themes/j1/adapter/js/bmd.js +195 -177
  29. data/assets/themes/j1/adapter/js/carousel.js +786 -761
  30. data/assets/themes/j1/adapter/js/chatbot.js +77 -35
  31. data/assets/themes/j1/adapter/js/clipboard.js +66 -49
  32. data/assets/themes/j1/adapter/js/comments.js +92 -70
  33. data/assets/themes/j1/adapter/js/cookieConsent.js +466 -462
  34. data/assets/themes/j1/adapter/js/customFunctions.js +52 -35
  35. data/assets/themes/j1/adapter/js/customModule.js +56 -46
  36. data/assets/themes/j1/adapter/js/docsearch.js +54 -34
  37. data/assets/themes/j1/adapter/js/dropdowns.js +65 -52
  38. data/assets/themes/j1/adapter/js/fab.js +123 -109
  39. data/assets/themes/j1/adapter/js/gallery.js +494 -476
  40. data/assets/themes/j1/adapter/js/gemini.js +933 -299
  41. data/assets/themes/j1/adapter/js/iconPicker.js +255 -235
  42. data/assets/themes/j1/adapter/js/iconPickerPage.js +279 -0
  43. data/assets/themes/j1/adapter/js/iframer.js +81 -61
  44. data/assets/themes/j1/adapter/js/j1.js +3285 -3222
  45. data/assets/themes/j1/adapter/js/lazyLoader.js +241 -222
  46. data/assets/themes/j1/adapter/js/lightbox.js +241 -241
  47. data/assets/themes/j1/adapter/js/logger.js +77 -66
  48. data/assets/themes/j1/adapter/js/lunr.js +688 -86
  49. data/assets/themes/j1/adapter/js/masonry.js +426 -411
  50. data/assets/themes/j1/adapter/js/masterslider.js +526 -527
  51. data/assets/themes/j1/adapter/js/mmenu.js +101 -66
  52. data/assets/themes/j1/adapter/js/navigator.js +291 -356
  53. data/assets/themes/j1/adapter/js/particles.js +61 -40
  54. data/assets/themes/j1/adapter/js/rangeSlider.js +65 -48
  55. data/assets/themes/j1/adapter/js/rouge.js +287 -269
  56. data/assets/themes/j1/adapter/js/rtable.js +309 -293
  57. data/assets/themes/j1/adapter/js/rtextResizer.js +57 -44
  58. data/assets/themes/j1/adapter/js/scroller.js +170 -133
  59. data/assets/themes/j1/adapter/js/slick.js +487 -485
  60. data/assets/themes/j1/adapter/js/slimSelect.js +290 -0
  61. data/assets/themes/j1/adapter/js/speak2me.js +124 -128
  62. data/assets/themes/j1/adapter/js/themeToggler.js +280 -260
  63. data/assets/themes/j1/adapter/js/{themer.js → themes.js} +145 -113
  64. data/assets/themes/j1/adapter/js/toccer.js +87 -54
  65. data/assets/themes/j1/adapter/js/translator.js +73 -70
  66. data/assets/themes/j1/adapter/js/waves.js +74 -58
  67. data/assets/themes/j1/core/css/themes/unolight/bootstrap.css +29 -11
  68. data/assets/themes/j1/core/css/themes/unolight/bootstrap.min.css +2 -2
  69. data/assets/themes/j1/core/js/template.js +474 -420
  70. data/assets/themes/j1/core/js/template.min.js +7 -7
  71. data/assets/themes/j1/core/js/template.min.js.map +1 -1
  72. data/assets/themes/j1/modules/carousel/css/theme/uno.css +4 -4
  73. data/assets/themes/j1/modules/carousel/css/theme/uno.min.css +1 -1
  74. data/assets/themes/j1/modules/clipboard/js/clipboard.js +0 -1
  75. data/assets/themes/j1/modules/cookieConsent/js/cookieConsent.js +4 -4
  76. data/assets/themes/j1/modules/iconPicker/css/theme/uno.css +58 -0
  77. data/assets/themes/j1/modules/iconPicker/css/theme/uno.min.css +16 -0
  78. data/assets/themes/j1/modules/iconPicker/js/universal-icon-picker.0.js +493 -0
  79. data/assets/themes/j1/modules/iconPicker/js/universal-icon-picker.js +7 -7
  80. data/assets/themes/j1/modules/lightGallery/js/plugins/lg-video.js +4 -4
  81. data/assets/themes/j1/modules/lightGallery/js/plugins/lg-video.min.js +2 -10
  82. data/assets/themes/j1/modules/lunr/css/j1.css +12 -6
  83. data/assets/themes/j1/modules/lunr/css/j1.min.css +1 -1
  84. data/assets/themes/j1/modules/lunr/js/j1.js +46 -43
  85. data/assets/themes/j1/modules/lunr/js/j1.min.js +1 -1
  86. data/assets/themes/j1/modules/masterslider/js/masterslider.js +1 -1
  87. data/assets/themes/j1/modules/scroller/js/scroller.js +64 -74
  88. data/assets/themes/j1/modules/scroller/js/scroller.min.js +1 -1
  89. data/assets/themes/j1/modules/slick/slider/css/theme/uno.css +4 -4
  90. data/assets/themes/j1/modules/slick/slider/css/theme/uno.min.css +1 -1
  91. data/assets/themes/j1/modules/slimSelect/js/select.js +1865 -1821
  92. data/assets/themes/j1/modules/slimSelect/js/select.min.js +2 -1
  93. data/assets/themes/j1/modules/themeSwitcher/js/switcher.js +87 -89
  94. data/assets/themes/j1/modules/themeSwitcher/js/switcher.min.js +1 -1
  95. data/assets/themes/j1/modules/videojs/js/plugins/vm/api/player.min.js +5 -7
  96. data/assets/themes/j1/modules/videojs/js/plugins/vm/api/v2.20.1/player.min.js +23 -0
  97. data/lib/j1/version.rb +1 -1
  98. data/lib/starter_web/Gemfile +2 -2
  99. data/lib/starter_web/README.md +5 -5
  100. data/lib/starter_web/_config.yml +1 -1
  101. data/lib/starter_web/_data/blocks/_panel.yml +775 -0
  102. data/lib/starter_web/_data/blocks/panel.yml +53 -53
  103. data/lib/starter_web/_data/j1_config.yml +3 -2
  104. data/lib/starter_web/_data/layouts/default.yml +0 -2
  105. data/lib/starter_web/_data/modules/_scroller.yml +102 -0
  106. data/lib/starter_web/_data/modules/carousel.yml +3 -3
  107. data/lib/starter_web/_data/modules/defaults/attics.yml +5 -5
  108. data/lib/starter_web/_data/modules/defaults/docsearch.yml +1 -1
  109. data/lib/starter_web/_data/modules/defaults/gemini.yml +204 -46
  110. data/lib/starter_web/_data/modules/defaults/{iconPicker.yml → icon_picker.yml} +6 -12
  111. data/lib/starter_web/_data/modules/defaults/lunr.yml +20 -5
  112. data/lib/starter_web/_data/modules/defaults/masterslider.yml +4 -4
  113. data/lib/starter_web/_data/modules/defaults/navigator.yml +20 -24
  114. data/lib/starter_web/_data/modules/defaults/particles.yml +3 -3
  115. data/lib/starter_web/_data/modules/defaults/slim_select.yml +54 -0
  116. data/lib/starter_web/_data/modules/defaults/{themer.yml → themes.yml} +171 -171
  117. data/lib/starter_web/_data/modules/defaults/toccer.yml +1 -1
  118. data/lib/starter_web/_data/modules/gallery.yml +33 -38
  119. data/lib/starter_web/_data/modules/gemini.yml +42 -3
  120. data/lib/starter_web/_data/modules/{iconPicker.yml → icon_picker.yml} +31 -3
  121. data/lib/starter_web/_data/modules/lunr.yml +12 -1
  122. data/lib/starter_web/_data/modules/masonry.yml +37 -38
  123. data/lib/starter_web/_data/modules/masterslider.yml +78 -95
  124. data/lib/starter_web/_data/modules/navigator_menu.yml +12 -20
  125. data/lib/starter_web/_data/modules/particles.yml +3 -3
  126. data/lib/starter_web/_data/modules/scroller.yml +3 -3
  127. data/lib/starter_web/_data/modules/slim_select.yml +110 -0
  128. data/lib/starter_web/_data/modules/{themer.yml → themes.yml} +4 -4
  129. data/lib/starter_web/_data/resources.yml +57 -47
  130. data/lib/starter_web/_data/templates/feed.xml +1 -1
  131. data/lib/starter_web/_includes/attributes.asciidoc +354 -355
  132. data/lib/starter_web/_plugins/asciidoctor/gemini-ui-block.rb +1 -1
  133. data/lib/starter_web/_plugins/asciidoctor/slim-select-block.rb +45 -0
  134. data/lib/starter_web/_plugins/index/lunr.rb +1 -1
  135. data/lib/starter_web/collections/asciidoc_skeletons/simple-post/_posts/yyyy-mm-dd-your-post-name.asciidoc +5 -2
  136. data/lib/starter_web/collections/posts/public/featured/_posts/0000-00-00-welcome-to-j1.adoc.erb +3 -3
  137. data/lib/starter_web/collections/posts/public/featured/_posts/2021-01-01-about-cookies.adoc +9 -9
  138. data/lib/starter_web/collections/posts/public/featured/_posts/2021-02-01-static-site-generators.adoc +4 -4
  139. data/lib/starter_web/collections/posts/public/featured/_posts/2022-02-01-about-j1.adoc +3 -2
  140. data/lib/starter_web/collections/posts/public/featured/_posts/2023-10-18-url-types.adoc +12 -12
  141. data/lib/starter_web/package.json +1 -1
  142. data/lib/starter_web/pages/public/about/features.adoc +1 -1
  143. data/lib/starter_web/pages/public/about/reporting_issues.adoc +1 -0
  144. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/attributes.asciidoc +44 -44
  145. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/documentation.adoc +1 -0
  146. data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/_includes/attributes.asciidoc +12 -12
  147. data/lib/starter_web/pages/public/blog/navigator/archive/allview.html +1 -1
  148. data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/_includes/attributes.asciidoc +42 -28
  149. data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/highlghter_rouge.adoc +1 -0
  150. data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/lunr_search.adoc +1 -0
  151. data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/present_audio_video.adoc +18 -2
  152. data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/present_images.adoc +500 -507
  153. data/lib/starter_web/pages/public/legal/en/100_copyright.adoc +6 -11
  154. data/lib/starter_web/pages/public/legal/en/200_impress.adoc +4 -11
  155. data/lib/starter_web/pages/public/legal/en/300_privacy.adoc +5 -12
  156. data/lib/starter_web/pages/public/legal/en/400_comment_policy.adoc +5 -10
  157. data/lib/starter_web/pages/public/tools/previewer/_includes/attributes.asciidoc +10 -9
  158. data/lib/starter_web/pages/public/tools/previewer/preview_bootstrap_theme.adoc +77 -75
  159. metadata +50 -46
  160. data/lib/starter_web/pages/public/manuals/integrations/gemini/_includes/attributes.asciidoc +0 -47
  161. data/lib/starter_web/pages/public/manuals/integrations/gemini/_includes/documents/preview_google_adsense.asciidoc +0 -448
  162. data/lib/starter_web/pages/public/manuals/integrations/gemini/_includes/documents/readme +0 -0
  163. data/lib/starter_web/pages/public/manuals/integrations/gemini/_includes/tables/readme +0 -0
  164. data/lib/starter_web/pages/public/manuals/integrations/gemini/gemini.adoc +0 -525
  165. data/lib/starter_web/pages/public/manuals/integrations/gemini/security.asccidoc +0 -274
  166. data/lib/starter_web/pages/public/manuals/integrations/gemini/security.hrml +0 -560
  167. /data/lib/starter_web/pages/public/{legal/learn → learn}/bookshelf/article_previewer/viewer_biography.adoc +0 -0
  168. /data/lib/starter_web/pages/public/{legal/learn → learn}/bookshelf/article_previewer/viewer_fantasy.adoc +0 -0
  169. /data/lib/starter_web/pages/public/{legal/learn → learn}/bookshelf/article_previewer/viewer_romance.adoc +0 -0
  170. /data/lib/starter_web/pages/public/{legal/learn → learn}/bookshelf/jekyll_collections.adoc +0 -0
  171. /data/lib/starter_web/pages/public/{legal/learn → learn}/bookshelf/viewer_all_books.adoc +0 -0
  172. /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/_includes/documents/100_gistblock.asciidoc +0 -0
  173. /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/_includes/documents/410_bottom_info.asciidoc +0 -0
  174. /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/_includes/documents/410_bottom_left_warning.asciidoc +0 -0
  175. /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/_includes/documents/410_bottom_right_danger.asciidoc +0 -0
  176. /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/_includes/documents/410_central_success.asciidoc +0 -0
  177. /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/_includes/documents/410_full_height_left_info.asciidoc +0 -0
  178. /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/_includes/documents/410_full_height_right_success.asciidoc +0 -0
  179. /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/_includes/documents/410_table_bs_modal_examples.asciidoc +0 -0
  180. /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/_includes/documents/410_top_info.asciidoc +0 -0
  181. /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/_includes/documents/410_top_left_info.asciidoc +0 -0
  182. /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/_includes/documents/410_top_right_success.asciidoc +0 -0
  183. /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/_includes/documents/419_advanced_modals_demo.asciidoc +0 -0
  184. /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/_includes/documents/tables/bs_modal_examples.asciidoc +0 -0
  185. /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/_includes/documents/themes_bootstrap.asciidoc +0 -0
  186. /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/_includes/documents/themes_rouge.asciidoc +0 -0
  187. /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/asciidoc_extensions.adoc +0 -0
  188. /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/bootstrap_themes.adoc +0 -0
  189. /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/icon_fonts.adoc +0 -0
  190. /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/modal_extentions.adoc +0 -0
  191. /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/responsive_tables.adoc +0 -0
  192. /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/typography.adoc +0 -0
  193. /data/lib/starter_web/pages/public/{legal/learn → learn}/where_to_go.adoc +0 -0
@@ -29,17 +29,23 @@ regenerate: true
29
29
 
30
30
  {% comment %} Set config files
31
31
  -------------------------------------------------------------------------------- {% endcomment %}
32
- {% assign template_config = site.data.j1_config %}
33
- {% assign blocks = site.data.blocks %}
34
- {% assign modules = site.data.modules %}
32
+ {% assign template_config = site.data.j1_config %}
33
+ {% assign blocks = site.data.blocks %}
34
+ {% assign modules = site.data.modules %}
35
35
 
36
36
  {% comment %} Set config data
37
37
  -------------------------------------------------------------------------------- {% endcomment %}
38
- {% assign environment = site.environment %}
39
- {% assign template_version = site.version %}
38
+ {% assign environment = site.environment %}
39
+ {% assign template_version = site.version %}
40
40
 
41
- {% assign lunr_search_defaults = modules.defaults.lunr.defaults %}
42
- {% assign lunr_search_settings = modules.lunr.settings %}
41
+ {% assign lunr_search_defaults = modules.defaults.lunr.defaults %}
42
+ {% assign lunr_search_settings = modules.lunr.settings %}
43
+
44
+ {% comment %} Set config options
45
+ -------------------------------------------------------------------------------- {% endcomment %}
46
+ {% assign lunr_search_options = lunr_search_defaults | merge: lunr_search_settings %}
47
+ {% assign topsearch_options = lunr_search_options.topsearch %}
48
+ {% assign search_history_enabled = topsearch_options.search_history_enabled %}
43
49
 
44
50
  {% comment %} Detect prod mode
45
51
  -------------------------------------------------------------------------------- {% endcomment %}
@@ -48,7 +54,6 @@ regenerate: true
48
54
  {% assign production = true %}
49
55
  {% endif %}
50
56
 
51
-
52
57
  /*
53
58
  # -----------------------------------------------------------------------------
54
59
  # ~/assets/themes/j1/adapter/js/lunr.js
@@ -72,150 +77,747 @@ regenerate: true
72
77
  /* eslint indent: "off" */
73
78
  // -----------------------------------------------------------------------------
74
79
  'use strict';
75
- j1.adapter.lunr = (function (j1, window) {
80
+ j1.adapter.lunr = ((j1, window) => {
76
81
 
77
82
  {% comment %} Set global variables
78
83
  ------------------------------------------------------------------------------ {% endcomment %}
79
- var environment = '{{environment}}';
80
- var state = 'not_started';
84
+ var searchHistorySelectWrapper = 'search_history_select_wrapper';
85
+
81
86
  var searchDefaults;
82
87
  var searchSettings;
83
88
  var searchOptions;
89
+ var topSearchOptions;
90
+ var select;
91
+ var $slimSelect;
92
+ var newItem;
93
+ var itemExists;
94
+
95
+ var url;
96
+ var baseUrl;
97
+ var hostname;
98
+ var auto_domain;
99
+ var secure;
100
+
101
+ var cookie_names;
102
+ var cookie_written;
103
+
84
104
  var _this;
85
105
  var logger;
86
106
  var logText;
87
- var modalBody;
107
+ var state;
108
+
109
+ var textHistory = []; // Array to store the history of entered text
110
+ var historyIndex = -1; // Index to keep track of the current position in the history
111
+ var searchHistory = {};
112
+ var queryInput;
113
+
114
+ var $searchHstoryWrapper;
115
+ var searchHstoryWrapperID;
116
+ var searchHistoryMax;
117
+ var searchHistoryEnabled;
118
+ var allowSearchHistoryDuplicates;
119
+ var allowSearchHistoryUpdatesOnMax;
120
+ var searchHistoryFromCookie;
121
+
122
+ var eventListenersReady;
123
+
124
+ // date|time
125
+ var startTime;
126
+ var endTime;
127
+ var startTimeModule;
128
+ var endTimeModule;
129
+ var timeSeconds;
88
130
 
89
131
  // ---------------------------------------------------------------------------
90
- // Helper functions
132
+ // helper functions
91
133
  // ---------------------------------------------------------------------------
92
134
 
135
+ function addSearchHistoryEventListeners(slimSelectData) {
136
+ var index = 1;
137
+ slimSelectData.forEach (() => {
138
+ var span = 'opt_search_history_' + index;
139
+ var spanElement = document.getElementById(span);
140
+
141
+ var dependencies_met_span_ready = setInterval (() => {
142
+ var spanElementReady = (($(spanElement).length) !== 0) ? true : false;
143
+ if (spanElementReady) {
144
+ logger.debug('\n' + 'add eventListener to: ' + span);
145
+ spanElement.addEventListener('click', spanElementEventListener);
146
+
147
+ clearInterval(dependencies_met_span_ready);
148
+ }
149
+ }, 10);
150
+ index++;
151
+ }); // END forEach data
152
+ } // END addSearchHistoryEventListeners
153
+
154
+ function spanElementEventListener(event) {
155
+ var optionText = event.currentTarget.nextSibling.data;
156
+ var slimData = $slimSelect.getData();
157
+ var textHistory = [];
158
+ var searchHistory = j1.existsCookie(cookie_names.search_prompt)
159
+ ? j1.readCookie(cookie_names.search_prompt)
160
+ : {};
161
+ var foundItem;
162
+ var newHistory;
163
+ var newData;
164
+
165
+ // suppress default actions|bubble up
166
+ event.preventDefault();
167
+ event.stopPropagation();
168
+
169
+ // update slimSelect data
170
+ foundItem = -1;
171
+ for (var i = 0; i < slimData.length; i++) {
172
+ if (slimData[i].text === optionText) {
173
+ foundItem = i;
174
+ break;
175
+ }
176
+ }
177
+
178
+ if (foundItem !== -1) {
179
+ delete slimData[foundItem];
180
+
181
+ // create new reindexed data object
182
+ newData = Object.values(slimData);
183
+ // update the select
184
+ $slimSelect.setData(newData);
185
+ }
186
+
187
+ // update search history data
188
+ foundItem = -1;
189
+ // convert searchHistory object to array
190
+ textHistory = Object.values(searchHistory);
191
+ for (var i = 0; i < textHistory.length; i++) {
192
+ if (textHistory[i] === optionText) {
193
+ foundItem = i;
194
+ break;
195
+ }
196
+ }
197
+
198
+ if (foundItem !== -1) {
199
+ delete textHistory[foundItem];
200
+
201
+ // create new reindexed data object
202
+ newHistory = Object.values(textHistory);
203
+
204
+ // remove duplicates from history
205
+ if (newHistory.length > 1) {
206
+ // create a 'Set' from the history array to automatically remove duplicates
207
+ var uniqueArray = [...new Set(newHistory)];
208
+ newHistory = Object.values(uniqueArray);
209
+ } // END if allowHistoryDupicates
210
+
211
+ // update searchHistory
212
+ if (searchHistoryFromCookie) {
213
+ logger.debug('\n' + 'save search history to cookie');
214
+ j1.removeCookie({
215
+ name: cookie_names.search_prompt,
216
+ domain: auto_domain,
217
+ secure: secure
218
+ });
219
+
220
+ if (newHistory.length > 0) {
221
+ cookie_written = j1.writeCookie({
222
+ name: cookie_names.search_prompt,
223
+ data: newHistory,
224
+ secure: secure
225
+ });
226
+ } else {
227
+ cookie_written = j1.writeCookie({
228
+ name: cookie_names.search_prompt,
229
+ data: {},
230
+ secure: secure
231
+ });
232
+ logger.info('\n' + 'spanElementEventListener, hide prompt history on last element');
233
+ $("#search_history_select_wrapper").hide();
234
+ } // END if length
235
+ } // END if searchHistoryFromCookie
236
+ }
237
+
238
+ logger.info('\n' + 'spanElementEventListener, option deleted:\n' + optionText);
239
+
240
+ // close currently required to re-add history prompt events on next beforeOpen
241
+ $slimSelect.close();
242
+ } // END spanElementEventListener
243
+
93
244
  // ---------------------------------------------------------------------------
94
- // Main object
245
+ // main
95
246
  // ---------------------------------------------------------------------------
96
247
  return {
97
248
 
98
249
  // -------------------------------------------------------------------------
99
- // Initializer
250
+ // adapter initializer
100
251
  // -------------------------------------------------------------------------
101
- init: function (options) {
252
+ init: (options) => {
102
253
 
103
254
  // -----------------------------------------------------------------------
104
- // Default module settings
255
+ // default module settings
105
256
  // -----------------------------------------------------------------------
106
257
  var settings = $.extend({
107
258
  module_name: 'j1.adapter.lunr',
108
259
  generated: '{{site.time}}'
109
260
  }, options);
110
261
 
262
+ // Load module DEFAULTS|CONFIG
263
+ searchDefaults = $.extend({}, {{lunr_search_defaults | replace: 'nil', 'null' | replace: '=>', ':' }});
264
+ searchSettings = $.extend({}, {{lunr_search_settings | replace: 'nil', 'null' | replace: '=>', ':' }});
265
+ searchOptions = $.extend(true, {}, searchDefaults, searchSettings);
266
+ topSearchOptions = searchOptions.topsearch;
267
+
111
268
  // -----------------------------------------------------------------------
112
- // Global variable settings
269
+ // module variable settings
113
270
  // -----------------------------------------------------------------------
114
271
  _this = j1.adapter.lunr;
115
272
  logger = log4javascript.getLogger('j1.adapter.lunr');
116
273
 
117
- // Load module DEFAULTS|CONFIG
118
- searchDefaults = $.extend({}, {{lunr_search_defaults | replace: 'nil', 'null' | replace: '=>', ':' }});
119
- searchSettings = $.extend({}, {{lunr_search_settings | replace: 'nil', 'null' | replace: '=>', ':' }});
120
- searchOptions = $.extend(true, {}, searchDefaults, searchSettings);
274
+ // -----------------------------------------------------------------------
275
+ // top search variable settings
276
+ // -----------------------------------------------------------------------
277
+ cookie_names = j1.getCookieNames();
278
+ url = new liteURL(window.location.href);
279
+ baseUrl = url.origin;
280
+ hostname = url.hostname;
281
+ auto_domain = hostname.substring(hostname.lastIndexOf('.', hostname.lastIndexOf('.') - 1) + 1);
282
+ secure = (url.protocol.includes('https')) ? true : false;
283
+ searchHistoryEnabled = (topSearchOptions.search_history_enabled === true) ? true : false;
284
+ searchHistoryFromCookie = (topSearchOptions.search_history_from_cookie === true) ? true : false;
285
+
286
+ {% if search_history_enabled %}
287
+ // -----------------------------------------------------------------------
288
+ // select initializer
289
+ // -----------------------------------------------------------------------
290
+ var dependencies_met_select_ready = setInterval(() => {
291
+ var slimSelectFinished = (Object.keys(j1.adapter.slimSelect.select).length) ? true : false;
292
+
293
+ if (slimSelectFinished) {
294
+ logger.debug('\n' + 'initializing select data');
295
+
296
+ // initialize history array from cookie
297
+ if (searchHistoryEnabled && searchHistoryFromCookie) {
298
+
299
+ select = document.getElementById('search_history');
300
+ $slimSelect = select.slim;
301
+
302
+ // limit the prompt history
303
+ searchHistoryMax = topSearchOptions.search_history_max;
304
+
305
+ // allow|reject history updates if promptHistoryMax reached
306
+ allowSearchHistoryUpdatesOnMax = topSearchOptions.allow_history_updates_on_max;
307
+
308
+ logger.debug('\n' + 'read search history from cookie');
309
+ var data = [];
310
+ var option = {};
311
+ searchHistory = j1.existsCookie(cookie_names.search_prompt)
312
+ ? j1.readCookie(cookie_names.search_prompt)
313
+ : {};
314
+
315
+ // convert searchHistory object to array
316
+ textHistory = Object.values(searchHistory);
317
+
318
+ // remove duplicates from history
319
+ if (textHistory.length > 1) {
320
+ var textHistoryLenght = textHistory.length;
321
+ var uniqueArray = [...new Set(textHistory)]; // create a 'Set' from the history array to automatically remove duplicates
322
+
323
+ textHistory = uniqueArray;
324
+ if (textHistoryLenght > textHistory.length) {
325
+ logger.debug('\n' + 'removed duplicates from history array: ' + (textHistoryLenght - textHistory.length) + ' element|s');
326
+ }
327
+ } // END if !allowHistoryDupicates
328
+
329
+ // update|set slimSelect data elements
330
+ var index = 1;
331
+ var data = [];
332
+ var option = {};
333
+ var html;
334
+ textHistory.forEach((historyText) => {
335
+ html = '<span id="opt_' + topSearchOptions.search_history_id + '_' + index + '" class="ss-option-delete">' + '<i class="mdib mdib-close mdib-16px ml-1 mr-2"></i></span>' + historyText;
336
+ option = {
337
+ text: historyText,
338
+ html: html,
339
+ display: true,
340
+ selected: false,
341
+ disabled: false
342
+ }
343
+ data.push(option);
344
+ index++
345
+ }); // END forEach
346
+ $slimSelect.setData(data);
347
+
348
+ // -------------------------------------------------------------
349
+ // setup Slim select eventHandlers
350
+ // -------------------------------------------------------------
351
+ //
352
+ _this.setupSlimSelectEventHandlers();
353
+
354
+ } // if promptHistoryEnabled
355
+
356
+ clearInterval(dependencies_met_select_ready);
357
+ } // END selectReady
358
+ }, 10); // END dependencies_met_select_ready
359
+ {% endif %}
121
360
 
122
361
  // -----------------------------------------------------------------------
123
- // lunr initializer
362
+ // module initializer
124
363
  // -----------------------------------------------------------------------
125
- var dependencies_met_j1_finished = setInterval(function() {
126
- if (j1.getState() == 'finished') {
364
+ var dependencies_met_lunr_finished = setInterval (() => {
365
+ var j1CoreFinished = (j1.getState() === 'finished') ? true : false;
366
+ // var slimSelectFinished = (Object.keys(j1.adapter.slimSelect.select).length) ? true : false;
367
+
368
+ if (j1CoreFinished) {
369
+ startTimeModule = Date.now();
370
+
371
+ // get|clear queryInput element (prompt)
372
+ queryInput = document.getElementById('search-query');
373
+ queryInput.value = '';
127
374
 
128
375
  // initialize state flag
129
376
  _this.setState('started');
130
- logger.debug('\n' + 'state: ' + _this.getState());
131
- logger.info('\n' + 'module is being initialized');
377
+ logger.debug('\n' + 'set module state to: ' + _this.getState());
378
+ logger.info('\n' + 'initializing module: started');
132
379
 
380
+ logger.info('\n' + 'initializing search engine');
133
381
  $(searchOptions.search_input).lunrSearch({
134
- index_file: searchOptions.index_file,
135
- results: searchOptions.results,
136
- template: searchOptions.template,
137
- titleMsg: searchOptions.titleMsg,
138
- emptyMsg: searchOptions.emptyMsg
382
+ index_file: searchOptions.index_file,
383
+ results: searchOptions.results,
384
+ template: searchOptions.template,
385
+ titleMsg: searchOptions.titleMsg,
386
+ emptyMsg: searchOptions.emptyMsg,
387
+ {% if search_history_enabled %}
388
+ onResultShown: function () {
389
+ $('#send-to-history').show();
390
+ }
391
+ {% endif %}
139
392
  });
140
393
 
394
+ logger.info('\n' + 'initializing UI event handlers (modal)');
395
+ _this.uiEventHandler();
396
+
397
+ {% if search_history_enabled %}
398
+ // initialize history array from cookie
399
+ if (searchHistoryEnabled && searchHistoryFromCookie) {
400
+
401
+ logger.info('\n' + 'initializing search history from cookie');
402
+
403
+ // limit the history
404
+ searchHistoryMax = topSearchOptions.search_history_max;
405
+
406
+ // allow|reject duplicates for the history
407
+ allowSearchHistoryDuplicates = topSearchOptions.allow_history_duplicates;
408
+
409
+ // allow|reject history updates if searchHistoryMax reached
410
+ allowSearchHistoryUpdatesOnMax = topSearchOptions.allow_history_updates_on_max;
411
+
412
+ logger.debug('\n' + 'read search history from cookie');
413
+ var data = [];
414
+ var option = {};
415
+ searchHistory = j1.existsCookie(cookie_names.search_prompt)
416
+ ? j1.readCookie(cookie_names.search_prompt)
417
+ : {};
418
+
419
+ // convert search prompt object to array
420
+ textHistory = Object.values(searchHistory);
421
+
422
+ // hide|show history container
423
+ if (textHistory.length) {
424
+ $("#search_history_select_wrapper").show();
425
+ } else {
426
+ $("#search_history_select_wrapper").hide();
427
+ }
428
+
429
+ // remove duplicates from history
430
+ if (!allowSearchHistoryDuplicates && textHistory.length > 1) {
431
+ var textHistoryLenght = textHistory.length;
432
+ var uniqueArray = [...new Set(textHistory)]; // create a 'Set' from the history array to automatically remove duplicates
433
+
434
+ textHistory = uniqueArray;
435
+ if (textHistoryLenght > textHistory.length) {
436
+ logger.debug('\n' + 'removed duplicates from history array: ' + (textHistoryLenght - textHistory.length) + ' element|s');
437
+ }
438
+ } // END if !allowHistoryDupicates
439
+ } // END if searchHistoryEnabled
440
+ {% endif %}
441
+
141
442
  _this.setState('finished');
142
443
  logger.debug('\n' + 'state: ' + _this.getState());
143
- logger.info('\n' + 'initializing module finished');
144
-
145
- clearInterval(dependencies_met_j1_finished);
146
- } // END dependencies_met_j1_finished
147
- }, 10);
444
+ logger.info('\n' + 'initializing module: finished');
148
445
 
149
- _this.eventHandler();
446
+ endTimeModule = Date.now();
447
+ logger.info('\n' + 'module initializing time: ' + (endTimeModule-startTimeModule) + 'ms');
150
448
 
449
+ clearInterval(dependencies_met_lunr_finished);
450
+ } // END j1CoreFinished && slimSelectFinished
451
+ }, 10); // END dependencies_met_lunr_finished
151
452
  }, // END init
152
453
 
153
454
  // -------------------------------------------------------------------------
154
- // loadDialog (modal)
455
+ // uiEventHandler (topSearchModal)
155
456
  // -------------------------------------------------------------------------
156
- loadDialog: function () {
157
-
158
- logger.info('\n' + 'create|append search modal, id: ' + 'bratze');
159
-
160
- _this.modal = document.createElement('div');
161
- _this.modal.id = "topInfoModalContainer";
162
- document.body.append(_this.modal);
163
-
164
- {% raw %}
165
- _this.modalScript = document.createElement('script');
166
- _this.modalScript.type = 'text/mustache';
167
- _this.modalScript.id = 'search-results-template';
168
- _this.modalScript.text = '<ul style="list-style: none; margin-left: .5rem; margin-right: 4.25rem">' + '\n';
169
- _this.modalScript.text += '{{#docs}}' + '\n';
170
- _this.modalScript.text += ' <li>' + '\n';
171
- _this.modalScript.text += ' <h4 class="result-item"> <a class="link-no-decoration" href="{{url}}" target="_blank">{{title}} · {{tagline}}</a> </h4>' + '\n';
172
- _this.modalScript.text += ' <p class="result-item-text small text-muted mt-2 mb-0"> <i class="mdib mdib-calendar-blank mdib-18px mr-1"></i>{{displaydate}} </p>' + '\n';
173
- _this.modalScript.text += ' <p class="result-item-text">{{description}}</p>' + '\n';
174
- _this.modalScript.text += ' <i class="mdib mdib-tag-text-outline mdib-18px mr-1"></i><span class="sr-categories">{{#categories}} {{.}} · {{/categories}}</span>' + '\n';
175
- _this.modalScript.text += ' <i class="mdib mdib-tag mdib-18px mr-1 ml-2"></i><span class="sr-tags">{{#tags}} {{.}} · {{/tags}}</span>' + '\n';
176
- _this.modalScript.text += ' </p>' + '\n';
177
- _this.modalScript.text += ' </li>' + '\n';
178
- _this.modalScript.text += '{{/docs}}' + '\n';
179
- _this.modalScript.text += '<ul>' + '\n';
180
- {% endraw %}
181
- document.body.append(_this.modalScript);
182
-
183
- }, // END loadDialog
457
+ uiEventHandler: () => {
458
+ const topSearchModalID = '#' + 'searchModal';
459
+ const searchIput = document.querySelector('input');
460
+ var data = [];
461
+ var option = {};
462
+
463
+ // input event
464
+ searchIput.addEventListener("input", (event) => {
465
+ var prompt = event.target.value;
466
+ var clearTopSearchState = $('#clear-topsearch').css("display");
467
+ var clearTopSearchHidden = (clearTopSearchState === 'block') ? false : true;
468
+
469
+ if (prompt.length >= 3) {
470
+ if (clearTopSearchHidden) {
471
+ $('#clear-topsearch').show();
472
+ }
473
+ } // END if prompt min length reached
474
+ });
475
+
476
+ // on modal 'shown'
477
+ $(topSearchModalID).on('shown.bs.modal', (e) => {
478
+ logger.debug('\n' + 'search modal shown');
479
+
480
+ {% if search_history_enabled %}
481
+ if (searchHistoryEnabled) {
482
+ $searchHstoryWrapper = document.getElementById(searchHistorySelectWrapper);
483
+ searchHstoryWrapperID = '#' + $searchHstoryWrapper.id;
484
+ select = document.getElementById('search_history');
485
+ $slimSelect = select.slim;
486
+
487
+ var searchHistory = j1.existsCookie(cookie_names.search_prompt)
488
+ ? j1.readCookie(cookie_names.search_prompt)
489
+ : {};
490
+
491
+ // set textHistory array
492
+ textHistory = Object.values(searchHistory);
493
+
494
+ // create|set current slimSelect data elements
495
+ var index = 1;
496
+ var data = [];
497
+ var option = {};
498
+ var html;
499
+ textHistory.forEach ((historyText) => {
500
+ html = '<span id="opt_' + topSearchOptions.search_history_id + '_' + index + '" class="ss-option-delete">' + '<i class="mdib mdib-close mdib-16px ml-1 mr-2"></i></span>' + historyText;
501
+ option = {
502
+ text: historyText,
503
+ html: html,
504
+ display: true,
505
+ selected: false,
506
+ disabled: false
507
+ }
508
+ data.push(option);
509
+ index++;
510
+ }); // END forEach
511
+ $slimSelect.setData(data);
512
+
513
+ // display history container
514
+ if (textHistory.length > 0) {
515
+ logger.debug('\n' + 'show search history on id: ' + searchHstoryWrapperID);
516
+ $(searchHstoryWrapperID).show();
517
+ }
518
+ } // END if searchHistoryEnabled
519
+ {% endif %}
520
+ }); // END on shown modal
521
+
522
+ {% if search_history_enabled %}
523
+ // on modal 'hidden'
524
+ $(topSearchModalID).on('hidden.bs.modal', (e) => {
525
+ logger.debug('\n' + 'search modal hidden');
526
+
527
+ if (searchHistoryEnabled) {
528
+ var currentSearchQuery = $('#search-query').val();
529
+ option = {
530
+ text: currentSearchQuery,
531
+ display: true,
532
+ selected: false,
533
+ disabled: false
534
+ }
535
+ data.push(option);
536
+ $slimSelect.setData(data);
537
+ // add current currentSearchQuery to history
538
+ } // end if searchHistoryEnabled
539
+ }); // END on hidden modal
540
+ {% endif %}
541
+
542
+ {% if search_history_enabled %}
543
+ // add current search query to history
544
+ $('#send-to-history').on('click', () => {
545
+ // suppress default actions|bubble up
546
+ event.preventDefault();
547
+ event.stopPropagation();
548
+
549
+ var currentQuery = $('#search-query').val();
550
+ var historySet = false;
551
+
552
+ if (searchHistoryFromCookie) {
553
+ var searchHistory = j1.existsCookie(cookie_names.search_prompt)
554
+ ? j1.readCookie(cookie_names.search_prompt)
555
+ : {};
556
+
557
+ // set textHistory array
558
+ textHistory = Object.values(searchHistory);
559
+ } // END re-read current history from cookie
560
+
561
+ // set initial prompt from input (input)
562
+ prompt = queryInput.value.replace(/\s+$/g, '');
563
+
564
+ // check if current prompt alreay exists in history
565
+ index = textHistory.indexOf(prompt);
566
+ itemExists = (index !== -1) ? true : false;
567
+ if (itemExists) {
568
+ logText = '\n' + `sendButton, prompt: "${prompt}"\n` + `already exists in history at index: ${index}`;
569
+ logger.debug(logText);
570
+ }
571
+
572
+ // update history on searchHistoryMax
573
+ if (textHistory.length === searchHistoryMax && allowSearchHistoryUpdatesOnMax && !itemExists && !historySet) {
574
+ // place the CURRENT history element FIRST for replacement
575
+ textHistory.reverse();
576
+ if (queryInput.value.length > 0) {
577
+ // cleanup input value for trailing whitespaces
578
+ newItem = queryInput.value.replace(/\s+$/g, '');
579
+ }
580
+
581
+ logger.debug('\n' + 'sendButton, update item in history:\n' + textHistory[0]);
582
+ // replace FIRST history element by NEW item
583
+ textHistory[0] = newItem;
584
+ logger.debug('\n' + 'sendButton, add new item to history:\n' + textHistory[0]);
585
+
586
+ historySet = true;
587
+ } // END update history on searchHistoryMax
588
+
589
+ // add new item to history
590
+ if (textHistory.length < searchHistoryMax && !itemExists && !historySet) {
591
+ if (queryInput.value.length > 0) {
592
+ // cleanup input value for trailing whitespaces
593
+ newItem = queryInput.value.replace(/\s+$/g, '');
594
+ }
595
+
596
+ logger.debug('\n' + 'sendButton, add new item to history:\n' + newItem);
597
+ textHistory.push(newItem);
598
+
599
+ historySet = true;
600
+ } // END add new item to history
601
+
602
+ // failsafe, cleanup history
603
+ if (textHistory.length > 0) {
604
+ // cleanup|add selected value
605
+ var p = 0;
606
+ textHistory.forEach ((elm) => {
607
+ if (elm.length) {
608
+ prompt = elm.replace(/\s+$/g, '');
609
+ textHistory[p] = prompt;
610
+ }
611
+ p++;
612
+ }); // END forEach
613
+ logger.debug('\n' + 'sendButton, cleaned history for trailing whitespaces');
614
+ } // END failsafe, cleanup history
615
+
616
+ // remove duplicates from history
617
+ if (textHistory.length > 1) {
618
+ var textHistoryLenght = textHistory.length;
619
+ var uniqueArray = [...new Set(textHistory)]; // create a 'Set' from the history array to automatically remove duplicates
620
+
621
+ textHistory = uniqueArray;
622
+ if (textHistoryLenght > textHistory.length) {
623
+ logger.debug('\n' + 'sendButton, removed duplicates from history array: ' + (textHistoryLenght - textHistory.length) + ' element|s');
624
+ }
625
+ } // END remove duplicates from history
626
+
627
+ // create|set slimSelect data elements
628
+ var index = 1;
629
+ var data = [];
630
+ var option = {};
631
+ var html;
632
+ textHistory.forEach ((historyText) => {
633
+ html = '<span id="opt_' + topSearchOptions.search_history_id + '_' + index + '" class="ss-option-delete">' + '<i class="mdib mdib-close mdib-16px ml-1 mr-2"></i></span>' + historyText;
634
+ option = {
635
+ text: historyText,
636
+ html: html,
637
+ display: true,
638
+ selected: false,
639
+ disabled: false
640
+ }
641
+ data.push(option);
642
+ index++;
643
+ }); // END forEach
644
+ $slimSelect.setData(data);
645
+ // END create|set slimSelect data elements
646
+
647
+ // display history container
648
+ if (textHistory.length > 0) {
649
+ $("#search_history_select_wrapper").show();
650
+ }
651
+
652
+ // write current history to cookie
653
+ if (searchHistoryFromCookie) {
654
+ logger.debug('\n' + 'sendButton, save prompt history to cookie');
655
+ j1.removeCookie({
656
+ name: cookie_names.search_prompt,
657
+ domain: auto_domain,
658
+ secure: secure
659
+ });
660
+ cookie_written = j1.writeCookie({
661
+ name: cookie_names.search_prompt,
662
+ data: textHistory,
663
+ secure: secure
664
+ });
665
+ } // END write current history to cookie
666
+ }); // END on click
667
+ {% endif %}
184
668
 
669
+ // clear|hide input|search results
670
+ $('#clear-topsearch').on('click', () => {
671
+ // suppress default actions|bubble up
672
+ event.preventDefault();
673
+ event.stopPropagation();
674
+
675
+ $('#search-query').val('');
676
+ $('#search-results').html('');
677
+ $('#search-results').hide();
678
+ $('#send-to-history').hide();
679
+ $('#clear-topsearch').hide();
680
+ }); // END on click
681
+ }, // END uiEventHandler (topSearchModal)
682
+
683
+ {% if search_history_enabled %}
185
684
  // -------------------------------------------------------------------------
186
- // event handler
685
+ // setupSlimSelectEventHandlers()
686
+ // set all used select events
687
+ // see: https://slimselectjs.com/
187
688
  // -------------------------------------------------------------------------
188
- eventHandler: function () {
189
- // hide|clear results from top search
190
- $('#clear-topsearch').on('click', function() {
191
- $(this).addClass('d-none').prevAll(':input').val('');
192
- $('#search-results').hide();
193
- $('#search-results').html('');
194
- });
195
- }, // END eventHandler
689
+ setupSlimSelectEventHandlers: () => {
690
+ var select = document.getElementById('search_history');
691
+ var $slimSelect = select.slim;
692
+ var slimValues;
693
+ var data;
694
+ var prompt;
695
+
696
+ $slimSelect.events.beforeOpen = (e) => {
697
+ // get all options
698
+ const slimValues = $slimSelect.getData();
699
+ eventListenersReady = false;
700
+
701
+ logger.debug('\n' + 'slimSelect.beforeOpen, processing: started');
702
+
703
+ // re-read searchHistory from cookie for initial values
704
+ if (searchHistoryFromCookie) {
705
+ var searchHistory = j1.existsCookie(cookie_names.search_prompt)
706
+ ? j1.readCookie(cookie_names.search_prompt)
707
+ : {};
708
+
709
+ // set textHistory array
710
+ textHistory = Object.values(searchHistory);
711
+
712
+ // create|set slimSelect data elements
713
+ var index = 1;
714
+ var data = [];
715
+ var option = {};
716
+ var html;
717
+ textHistory.forEach ((historyText) => {
718
+ html = '<span id="opt_' + topSearchOptions.search_history_id + '_' + index + '" class="ss-option-delete">' + '<i class="mdib mdib-close mdib-16px ml-1 mr-2"></i></span>' + historyText;
719
+ option = {
720
+ text: historyText,
721
+ html: html,
722
+ display: true,
723
+ selected: false,
724
+ disabled: false
725
+ }
726
+ data.push(option);
727
+ index++;
728
+ }); // END forEach
729
+ $slimSelect.setData(data);
730
+
731
+ } // END re-read current history from cookie
732
+
733
+ // set searchHistory EventListeners (for option deletion)
734
+ if (slimValues.length) {
735
+ logger.debug('\n' + 'slimSelect.beforeOpen, number of eventListeners to process: #' + slimValues.length);
736
+ addSearchHistoryEventListeners(slimValues);
737
+ }
738
+
739
+ // wait until searchHistory eventListener|s is|are placed
740
+ var listenerIndex = 1;
741
+ slimValues.forEach( () => {
742
+ var span = 'opt_prompt_history_' + listenerIndex;
743
+ var spanElement = document.getElementById(span);
744
+ var dependencies_met_listeners_ready = setInterval (() => {
745
+ var spanElementReady = (($(spanElement).length) !== 0) ? true : false;
746
+ if (spanElementReady) {
747
+ if (listenerIndex === slimValues.length) {
748
+ eventListenersReady = true;
749
+ logger.debug('\n' + 'slimSelect.beforeOpen, all eventListeners ready');
750
+ } // END if listenerIndex
751
+ } // END if spanElementReady
752
+ if (!eventListenersReady) {
753
+ listenerIndex++;
754
+ } else {
755
+ clearInterval(dependencies_met_listeners_ready);
756
+ }
757
+ }, 10);
758
+ }); // END forEach data
759
+
760
+ var dependencies_beforeOpen_met_ready = setInterval (() => {
761
+ if (eventListenersReady) {
762
+ logger.debug('\n' + 'slimSelect.beforeOpen, processing: finished');
763
+
764
+ clearInterval(dependencies_beforeOpen_met_ready);
765
+ }
766
+ }, 10);
767
+ } // END event beforeOpen
768
+
769
+ $slimSelect.events.afterClose = (e) => {
770
+ // get selected value (NOTE: one||no selection possible)
771
+ const slimValue = $slimSelect.getSelected();
772
+
773
+ // set prompt on selection
774
+ if (slimValue.length) {
775
+ prompt = slimValue[0];
776
+ document.getElementById('search-query').value = prompt;
777
+ $('#clear-topsearch').show();
778
+
779
+ logger.debug('\n' + 'slimSelect.afterClose, selection from history: ' + prompt);
780
+ } else {
781
+ document.getElementById('search-query').value = '';
782
+ $('#search-results').html('');
783
+ $('#search-results').hide();
784
+ $('#send-to-history').hide();
785
+ $('#clear-topsearch').hide();
786
+
787
+ logger.debug('\n' + 'slimSelect.afterClose, selection from history: empty');
788
+ }
789
+
790
+ // remove selection from select
791
+ $slimSelect.setSelected('', false);
792
+ } // END event afterClose
793
+
794
+ }, // END setupSlimSelectEventHandlers()
795
+ {% endif %}
196
796
 
197
797
  // -------------------------------------------------------------------------
198
- // messageHandler: MessageHandler for J1 CookieConsent module
199
- // Manage messages send from other J1 modules
798
+ // messageHandler()
799
+ // manage messages send from other J1 modules
200
800
  // -------------------------------------------------------------------------
201
- messageHandler: function (sender, message) {
801
+ messageHandler: (sender, message) => {
202
802
  var json_message = JSON.stringify(message, undefined, 2);
203
803
 
204
804
  logText = '\n' + 'received message from ' + sender + ': ' + json_message;
205
805
  logger.debug(logText);
206
806
 
207
807
  // -----------------------------------------------------------------------
208
- // Process commands|actions
808
+ // process commands|actions
209
809
  // -----------------------------------------------------------------------
210
810
  if (message.type === 'command' && message.action === 'module_initialized') {
811
+
211
812
  //
212
- // Place handling of command|action here
813
+ // place handling of command|action here
213
814
  //
815
+
214
816
  logger.info('\n' + message.text);
215
817
  }
216
818
 
217
819
  //
218
- // Place handling of other command|action here
820
+ // place handling of other command|action here
219
821
  //
220
822
 
221
823
  return true;
@@ -223,9 +825,9 @@ j1.adapter.lunr = (function (j1, window) {
223
825
 
224
826
  // -------------------------------------------------------------------------
225
827
  // setState()
226
- // Sets the current (processing) state of the module
828
+ // sets the current (processing) state of the module
227
829
  // -------------------------------------------------------------------------
228
- setState: function (stat) {
830
+ setState: (stat) => {
229
831
  _this.state = stat;
230
832
  }, // END setState
231
833
 
@@ -233,11 +835,11 @@ j1.adapter.lunr = (function (j1, window) {
233
835
  // getState()
234
836
  // Returns the current (processing) state of the module
235
837
  // -------------------------------------------------------------------------
236
- getState: function () {
838
+ getState: () => {
237
839
  return _this.state;
238
840
  } // END getState
239
841
 
240
- }; // END return
842
+ }; // END main (return)
241
843
  })(j1, window);
242
844
 
243
845
  {% endcapture %}