j1-template 2024.3.19 → 2024.3.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. checksums.yaml +4 -4
  2. data/_layouts/page.html +1 -0
  3. data/assets/data/amplitude_app.html +192 -163
  4. data/assets/data/swiper_app.2.html +757 -0
  5. data/assets/data/swiper_app.4.html +769 -0
  6. data/assets/data/swiper_app.html +171 -27
  7. data/assets/theme/j1/adapter/js/amplitude.js +1104 -216
  8. data/assets/theme/j1/adapter/js/swiper.js +63 -15
  9. data/assets/theme/j1/core/css/themes/bootstrap/bootstrap.css +111 -101
  10. data/assets/theme/j1/core/css/themes/bootstrap/bootstrap.min.css +1 -1
  11. data/assets/theme/j1/core/css/themes/unodark/bootstrap.css +111 -101
  12. data/assets/theme/j1/core/css/themes/unodark/bootstrap.min.css +1 -1
  13. data/assets/theme/j1/core/css/themes/unolight/bootstrap.css +111 -101
  14. data/assets/theme/j1/core/css/themes/unolight/bootstrap.min.css +1 -1
  15. data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/amplitude.css +177 -216
  16. data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/amplitude.min.css +1 -1
  17. data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/player/compact.css +220 -339
  18. data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/player/compact.min.css +1 -2
  19. data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/player/large.css +324 -491
  20. data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/player/large.min.css +1 -2
  21. data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/player/mini.css +70 -60
  22. data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/player/mini.min.css +2 -1
  23. data/assets/theme/j1/modules/amplitudejs/js/tech/ytp.js +2074 -843
  24. data/assets/theme/j1/modules/amplitudejs/scss/theme/uno/dark/player/large.scss +439 -264
  25. data/assets/theme/j1/modules/swiperjs/css/modules/layoutBase.css +16 -0
  26. data/assets/theme/j1/modules/swiperjs/css/modules/layoutBase.min.css +16 -0
  27. data/assets/theme/j1/modules/swiperjs/css/modules/layoutExpanding.css +24 -24
  28. data/assets/theme/j1/modules/swiperjs/css/modules/layoutExpanding.min.css +1 -235
  29. data/assets/theme/j1/modules/swiperjs/css/modules/layoutNeighbor.min.css +2 -2
  30. data/assets/theme/j1/modules/swiperjs/css/modules/layoutParallax.css +16 -0
  31. data/assets/theme/j1/modules/swiperjs/css/modules/layoutParallax.min.css +16 -0
  32. data/assets/theme/j1/modules/swiperjs/css/modules/layoutStacked.css +6 -7
  33. data/assets/theme/j1/modules/swiperjs/css/modules/layoutStacked.min.css +1 -82
  34. data/assets/theme/j1/modules/swiperjs/css/modules/layoutThumbs.min.css +2 -29
  35. data/assets/theme/j1/modules/swiperjs/css/theme/uno.css +29 -12
  36. data/assets/theme/j1/modules/swiperjs/css/theme/uno.min.css +1 -1
  37. data/assets/theme/j1/modules/swiperjs/js/modules/layoutBase.js +25 -0
  38. data/assets/theme/j1/modules/swiperjs/js/modules/layoutBase.min.js +25 -0
  39. data/assets/theme/j1/modules/swiperjs/js/modules/layoutExpanding.js +1 -5
  40. data/assets/theme/j1/modules/swiperjs/js/modules/layoutExpanding.min.js +1 -5
  41. data/assets/theme/j1/modules/swiperjs/js/modules/layoutNeighbor.js +12 -14
  42. data/assets/theme/j1/modules/swiperjs/js/modules/layoutNeighbor.min.js +1 -17
  43. data/assets/theme/j1/modules/swiperjs/js/modules/layoutPanorama.js +0 -1
  44. data/assets/theme/j1/modules/swiperjs/js/modules/layoutParallax.js +25 -0
  45. data/assets/theme/j1/modules/swiperjs/js/modules/layoutParallax.min.js +25 -0
  46. data/assets/theme/j1/modules/swiperjs/js/modules/layoutStacked.0.js +114 -0
  47. data/assets/theme/j1/modules/swiperjs/js/modules/layoutStacked.1.js +93 -0
  48. data/assets/theme/j1/modules/swiperjs/js/modules/layoutStacked.js +42 -13
  49. data/assets/theme/j1/modules/swiperjs/js/modules/layoutStacked.min.js +17 -0
  50. data/assets/theme/j1/modules/swiperjs/js/modules/layoutThumbs.js +76 -25
  51. data/assets/theme/j1/modules/swiperjs/js/modules/layoutThumbs.min.js +1 -17
  52. data/assets/theme/j1/modules/swiperjs/js/swiper-bundle.js +9152 -9131
  53. data/assets/theme/j1/modules/swiperjs/js/swiper-bundle.min.js +1 -1
  54. data/lib/j1/version.rb +1 -1
  55. data/lib/starter_web/README.md +5 -5
  56. data/lib/starter_web/_config.yml +1 -1
  57. data/lib/starter_web/_data/modules/amplitude_app.yml +206 -23
  58. data/lib/starter_web/_data/modules/amplitude_playlists.yml +1122 -19
  59. data/lib/starter_web/_data/modules/defaults/{amplitude_app.yml → amplitude.yml} +73 -26
  60. data/lib/starter_web/_data/modules/swiper_app.yml +356 -155
  61. data/lib/starter_web/_data/modules/swiper_playlists.yml +77 -1
  62. data/lib/starter_web/_data/resources.yml +6 -2
  63. data/lib/starter_web/_data/templates/feed.xml +1 -1
  64. data/lib/starter_web/_includes/attributes.asciidoc +5 -4
  65. data/lib/starter_web/_plugins/filter/filters.rb +1 -11
  66. data/lib/starter_web/_plugins/index/lunr.rb +1 -1
  67. data/lib/starter_web/assets/image/icon/bokeh/bokeh-32x32.ico +0 -0
  68. data/lib/starter_web/assets/image/icon/bokeh/bokeh.ico +0 -0
  69. data/lib/starter_web/assets/image/icon/bokeh/logo-160x160.png +0 -0
  70. data/lib/starter_web/assets/image/icon/hyvor-talk/hyvore-talk.ico +0 -0
  71. data/lib/starter_web/assets/image/icon/hyvor-talk/jpg/hyvor-logo.512x512.jpg +0 -0
  72. data/lib/starter_web/assets/image/icon/hyvor-talk/png/hyvor-logo.24x24.jpg +0 -0
  73. data/lib/starter_web/assets/image/icon/hyvor-talk/png/hyvor-logo.24x24.png +0 -0
  74. data/lib/starter_web/assets/image/icon/hyvor-talk/png/hyvor-logo.512x512.png +0 -0
  75. data/lib/starter_web/assets/image/icon/hyvor-talk/scalable/hyvor-logo.svg +81 -0
  76. data/lib/starter_web/assets/image/icon/jupyter/jupyter-32x32.ico +0 -0
  77. data/lib/starter_web/assets/image/icon/jupyter/jupyter.ico +0 -0
  78. data/lib/starter_web/assets/image/icon/jupyter/logo.png +0 -0
  79. data/lib/starter_web/assets/image/icon/mdi/mdi.svg +1 -0
  80. data/lib/starter_web/assets/image/icon/mdi/mdil.svg +1 -0
  81. data/lib/starter_web/assets/image/icon/scalable/facebook.svg +34 -0
  82. data/lib/starter_web/assets/image/icon/scalable/google.svg +35 -0
  83. data/lib/starter_web/assets/image/icon/scalable/ibm.svg +24 -0
  84. data/lib/starter_web/assets/image/icon/scalable/microsoft.svg +42 -0
  85. data/lib/starter_web/assets/image/module/swiper/avatar/avatar-1.png +0 -0
  86. data/lib/starter_web/assets/image/module/swiper/avatar/avatar-2.png +0 -0
  87. data/lib/starter_web/assets/image/module/swiper/avatar/avatar-3.png +0 -0
  88. data/lib/starter_web/assets/image/module/swiper/avatar/avatar-4.png +0 -0
  89. data/lib/starter_web/assets/image/module/swiper/avatar/avatar-5.png +0 -0
  90. data/lib/starter_web/assets/image/module/swiper/simple/test/image/diana_krall.jpg +0 -0
  91. data/lib/starter_web/index.html +3 -3
  92. data/lib/starter_web/package.json +1 -1
  93. data/lib/starter_web/pages/public/learn/where_to_go.adoc +1 -1
  94. data/lib/starter_web/pages/public/tools/previewer/preview_amplitudejs.adoc +69 -36
  95. data/lib/starter_web/pages/public/tools/tester/app_tester_amplitudejs_yt.adoc +65 -18
  96. data/lib/starter_web/pages/public/tools/tester/app_tester_swiper.adoc +87 -0
  97. data/lib/starter_web/pages/public/tools/tester/app_tester_swiperjs.adoc +121 -36
  98. data/lib/starter_web/pages/public/tour/_includes/attributes.asciidoc +3 -3
  99. data/lib/starter_web/pages/public/tour/{play_audio.adoc → audio_data.adoc} +51 -86
  100. data/lib/starter_web/pages/public/tour/{present_images.adoc → image_data.adoc} +4 -5
  101. data/lib/starter_web/pages/public/tour/{play_video.adoc → video_data.adoc} +18 -17
  102. metadata +52 -17
  103. data/assets/theme/j1/modules/swiperjs/js/highlightJS.js +0 -13376
  104. data/assets/theme/j1/modules/swiperjs/js/highlightJS.min.js +0 -1246
  105. data/assets/theme/j1/modules/swiperjs/js/modules/!readme +0 -3
  106. /data/lib/starter_web/assets/image/module/swiper/extended/{poster → stacked}/!info/!readme +0 -0
  107. /data/lib/starter_web/assets/image/module/swiper/extended/{poster → stacked}/image/!readme +0 -0
  108. /data/lib/starter_web/assets/image/module/swiper/extended/{poster → stacked}/image/1.jpg +0 -0
  109. /data/lib/starter_web/assets/image/module/swiper/extended/{poster → stacked}/image/2.jpg +0 -0
  110. /data/lib/starter_web/assets/image/module/swiper/extended/{poster → stacked}/image/3.jpg +0 -0
  111. /data/lib/starter_web/assets/image/module/swiper/extended/{poster → stacked}/image/4.jpg +0 -0
  112. /data/lib/starter_web/assets/image/module/swiper/extended/{poster → stacked}/image/5.jpg +0 -0
  113. /data/lib/starter_web/assets/image/module/swiper/extended/{poster → stacked}/image/6.jpg +0 -0
@@ -107,7 +107,29 @@ mobile devices.
107
107
 
108
108
 
109
109
  [role="mt-5"]
110
- == Mini Player
110
+ == AmplitudeJS
111
+
112
+ The J1 Template suports *native audio* files (e.g. mp3) using *custom players*
113
+ based on *AmplitudeJS* using the the (default) theme Uno. The color scheme
114
+ used matches the look and feel of the template to preserve the page design.
115
+
116
+ Three types of AmplitudeJS players are build-in for the J1 template system:
117
+
118
+ * *Mini* Players
119
+ * *Compact* Players (default payer)
120
+ * *Large* Players
121
+
122
+ [role="mt-4"]
123
+ [NOTE]
124
+ ====
125
+ Amplitude players for the J1 Template are mobile-friendly. Instead of
126
+ clicking on the appropriate elements, touch events are applied to all
127
+ mobile devices.
128
+ ====
129
+
130
+
131
+ [role="mt-5"]
132
+ === Mini Players
111
133
 
112
134
  In the context of complex components on a web page, like an audio player,
113
135
  a mini player refers to a minimized version of full players. It typically
@@ -119,54 +141,65 @@ background without dedicating the entire screen to the player. They
119
141
  are commonly found on music streaming services, podcast platforms, and
120
142
  websites with embedded audio content.
121
143
 
122
- .Emancipator · Dusk To Dawn
123
- amplitude::free_emancipator_mini[role="mt-3 mb-5"]
144
+ .Emancipator · From Dusk To Dawn
145
+ amplitude::emancipator_mini[role="mb-5"]
124
146
 
125
- .Royalty Free Music · Disco 80th
126
- amplitude::free_disco_mini[role="mt-3 mb-5"]
127
-
128
- lorem:sentences[5]
129
147
 
130
148
  [role="mt-5"]
131
- == Compact Player
149
+ === Compact Players
150
+
151
+ The design of a *Compact player* is an efficient approach that involves
152
+ condensing the player controls and display elements into a smaller area.
153
+ It allows the audio player to fit neatly within the web page's layout without
154
+ overwhelming or dominating the content around it.
155
+
156
+ The player aims to balance functionality and space efficiency, ensuring users
157
+ can easily access and control the audio playback without sacrificing too much
158
+ screen space or placing multiple players side-by-side.
132
159
 
133
- A complex component like an audio player on a web page, *compact*
134
- typically refers to a design or layout that minimizes the component's
135
- space while maintaining its functionality and usability.
160
+ .Emancipator · From Dusk To Dawn
161
+ amplitude::emancipator_compact[role="mb-5"]
136
162
 
137
- ////
138
- The *compact design* for an audio player is an efficient approach that
139
- involves condensing the player controls and display elements into a smaller
140
- area. It uses icons or symbols instead of text labels where possible, and
141
- possibly hides less frequently used features behind menus or dropdowns to
142
- reduce clutter, thereby instilling confidence in its effectiveness.
143
163
 
144
- A *compact* design allows the audio player to fit neatly within the web
145
- page's layout without overwhelming or dominating the content around it.
146
- The design aims to balance functionality and space efficiency, ensuring
147
- users can easily access and control the audio playback without sacrificing
148
- too much screen space.
149
- ////
164
+ [role="mt-5"]
165
+ === Large Players
150
166
 
151
- .Emancipator · Dusk To Dawn
152
- amplitude::free_emancipator_compact[role="mt-3 mb-5"]
167
+ A complex component, like an audio player on a web page, typically refers
168
+ to a design or layout that minimizes the component's space while maintaining
169
+ its functionality and usability.
153
170
 
154
- .Royalty Free Music · Disco 80th
155
- amplitude::free_disco_compact[role="mt-3 mb-5"]
171
+ The large design provides the full functionality of an audio player to ensure
172
+ users can easily control audio playback. The player behaves similarly to a
173
+ compact player, but all controls are displayed in a single window; there is
174
+ no need to open other widgets.
156
175
 
157
- lorem:sentences[5]
176
+ .Emancipator · From Dusk To Dawn
177
+ amplitude::emancipator_large[role="mb-5"]
158
178
 
159
179
 
160
180
  [role="mt-5"]
161
- == Large Player
181
+ == AmplitudeJS on Youtube
162
182
 
163
- lorem:sentences[5]
183
+ The example demonstrates playing *Audio* track from *YouTube Video* using an
184
+ AmplitudJS player. The J1 template uses the video *plugin ytp* to extend the
185
+ native functionality of the AmplitudeJS API to playback YouTube files only for
186
+ the audio part.
164
187
 
165
- .Emancipator · Dusk To Dawn
166
- amplitude::free_emancipator_large[role="mt-3 mb-5"]
188
+ [role="mt-4 mb-5"]
189
+ [CAUTION]
190
+ ====
191
+ Playing audio tracks is currently supported only for videos from YouTube (YT).
192
+ The YT plugin *ytp* embeds a YouTube (iframe) player and mimics the AmplitudeJS
193
+ player buttons and controls to manage a *playlist* of videos the same as known
194
+ for native audio files.
195
+ ====
167
196
 
168
- .Royalty Free Music · Disco 80th
169
- amplitude::free_disco_large[role="mt-3 mb-5"]
197
+ .Bea and her Business · YouTube 2025
198
+ amplitude::bea_yt_large[role="mb-5"]
170
199
 
171
- [role="mb-8"]
172
- lorem:sentences[3]
200
+ [role="mt-4 mb-5"]
201
+ [NOTE]
202
+ ====
203
+ AmplitudeJS YT Player can only be used with the J1 Template. Currently, only
204
+ players of type *large* are supported.
205
+ ====
@@ -1,7 +1,7 @@
1
1
  ---
2
- title: J1 Amplitude App
3
- title_extention: YouTube Video Integration
4
- tagline: YouTube Video Integration
2
+ title: J1 Amplitude
3
+ title_extention: YouTube Video
4
+ tagline: YouTube Video
5
5
 
6
6
  date: 2024-09-21
7
7
  #last_modified: 2024-01-01
@@ -158,6 +158,7 @@ endif::[]
158
158
 
159
159
 
160
160
  ifeval::[{ytp--audio-player} == true]
161
+
161
162
  [role="mt-5"]
162
163
  == Amplitude YouTube Player
163
164
 
@@ -173,6 +174,7 @@ Find the complete *playlist* for Manon Mélodie on
173
174
  link:{manon-melodie--playlist}[YouTube, {browser-window--new}].
174
175
  ====
175
176
 
177
+
176
178
  [role="mt-4"]
177
179
  [[manon_melodie]]
178
180
  === Manon Mélodie
@@ -180,24 +182,69 @@ link:{manon-melodie--playlist}[YouTube, {browser-window--new}].
180
182
  lorem:sentences[3]
181
183
 
182
184
  .Manon Mélodie · YouTube 2025
183
- amplitude::manon_melodie_yt_large[role="mt-4 mb-5"]
185
+ amplitude::manon_melodie_yt_large[role="mb-5"]
186
+
187
+ [role="mt-4"]
188
+ [[bea]]
189
+ === Bea and her Business
190
+
191
+ lorem:sentences[3]
192
+
193
+ .Bea and her Business · YouTube 2025
194
+ amplitude::bea_yt_large[role="mb-5"]
195
+
196
+
197
+ [role="mt-4"]
198
+ === Diana Krall
199
+
200
+ lorem:sentences[3]
201
+
202
+ .Diana Krall · YouTube
203
+ amplitude::diana_krall_yt_large[role="mb-5"]
204
+
205
+
206
+ [role="mt-4"]
207
+ === Ephraim Kishon
208
+
209
+ lorem:sentences[5]
210
+
211
+ [role="mt-4"]
212
+ ==== Beste Familiengeschichten
213
+
214
+ lorem:sentences[3]
184
215
 
185
- // [role="mt-4"]
186
- // === Mimi Rutherfurt
216
+ .Ephraim Kishon · Beste Familiengeschichten
217
+ amplitude::familiengeschichten_yt_large[role="mb-5"]
187
218
 
188
- // lorem:sentences[3]
189
219
 
190
- // .Mimi Rutherfurt · Maritim Verlag
191
- // amplitude::mimi_rutherfurt_yt_large[role="mt-4 mb-5"]
220
+ [role="mt-4"]
221
+ ==== Beste Autofahrergeschichten
222
+
223
+ lorem:sentences[3]
224
+
225
+ .Ephraim Kishon · Beste Autofahrergeschichten
226
+ amplitude::autofahrer_geschichten_yt_large[role="mb-5"]
192
227
 
193
- // [role="mt-4"]
194
- // [[faelle_des_bnd]]
195
- // === Die größten Fälle des BND
196
228
 
197
- // lorem:sentences[3]
229
+ [role="mt-4"]
230
+ === Disco 80th
231
+
232
+ The large design provides the full functionality of an audio player to ensure
233
+ users can easily control audio playback. The player behaves similarly to a
234
+ compact player, but all controls are displayed in a single window; there is
235
+ no need to open other widgets.
236
+
237
+ .Royalty Free Music · Disco 80th
238
+ amplitude::disco_large[role="mb-5"]
239
+
240
+
241
+ [role="mt-4"]
242
+ === Mimi Rutherfurt
243
+
244
+ lorem:sentences[3]
198
245
 
199
- // .Die größten Fälle des BND · Maritim Verlag
200
- // amplitude::faelle_des_bnd_yt_large[role="mt-4 mb-5"]
246
+ .Mimi Rutherfurt · Maritim Verlag
247
+ amplitude::mimi_rutherfurt_yt_large[role="mb-5"]
201
248
 
202
249
  endif::[]
203
250
 
@@ -221,7 +268,7 @@ ifeval::[{ms-slider-video--example} == true]
221
268
  lorem:sentences[5]
222
269
 
223
270
  .Slider using Video
224
- masterslider::ms_00010[role="mt-4 mb-5"]
271
+ masterslider::ms_00010[role="mb-5"]
225
272
 
226
273
 
227
274
  [role="mt-5"]
@@ -232,7 +279,7 @@ upload, view, share, and comment on videos. The platform provides services
232
279
  for people and organizations to publish various video content.
233
280
 
234
281
  .Fortnight (feat. Post Malone, Official Music Video) · Taylor Swift
235
- youtube::q3zqJs7JUCQ[poster="//img.youtube.com/vi/q3zqJs7JUCQ/maxresdefault.jpg" role="mt-4 mb-5"]
282
+ youtube::q3zqJs7JUCQ[poster="//img.youtube.com/vi/q3zqJs7JUCQ/maxresdefault.jpg" role="mb-5"]
236
283
 
237
284
 
238
285
  [role="mt-5"]
@@ -242,5 +289,5 @@ VideoJS provides a flexible and customizable platform for displaying and
242
289
  controlling MPEG 4 video content on websites and web applications.
243
290
 
244
291
  .Video over VideoJS
245
- gallery::jg_video_html5_videojs[role="mt-4 mb-5"]
292
+ gallery::jg_video_html5_videojs[role="mb-5"]
246
293
  endif::[]
@@ -0,0 +1,87 @@
1
+ ---
2
+ title: J1 Swiper
3
+ title_extention: Replacemant for Backstretch
4
+ tagline: Replacemant for Backstretch
5
+ date: 2025-05-22
6
+ #last_modified: 2025-01-01
7
+
8
+ description: >
9
+ SwiperJS is a Javascript API that creates modern
10
+ slider shows. All sliders use hardware-accelerated
11
+ features like 3D transitions to perform best on modern
12
+ devices. SwiperJS-based sliders are intended to be
13
+ displayed at their best on all types of websites, such
14
+ as those viewed on desktop computers, tablets, or
15
+ smartphones.
16
+ keywords: >
17
+ open source, free, template, jekyll, jekyllone, web,
18
+ sites, static, jamstack, bootstrap,
19
+ html, html5, sliders, carousels, SwiperJS
20
+
21
+ categories: [ Tester ]
22
+ tags: [ SwiperJS ]
23
+
24
+ image:
25
+ path: /assets/image/module/attic/markus-spiske-1920x1280.jpg
26
+ width: 1920
27
+ height: 1280
28
+
29
+ compress: false
30
+ regenerate: false
31
+ personalization: true
32
+ permalink: /pages/public/tools/tester/swiper/
33
+
34
+ resources: [ swiperjs ]
35
+ resource_options:
36
+ - toccer:
37
+ collapseDepth: 3
38
+ - attic:
39
+ enabled: false
40
+ slides:
41
+ - url: //kj.de/images/media/6078_20579.jpg
42
+ alt: Diana Krall
43
+ ---
44
+
45
+ // Page Initializer
46
+ // =============================================================================
47
+ // Enable the Liquid Preprocessor
48
+ :page-liquid:
49
+
50
+ // Attribute settings for section control
51
+ //
52
+ :swiper--features: false
53
+
54
+ // Set (local) page attributes here
55
+ // -----------------------------------------------------------------------------
56
+ // :page--attr: <attr-value>
57
+
58
+ // Load Liquid procedures
59
+ // -----------------------------------------------------------------------------
60
+ {% capture load_attributes %}themes/{{site.template.name}}/procedures/global/attributes_loader.proc{%endcapture%}
61
+
62
+ // Load page attributes
63
+ // -----------------------------------------------------------------------------
64
+ {% include {{load_attributes}} scope="global" %}
65
+
66
+ // Include sub-documents (if any)
67
+ // -----------------------------------------------------------------------------
68
+
69
+ // Page content
70
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
71
+
72
+ swiper::attic_swiper[role="mb-8"]
73
+
74
+ // ++++
75
+ // <!-- Swiper elements (El) -->
76
+ // <div id="swiper_image_base" class="swiper swiper-container">
77
+ // <!-- Swiper Wrapper (slides) -->
78
+ // <ul class="swiper-wrapper">
79
+ // <!-- flat swiper slide HTML -->
80
+ // <li class="swiper-slide">
81
+ // <img src="/assets/image/module/swiper/simple/test/image/diana_krall.jpg" alt="Slide Image diana_krall">
82
+ // </li>
83
+ // </ul>
84
+ // <!-- END Swiper Wrapper (slides) -->
85
+ // </div>
86
+ // <!-- END Swiper Container (elements) -->
87
+ // ++++
@@ -75,7 +75,7 @@ all types of websites, such as those viewed on desktop computers, tablets, or
75
75
  smartphones.
76
76
 
77
77
 
78
- [role="mt-5"]
78
+ [role="mt-4"]
79
79
  == What SwiperJS Apps are
80
80
 
81
81
  SwiperJS Apps are preconfigured swipers (sliders) that use the SwiperJS API as
@@ -120,7 +120,7 @@ A more *emphasized* type of a **text**-based swiper is a *parallax* text
120
120
  swiper. If you want to *focus* the meaning, this kind of a swiper may be
121
121
  nteresting. Parallax text sliders can be placed as *banners* on a page.
122
122
 
123
- .Extended Text Swiper · Parallax
123
+ .Extended Text Swiper · Parallax
124
124
  swiper::swiper_text_parallax[role="mt-4 mb-5"]
125
125
 
126
126
 
@@ -145,7 +145,7 @@ below the Swiper App indicate how *many* slides (images) the slide show
145
145
  *contains* for improved usage experience.
146
146
 
147
147
  .Image Swiper · Full-width + Pagination
148
- swiper::swiper_image_base_full_width_pagination[role="mt-4 mb-5"]
148
+ swiper::swiper_image_base_full_width_pagination[role="mt-3"]
149
149
 
150
150
  [role="mt-4"]
151
151
  ==== Equal Image Sizes
@@ -156,9 +156,10 @@ many facts to know animated for the reader's attention within a single
156
156
  line.
157
157
 
158
158
  .Equal Image Sizes · Captions + Navigation + Pagination
159
- swiper::swiper_image_base_navigation_pagination_lightbox[role="mt-4 mb-4"]
159
+ swiper::swiper_image_base_navigation_pagination[role="mt-3"]
160
160
 
161
- [role="mt-5"]
161
+
162
+ [role="mt-4"]
162
163
  ==== Mixed Image Sizes
163
164
 
164
165
  Pictures you've made are typically *not even in size*. Images may have the
@@ -166,7 +167,7 @@ same size (resolution), but some are orientated *landscape*, or others may
166
167
  be *portrait*. For that reason, a more powerful swiper is needed to create
167
168
  so-called justified slides.
168
169
 
169
- .Mixed Image Sizes · Captions + Lightbos
170
+ .Mixed Image Sizes · Captions + Lightbox
170
171
  swiper::swiper_image_base_captions[role="mt-4 mb-4"]
171
172
 
172
173
 
@@ -222,7 +223,7 @@ presented *images*.
222
223
  ++++
223
224
  <div class="swiper-title"> <i class="mdib mdib-view-carousel mdib-24px mr-2"></i> Extendend Swiper · Layout Thumb Right + Captions </div>
224
225
  <div class="container g-0 mb-5">
225
- <div class="row gx-1">
226
+ <div id="thumb_view_row" class="row gx-1">
226
227
 
227
228
  <!-- Thumb View (main) -->
228
229
  <div class="col-md-9">
@@ -255,7 +256,11 @@ presented *images*.
255
256
  <div class="swp-caption-content">Little Bird</div>
256
257
  </li>
257
258
  </ul> <!-- END Swiper wrapper -->
258
- </div> <!-- END Swiper container -->
259
+
260
+ <!-- Outer Pagination -->
261
+ <div id="thumb_view_row_pagination" class="swiper-pagination-outer"></div>
262
+
263
+ </div> <!-- END Swiper container -->
259
264
  </div> <!-- END Thumb View (main) -->
260
265
 
261
266
  <!-- Thumb View (thumbs/right) -->
@@ -293,6 +298,10 @@ presented *images*.
293
298
  </div> <!-- END Thumb View (thumbs/right) -->
294
299
 
295
300
  </div> <!-- END BS row -->
301
+
302
+ <!-- Outer Pagination -->
303
+ <!--div class="swiper-pagination-outer"></div -->
304
+
296
305
  </div> <!-- END BS container -->
297
306
 
298
307
  <script>
@@ -318,10 +327,14 @@ $(function() {
318
327
  }
319
328
  });
320
329
 
321
- // Initialize Master instance (right)
330
+ // Initialize Master instance
322
331
  var masterSwiper2 = new Swiper('#master_slider_2', {
323
332
  direction: 'horizontal',
324
333
  grabCursor: true,
334
+ pagination: {
335
+ el: '.swiper-pagination-outer',
336
+ clickable: true,
337
+ },
325
338
  effect: 'fade',
326
339
  fadeEffect: {
327
340
  crossFade: true
@@ -339,6 +352,22 @@ $(function() {
339
352
  }
340
353
  });
341
354
 
355
+ // workaround for swiper pagination placed 'outer'
356
+ // ---------------------------------------------------------------
357
+ {% assign init_swiper_delay = 500 %}
358
+ {% assign pagination_enabled = true %}
359
+
360
+ {% if pagination_enabled %}
361
+ setTimeout(() => {
362
+ const sourceEl = document.getElementById('thumb_view_row_pagination');
363
+ const targetEl = document.getElementById('thumb_view_row');
364
+ targetEl.appendChild(sourceEl);
365
+
366
+ // logger.debug('\n' + 'pagination elements (outer) moved');
367
+ }, {{init_swiper_delay}});
368
+ {% endif %}
369
+ // ---------------------------------------------------------------
370
+
342
371
  clearInterval(dependencies_met_page_ready);
343
372
  } // END pageVisible
344
373
  }, 10); // END dependencies_met_page_ready
@@ -476,43 +505,49 @@ $(function() {
476
505
 
477
506
  lorem:sentences[5]
478
507
 
508
+ .Extendend Swiper · Layout Stacked
509
+ swiper::swiper_image_stacked[role="mt-4 mb-5"]
510
+
511
+ ////
479
512
  ++++
480
- <div class="carousel-title"> <i class="mdib mdib-view-carousel mdib-24px mr-2"></i> Extendend Swiper · Layout Stacked</div>
481
- <!-- Posters slider -->
513
+ <div class="carousel-title"> <i class="mdib mdib-view-carousel mdib-24px mr-2"></i> Extendend Swiper · Layout Stacked (manual)</div>
514
+ <!-- Stacked slider -->
482
515
  <div id="stacked_slider" class="stacked-slider mt-3">
483
- <div class="swiper swiper-container">
516
+ <div id="stacked_slider_swiper_container" class="swiper swiper-container">
484
517
 
485
518
  <ul class="swiper-wrapper">
486
519
  <li class="swiper-slide">
487
520
  <!-- set image parallax scale for nice zoom effect -->
488
- <img data-swiper-parallax-scale="1.1" src="/assets/image/module/swiper/extended/poster/image/1.jpg" alt="">
521
+ <img data-swiper-parallax-scale="1.1" src="/assets/image/module/swiper/extended/stacked/image/1.jpg" alt="">
489
522
  </li>
490
523
  <li class="swiper-slide">
491
- <img data-swiper-parallax-scale="1.1" src="/assets/image/module/swiper/extended/poster/image/2.jpg" alt="">
524
+ <img data-swiper-parallax-scale="1.1" src="/assets/image/module/swiper/extended/stacked/image/2.jpg" alt="">
492
525
  </li>
493
526
  <li class="swiper-slide">
494
- <img data-swiper-parallax-scale="1.1" src="/assets/image/module/swiper/extended/poster/image/3.jpg" alt="">
527
+ <img data-swiper-parallax-scale="1.1" src="/assets/image/module/swiper/extended/stacked/image/3.jpg" alt="">
495
528
  </li>
496
529
  <li class="swiper-slide">
497
- <img data-swiper-parallax-scale="1.1" src="/assets/image/module/swiper/extended/poster/image/4.jpg" alt="">
530
+ <img data-swiper-parallax-scale="1.1" src="/assets/image/module/swiper/extended/stacked/image/4.jpg" alt="">
498
531
  </li>
499
532
  <li class="swiper-slide">
500
- <img data-swiper-parallax-scale="1.1" src="/assets/image/module/swiper/extended/poster/image/5.jpg" alt="">
533
+ <img data-swiper-parallax-scale="1.1" src="/assets/image/module/swiper/extended/stacked/image/5.jpg" alt="">
501
534
  </li>
502
535
  <li class="swiper-slide">
503
- <img data-swiper-parallax-scale="1.1" src="/assets/image/module/swiper/extended/poster/image/6.jpg" alt="">
536
+ <img data-swiper-parallax-scale="1.1" src="/assets/image/module/swiper/extended/stacked/image/6.jpg" alt="">
504
537
  </li>
505
- </ul>
538
+ </ul> <!-- END Swiper Wrapper (slides) -->
506
539
 
507
- </div>
508
- </div>
509
- ++++
540
+ <!-- Pagination -->
541
+ <!-- div id="stacked_slider_pagination" class="swiper-pagination-outer"></div -->
542
+ <div id="stacked_slider_pagination" class="swiper-pagination-inner"></div>
543
+
544
+ </div> <!-- END Swiper Container (elements) -->
545
+ </div> <!-- END Swiper stacked_slider -->
510
546
 
511
- ++++
512
547
  <script>
513
548
  $(function() {
514
549
 
515
- function createPostersSlider(el) {
550
+ function LayoutStacked(el) {
516
551
  const swiperEl = el.querySelector('.swiper');
517
552
 
518
553
  const calcNextOffset = () => {
@@ -524,12 +559,25 @@ $(function() {
524
559
  return `${nextOffsetVh}%`;
525
560
  };
526
561
 
527
- const postersSwiper = new Swiper(swiperEl, {
562
+ const onLastSlide = (swiper) => {
563
+ console.log ('\n' + 'LayoutStacked, Entered event: reachEnd');
564
+ // swiper.allowTouchMove = false;
565
+ // swiper.allowSlidePrev = false;
566
+ // swiper.allowSlideNext = false;
567
+ };
568
+
569
+ const stackedSwiper = new Swiper(swiperEl, {
528
570
  effect: 'creative',
529
571
  speed: 600,
530
572
  resistanceRatio: 0,
531
573
  grabCursor: true,
532
574
  parallax: true,
575
+ pagination: {
576
+ //el: '.swiper-pagination-outer',
577
+ el: '.swiper-pagination-inner',
578
+ type: 'bullets',
579
+ clickable: true
580
+ },
533
581
  creativeEffect: {
534
582
  limitProgress: 3,
535
583
  perspective: true,
@@ -543,26 +591,52 @@ $(function() {
543
591
  },
544
592
  },
545
593
  on: {
546
- init: (swiper) => { var slideHeight = 600; swiper.slides.forEach(slide => { slide.style.height = `${slideHeight}px`; }); }
594
+ init: (swiper) => {
595
+ var slideHeight = 900;
596
+ swiper.slides.forEach(slide => {
597
+ slide.style.height = `${slideHeight}px`;
598
+ });
599
+ },
600
+ // reachEnd: (swiper) => {
601
+ // onLastSlide(swiper);
602
+ // }
547
603
  }
548
604
  });
549
605
 
550
606
  const onResize = () => {
551
- if (!postersSwiper || postersSwiper.destroyed) return;
607
+ if (!stackedSwiper || stackedSwiper.destroyed) return;
552
608
  // prettier-ignore
553
- postersSwiper.params.creativeEffect.next.translate = [calcNextOffset(), 0, 0];
609
+ stackedSwiper.params.creativeEffect.next.translate = [calcNextOffset(), 0, 0];
554
610
  if (
555
- postersSwiper.params.resizeObserver &&
611
+ stackedSwiper.params.resizeObserver &&
556
612
  typeof window.ResizeObserver !== 'undefined'
557
613
  ) {
558
- postersSwiper.update();
614
+ stackedSwiper.update();
559
615
  }
560
616
  };
561
617
  window.addEventListener('resize', onResize);
562
618
 
563
- return postersSwiper;
564
619
 
565
- } // END createPostersSlider
620
+ // workaround for swiper pagination placed 'outer'
621
+ // -------------------------------------------------------------------------
622
+ {% assign init_swiper_delay = 500 %}
623
+ {% assign pagination_el = swiper.module_settings.pagination.el | split: '-' %}
624
+ {% assign pagination_position = pagination_el[2] %}
625
+
626
+ setTimeout(() => {
627
+ // const sourceEl = document.getElementById('{{swiper.id}}_pagination');
628
+ // const targetEl = document.getElementById('{{swiper.id}}');
629
+ const sourceEl = document.getElementById('stacked_slider_pagination');
630
+ const targetEl = document.getElementById('stacked_slider_swiper_container');
631
+ // targetEl.appendChild(sourceEl);
632
+
633
+ // logger.debug('\n' + 'pagination elements (outer) moved');
634
+ }, {{init_swiper_delay}});
635
+ // -------------------------------------------------------------------------
636
+
637
+ return stackedSwiper;
638
+
639
+ } // END LayoutStacked
566
640
 
567
641
  // ---------------------------------------------------------------------------
568
642
  // Swiper initializer
@@ -573,7 +647,7 @@ $(function() {
573
647
  if (atticFinished) {
574
648
  const sliderEl = document.querySelector('#stacked_slider');
575
649
 
576
- createPostersSlider(sliderEl);
650
+ LayoutStacked(sliderEl);
577
651
 
578
652
  clearInterval(dependencies_met_page_ready);
579
653
  } // END pageVisible
@@ -583,7 +657,7 @@ $(function() {
583
657
  }); // END Document READY
584
658
  </script>
585
659
  ++++
586
-
660
+ ////
587
661
 
588
662
  [role="mt-5"]
589
663
  ==== Layout Expanding
@@ -595,7 +669,7 @@ lorem:sentences[3]
595
669
  <div id="app" class="extended-app">
596
670
  <!-- Style expanding-slide should wrap the swiper for Effect: Expanding -->
597
671
  <div id="expanding_slides" class="expanding-slide mt-4">
598
- <div class="swiper swiper-container">
672
+ <div id="expanding_slides_swiper_container" class="swiper swiper-container">
599
673
 
600
674
  <ul class="swiper-wrapper">
601
675
  <!-- First slide -->
@@ -702,6 +776,12 @@ lorem:sentences[3]
702
776
  </li>
703
777
  </ul> <!-- END Swiper wrapper -->
704
778
 
779
+ <!-- Inner Pagination -->
780
+ <!-- div class="swiper-pagination-inner"></div -->
781
+
782
+ <!-- Outer pagination, NOT moved by SwiperJS Adapter (workaround) -->
783
+ <div class="swiper-pagination-outer"></div>
784
+
705
785
  </div> <!-- END Swiper container -->
706
786
  </div> <!-- END expanding_slides -->
707
787
  </div> <!-- END app -->
@@ -771,7 +851,12 @@ $(function() {
771
851
 
772
852
  const swiper = new Swiper(swiperEl, {
773
853
  speed: 600,
774
- // resistanceRatio: 0,
854
+ pagination: {
855
+ el: '.swiper-pagination-outer',
856
+ type: 'bullets',
857
+ clickable: true
858
+ },
859
+ resistanceRatio: 0,
775
860
  // slidesPerView: 'auto',
776
861
  // centeredSlides: true,
777
862
  on: {