j1-template 2024.3.16 → 2024.3.18

Sign up to get free protection for your applications and to get access to all the features.
Files changed (621) hide show
  1. checksums.yaml +4 -4
  2. data/_includes/themes/j1/layouts/content_generator_collection.html +1 -1
  3. data/_includes/themes/j1/layouts/content_generator_news_panel_posts.html +1 -1
  4. data/_includes/themes/j1/layouts/content_generator_page.html +1 -1
  5. data/_includes/themes/j1/layouts/content_generator_post.html +1 -1
  6. data/_includes/themes/j1/layouts/content_generator_raw.html +1 -1
  7. data/_includes/themes/j1/layouts/layout_metadata_generator.html +1 -1
  8. data/_includes/themes/j1/layouts/layout_module_generator.html +1 -1
  9. data/_includes/themes/j1/layouts/layout_resource_generator.html +1 -1
  10. data/_includes/themes/j1/modules/attics/generator.html +1 -1
  11. data/_includes/themes/j1/modules/navigator/generator.html +1 -1
  12. data/_includes/themes/j1/modules/searcher/generator.html +1 -1
  13. data/_includes/themes/j1/modules/searcher/procedures/topsearch.proc +1 -1
  14. data/_includes/themes/j1/procedures/blocks/footer/boxes/about_box.proc +1 -1
  15. data/_includes/themes/j1/procedures/blocks/footer/boxes/contacts_box.proc +1 -1
  16. data/_includes/themes/j1/procedures/blocks/footer/boxes/issue.proc +1 -1
  17. data/_includes/themes/j1/procedures/blocks/footer/boxes/legal_statements.proc +1 -1
  18. data/_includes/themes/j1/procedures/blocks/footer/boxes/links_box.proc +1 -1
  19. data/_includes/themes/j1/procedures/blocks/footer/boxes/news_box.proc +1 -1
  20. data/_includes/themes/j1/procedures/blocks/footer/boxes/social_media_icons.proc +1 -1
  21. data/_includes/themes/j1/procedures/blocks/get_wave.proc +1 -1
  22. data/_includes/themes/j1/procedures/collections/create_collection_article_preview.proc +1 -1
  23. data/_includes/themes/j1/procedures/collections/pager.proc +1 -1
  24. data/_includes/themes/j1/procedures/global/attributes_loader.proc +1 -1
  25. data/_includes/themes/j1/procedures/global/collect_frontmatter_options.proc +1 -1
  26. data/_includes/themes/j1/procedures/global/collect_page_options.proc +1 -1
  27. data/_includes/themes/j1/procedures/global/create_bs_button.proc +1 -1
  28. data/_includes/themes/j1/procedures/global/create_word_cloud.proc +1 -1
  29. data/_includes/themes/j1/procedures/global/date-german.proc +1 -1
  30. data/_includes/themes/j1/procedures/global/get_category.proc +1 -1
  31. data/_includes/themes/j1/procedures/global/get_category_item.proc +1 -1
  32. data/_includes/themes/j1/procedures/global/get_documents_dir.proc +1 -1
  33. data/_includes/themes/j1/procedures/global/get_page_path.proc +1 -1
  34. data/_includes/themes/j1/procedures/global/get_page_url.proc +1 -1
  35. data/_includes/themes/j1/procedures/global/select_color.proc +1 -1
  36. data/_includes/themes/j1/procedures/global/select_font_size.proc +1 -1
  37. data/_includes/themes/j1/procedures/global/select_icon_size.proc +1 -1
  38. data/_includes/themes/j1/procedures/global/select_location.proc +1 -1
  39. data/_includes/themes/j1/procedures/global/set_base_vars_folders.proc +1 -1
  40. data/_includes/themes/j1/procedures/global/set_env_entry_document.proc +1 -1
  41. data/_includes/themes/j1/procedures/global/set_image_block.proc +1 -1
  42. data/_includes/themes/j1/procedures/global/setup.proc +1 -1
  43. data/_includes/themes/j1/procedures/layouts/content_writer.proc +1 -1
  44. data/_includes/themes/j1/procedures/layouts/default_writer.proc +1 -1
  45. data/_includes/themes/j1/procedures/layouts/module_writer.proc +1 -1
  46. data/_includes/themes/j1/procedures/layouts/resource_writer.proc +1 -1
  47. data/_includes/themes/j1/procedures/posts/collate_calendar.proc +1 -1
  48. data/_includes/themes/j1/procedures/posts/collate_list.proc +1 -1
  49. data/_includes/themes/j1/procedures/posts/collate_timeline.proc +1 -1
  50. data/_includes/themes/j1/procedures/posts/create_ad_block.proc +1 -1
  51. data/_includes/themes/j1/procedures/posts/create_series_header.proc +1 -1
  52. data/_includes/themes/j1/procedures/posts/pager.proc +1 -1
  53. data/_layouts/autopage_category.html +1 -1
  54. data/_layouts/autopage_collection.html +1 -1
  55. data/_layouts/autopage_collections_tags.html +1 -1
  56. data/_layouts/autopage_tags.html +1 -1
  57. data/_layouts/collection.html +1 -1
  58. data/_layouts/compress.html +1 -1
  59. data/_layouts/default.html +1 -1
  60. data/_layouts/home.html +1 -1
  61. data/_layouts/news_panel_posts.html +1 -1
  62. data/_layouts/page.html +1 -1
  63. data/_layouts/post.html +1 -1
  64. data/_layouts/raw.html +1 -1
  65. data/apps/public/cc/cc.yml +1 -1
  66. data/assets/data/amplitude.html +137 -66
  67. data/assets/data/authclient.html +1 -1
  68. data/assets/data/banner.html +2 -2
  69. data/assets/data/carousel.json +1 -1
  70. data/assets/data/cookieconsent.html +2 -2
  71. data/assets/data/docsearch.html +2 -2
  72. data/assets/data/fab.html +2 -2
  73. data/assets/data/footer.html +2 -2
  74. data/assets/data/galeries.html +2 -2
  75. data/assets/data/gallery_customizer.html +2 -2
  76. data/assets/data/gemini-ui.html +2 -2
  77. data/assets/data/iframes.html +2 -2
  78. data/assets/data/iso-3166-country-codes.json +1 -1
  79. data/assets/data/iso-639-language-codes.json +1 -1
  80. data/assets/data/j1_config.json +1 -1
  81. data/assets/data/masonry.html +2 -2
  82. data/assets/data/masterslider.html +2 -2
  83. data/assets/data/mdi_icons.json +1 -1
  84. data/assets/data/mdil_icons.json +1 -1
  85. data/assets/data/menu.html +2 -2
  86. data/assets/data/mmenu.html +2 -2
  87. data/assets/data/mmenu_sidebar.html +2 -2
  88. data/assets/data/mmenu_toc.html +2 -2
  89. data/assets/data/panel.html +2 -2
  90. data/assets/data/particles.yml +1 -1
  91. data/assets/data/private.json +1 -1
  92. data/assets/data/quicklinks.html +2 -2
  93. data/assets/data/rtext_resizer.html +2 -2
  94. data/assets/data/slick.html +2 -2
  95. data/assets/data/speak2me.html +2 -2
  96. data/assets/data/swiper.html +244 -0
  97. data/assets/data/swiper.json +84 -0
  98. data/assets/data/themes.bootswatch.json +1 -1
  99. data/assets/data/themes.json +1 -1
  100. data/assets/data/translator.html +1 -1
  101. data/assets/error_pages/HTTP204.html +1 -1
  102. data/assets/error_pages/HTTP400.html +1 -1
  103. data/assets/error_pages/HTTP401.html +1 -1
  104. data/assets/error_pages/HTTP403.html +1 -1
  105. data/assets/error_pages/HTTP404.html +1 -1
  106. data/assets/error_pages/HTTP444.html +1 -1
  107. data/assets/error_pages/HTTP445.html +1 -1
  108. data/assets/error_pages/HTTP446.html +1 -1
  109. data/assets/error_pages/HTTP447.html +1 -1
  110. data/assets/error_pages/HTTP448.html +1 -1
  111. data/assets/error_pages/HTTP500.html +1 -1
  112. data/assets/error_pages/HTTP501.html +1 -1
  113. data/assets/error_pages/HTTP502.html +1 -1
  114. data/assets/error_pages/HTTP503.html +1 -1
  115. data/assets/theme/j1/adapter/js/advertising.js +2 -2
  116. data/assets/theme/j1/adapter/js/algolia.js +2 -2
  117. data/assets/theme/j1/adapter/js/amplitude.30.js +1177 -0
  118. data/assets/theme/j1/adapter/js/amplitude.js +165 -132
  119. data/assets/theme/j1/adapter/js/analytics.js +2 -2
  120. data/assets/theme/j1/adapter/js/asciidoctor.js +2 -2
  121. data/assets/theme/j1/adapter/js/attic.js +2 -2
  122. data/assets/theme/j1/adapter/js/bmd.js +2 -2
  123. data/assets/theme/j1/adapter/js/carousel.js +2 -2
  124. data/assets/theme/j1/adapter/js/chatbot.js +2 -2
  125. data/assets/theme/j1/adapter/js/clipboard.js +2 -2
  126. data/assets/theme/j1/adapter/js/comments.js +2 -2
  127. data/assets/theme/j1/adapter/js/cookieConsent.js +2 -2
  128. data/assets/theme/j1/adapter/js/customFunctions.js +2 -2
  129. data/assets/theme/j1/adapter/js/customModule.js +2 -2
  130. data/assets/theme/j1/adapter/js/docsearch.js +2 -2
  131. data/assets/theme/j1/adapter/js/dropdowns.js +2 -2
  132. data/assets/theme/j1/adapter/js/fab.js +2 -2
  133. data/assets/theme/j1/adapter/js/gallery.js +2 -2
  134. data/assets/theme/j1/adapter/js/gemini.js +2 -2
  135. data/assets/theme/j1/adapter/js/iconPicker.js +2 -2
  136. data/assets/theme/j1/adapter/js/iconPickerPage.js +2 -2
  137. data/assets/theme/j1/adapter/js/iframer.js +2 -2
  138. data/assets/theme/j1/adapter/js/j1.js +5 -5
  139. data/assets/theme/j1/adapter/js/lazyLoader.js +2 -2
  140. data/assets/theme/j1/adapter/js/lightbox.js +2 -2
  141. data/assets/theme/j1/adapter/js/logger.js +2 -2
  142. data/assets/theme/j1/adapter/js/lunr.js +2 -2
  143. data/assets/theme/j1/adapter/js/masonry.js +2 -2
  144. data/assets/theme/j1/adapter/js/masterslider.js +4 -3
  145. data/assets/theme/j1/adapter/js/mmenu.js +2 -2
  146. data/assets/theme/j1/adapter/js/navigator.js +2 -2
  147. data/assets/theme/j1/adapter/js/particles.js +2 -2
  148. data/assets/theme/j1/adapter/js/rangeSlider.js +2 -2
  149. data/assets/theme/j1/adapter/js/rouge.js +2 -2
  150. data/assets/theme/j1/adapter/js/rtable.js +2 -2
  151. data/assets/theme/j1/adapter/js/rtextResizer.js +2 -2
  152. data/assets/theme/j1/adapter/js/scroller.js +2 -2
  153. data/assets/theme/j1/adapter/js/slick.js +2 -2
  154. data/assets/theme/j1/adapter/js/slimSelect.js +2 -2
  155. data/assets/theme/j1/adapter/js/speak2me.js +2 -2
  156. data/assets/theme/j1/adapter/js/swiper.js +503 -0
  157. data/assets/theme/j1/adapter/js/themeToggler.js +2 -2
  158. data/assets/theme/j1/adapter/js/themes.js +2 -2
  159. data/assets/theme/j1/adapter/js/toccer.js +2 -2
  160. data/assets/theme/j1/adapter/js/translator.js +2 -2
  161. data/assets/theme/j1/adapter/js/videojs.js +2 -2
  162. data/assets/theme/j1/adapter/js/waves.js +2 -2
  163. data/assets/theme/j1/core/country-flags/css/theme/uno.css +1 -1
  164. data/assets/theme/j1/core/country-flags/css/theme/uno.min.css +1 -1
  165. data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/amplitude.css +14 -4
  166. data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/amplitude.min.css +2 -2
  167. data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/player/compact.css +1 -1
  168. data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/player/compact.min.css +1 -1
  169. data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/player/large.css +54 -7
  170. data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/player/large.min.css +3 -2
  171. data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/player/mini.css +1 -1
  172. data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/player/mini.min.css +1 -1
  173. data/assets/theme/j1/modules/amplitudejs/js/amplitude.js +1 -1
  174. data/assets/theme/j1/modules/amplitudejs/js/amplitude.map +1 -1
  175. data/assets/theme/j1/modules/amplitudejs/js/amplitude.min.js +1 -1
  176. data/assets/theme/j1/modules/amplitudejs/js/tech/ytp.js +1621 -90
  177. data/assets/theme/j1/modules/amplitudejs/js/tech/ytp.min.js +14 -0
  178. data/assets/theme/j1/modules/amplitudejs/js/visualizations/bar.js +2 -2
  179. data/assets/theme/j1/modules/amplitudejs/js/visualizations/bar.min.js +1 -1
  180. data/assets/theme/j1/modules/amplitudejs/js/visualizations/circular-equalizer.js +32 -2
  181. data/assets/theme/j1/modules/amplitudejs/js/visualizations/circular-equalizer.min.js +1 -1
  182. data/assets/theme/j1/modules/amplitudejs/js/visualizations/frequency-analyzer.js +2 -2
  183. data/assets/theme/j1/modules/amplitudejs/js/visualizations/frequency-analyzer.min.js +1 -1
  184. data/assets/theme/j1/modules/amplitudejs/js/visualizations/michael-bromley.js +2 -2
  185. data/assets/theme/j1/modules/amplitudejs/js/visualizations/michael-bromley.min.js +1 -1
  186. data/assets/theme/j1/modules/amplitudejs/js/visualizations/template.js +2 -2
  187. data/assets/theme/j1/modules/amplitudejs/js/visualizations/template.min.js +1 -1
  188. data/assets/theme/j1/modules/amplitudejs/scss/theme/uno/dark/amplitude.scss +1 -1
  189. data/assets/theme/j1/modules/amplitudejs/scss/theme/uno/dark/player/compact.scss +1 -1
  190. data/assets/theme/j1/modules/amplitudejs/scss/theme/uno/dark/player/large.scss +1 -1
  191. data/assets/theme/j1/modules/amplitudejs/scss/theme/uno/dark/player/mini.scss +1 -1
  192. data/assets/theme/j1/modules/backstretch/js/backstretch.js +1 -1
  193. data/assets/theme/j1/modules/backstretch/js/backstretch.min.js +1 -1
  194. data/assets/theme/j1/modules/bmd/js/bmd.js +1 -1
  195. data/assets/theme/j1/modules/bmd/js/bmd.min.js +1 -1
  196. data/assets/theme/j1/modules/carousel/css/carousel.css +1 -1
  197. data/assets/theme/j1/modules/carousel/css/carousel.min.css +1 -1
  198. data/assets/theme/j1/modules/carousel/css/carousel_transitions.css +1 -1
  199. data/assets/theme/j1/modules/carousel/css/carousel_transitions.min.css +1 -1
  200. data/assets/theme/j1/modules/carousel/css/theme/uno.css +1 -1
  201. data/assets/theme/j1/modules/carousel/css/theme/uno.min.css +1 -1
  202. data/assets/theme/j1/modules/chatbot/css/theme/uno.css +1 -1
  203. data/assets/theme/j1/modules/chatbot/css/theme/uno.min.css +1 -1
  204. data/assets/theme/j1/modules/clipboard/css/theme/uno.css +1 -1
  205. data/assets/theme/j1/modules/clipboard/css/theme/uno.min.css +1 -1
  206. data/assets/theme/j1/modules/cookieConsent/js/cookieConsent.js +1 -1
  207. data/assets/theme/j1/modules/cookieConsent/js/cookieConsent.min.js +1 -1
  208. data/assets/theme/j1/modules/dropdowns/css/theme/uno/dropdowns.css +1 -1
  209. data/assets/theme/j1/modules/dropdowns/css/theme/uno/dropdowns.min.css +1 -1
  210. data/assets/theme/j1/modules/dropdowns/js/cash.js +1 -1
  211. data/assets/theme/j1/modules/dropdowns/js/cash.min.js +1 -1
  212. data/assets/theme/j1/modules/dropdowns/js/dropdowns.js +1 -1
  213. data/assets/theme/j1/modules/dropdowns/js/dropdowns.min.js +1 -1
  214. data/assets/theme/j1/modules/fab/js/cash.js +1 -1
  215. data/assets/theme/j1/modules/fab/js/cash.min.js +1 -1
  216. data/assets/theme/j1/modules/fab/js/fab.js +1 -1
  217. data/assets/theme/j1/modules/fab/js/fab.min.js +1 -1
  218. data/assets/theme/j1/modules/gemini/css/theme/uno.css +1 -1
  219. data/assets/theme/j1/modules/gemini/css/theme/uno.min.css +1 -1
  220. data/assets/theme/j1/modules/gemini/js/gemini.js +1 -1
  221. data/assets/theme/j1/modules/gemini/js/gemini.min.js +1 -1
  222. data/assets/theme/j1/modules/iconPicker/css/theme/uno.css +1 -1
  223. data/assets/theme/j1/modules/iconPicker/css/theme/uno.min.css +1 -1
  224. data/assets/theme/j1/modules/iconPicker/css/universal-icon-picker.css +1 -1
  225. data/assets/theme/j1/modules/iconPicker/css/universal-icon-picker.min.css +1 -1
  226. data/assets/theme/j1/modules/iconPicker/js/universal-icon-picker.js +1 -1
  227. data/assets/theme/j1/modules/iconPicker/js/universal-icon-picker.min.js +1 -1
  228. data/assets/theme/j1/modules/j1LazyLoader/LICENSE +1 -1
  229. data/assets/theme/j1/modules/jquery/js/extensions/hasClass.js +1 -1
  230. data/assets/theme/j1/modules/jquery/js/extensions/hasClass.min.js +1 -1
  231. data/assets/theme/j1/modules/jquery/js/extensions/removeClass.js +1 -1
  232. data/assets/theme/j1/modules/jquery/js/extensions/removeClass.min.js +1 -1
  233. data/assets/theme/j1/modules/justifiedGallery/css/justifiedGallery.css +1 -1
  234. data/assets/theme/j1/modules/justifiedGallery/css/justifiedGallery.min.css +1 -1
  235. data/assets/theme/j1/modules/justifiedGallery/css/theme/uno.css +1 -1
  236. data/assets/theme/j1/modules/justifiedGallery/css/theme/uno.min.css +1 -1
  237. data/assets/theme/j1/modules/lazyCssLoader/js/main.0.js +1 -1
  238. data/assets/theme/j1/modules/lazyCssLoader/js/main.1.js +1 -1
  239. data/assets/theme/j1/modules/lazyCssLoader/js/main.js +1 -1
  240. data/assets/theme/j1/modules/lightGallery/css/lg-transitions.css +1 -1
  241. data/assets/theme/j1/modules/lightGallery/css/lg-transitions.min.css +1 -1
  242. data/assets/theme/j1/modules/lightGallery/css/lightgallery-bundle.css +1 -1
  243. data/assets/theme/j1/modules/lightGallery/css/lightgallery-bundle.min.css +1 -1
  244. data/assets/theme/j1/modules/lightGallery/css/themes/uno/uno.css +1 -1
  245. data/assets/theme/j1/modules/lightGallery/css/themes/uno/uno.min.css +1 -1
  246. data/assets/theme/j1/modules/lightGallery/js/lightgallery.js +1 -1
  247. data/assets/theme/j1/modules/lightGallery/js/lightgallery.min.js +1 -1
  248. data/assets/theme/j1/modules/lightGallery/js/plugins/j1/j1-video.js +1 -1
  249. data/assets/theme/j1/modules/lightGallery/js/plugins/j1/j1-video.min.js +1 -1
  250. data/assets/theme/j1/modules/lightGallery/js/plugins/j1/lg-video.1.js +1 -1
  251. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-autoplay.js +1 -1
  252. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-autoplay.min.js +1 -1
  253. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-comment.js +1 -1
  254. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-comment.min.js +1 -1
  255. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-fullscreen.js +1 -1
  256. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-fullscreen.min.js +1 -1
  257. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-hash.js +1 -1
  258. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-hash.min.js +1 -1
  259. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-medium-zoom.js +1 -1
  260. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-medium-zoom.min.js +1 -1
  261. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-pager.js +1 -1
  262. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-pager.min.js +1 -1
  263. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-rotate.js +1 -1
  264. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-rotate.min.js +1 -1
  265. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-share.js +1 -1
  266. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-share.min.js +1 -1
  267. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-thumbnail.js +1 -1
  268. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-thumbnail.min.js +1 -1
  269. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-video.js +1 -1
  270. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-video.min.js +1 -1
  271. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-vimeo-thumbnail.js +1 -1
  272. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-vimeo-thumbnail.min.js +1 -1
  273. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-zoom.js +1 -1
  274. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-zoom.min.js +1 -1
  275. data/assets/theme/j1/modules/lightbox/css/lightbox.css +1 -1
  276. data/assets/theme/j1/modules/lightbox/css/lightbox.min.css +1 -1
  277. data/assets/theme/j1/modules/lightbox/css/theme/uno.css +1 -1
  278. data/assets/theme/j1/modules/lightbox/css/theme/uno.min.css +1 -1
  279. data/assets/theme/j1/modules/lightbox/js/lightbox.js +1 -1
  280. data/assets/theme/j1/modules/lightbox/js/lightbox.min.js +1 -1
  281. data/assets/theme/j1/modules/lunr/css/theme/uno.css +1 -1
  282. data/assets/theme/j1/modules/lunr/css/theme/uno.min.css +1 -1
  283. data/assets/theme/j1/modules/lunr/js/j1.js +1 -1
  284. data/assets/theme/j1/modules/lunr/js/j1.min.js +1 -1
  285. data/assets/theme/j1/modules/masterslider/css/theme/uno.css +1 -1
  286. data/assets/theme/j1/modules/masterslider/css/theme/uno.min.css +1 -1
  287. data/assets/theme/j1/modules/mmenuLight/css/mmenu-light.css +1 -1
  288. data/assets/theme/j1/modules/mmenuLight/css/mmenu-light.min.css +1 -1
  289. data/assets/theme/j1/modules/mmenuLight/css/theme/uno/mmenu.css +1 -1
  290. data/assets/theme/j1/modules/mmenuLight/css/theme/uno/mmenu.min.css +1 -1
  291. data/assets/theme/j1/modules/mmenuLight/js/mmenu.js +1 -1
  292. data/assets/theme/j1/modules/mmenuLight/js/mmenu.min.js +1 -1
  293. data/assets/theme/j1/modules/msDropdown/css/flags.css +1 -1
  294. data/assets/theme/j1/modules/msDropdown/css/flags.min.css +1 -1
  295. data/assets/theme/j1/modules/msDropdown/css/msDropdown.css +1 -1
  296. data/assets/theme/j1/modules/msDropdown/css/msDropdown.min.css +1 -1
  297. data/assets/theme/j1/modules/msDropdown/css/themes/uno/msDropdown.css +1 -1
  298. data/assets/theme/j1/modules/msDropdown/css/themes/uno/msDropdown.min.css +1 -1
  299. data/assets/theme/j1/modules/msDropdown/js/msDropdown.js +1 -1
  300. data/assets/theme/j1/modules/msDropdown/js/msDropdown.min.js +1 -1
  301. data/assets/theme/j1/modules/photoswipe/LICENSE +21 -0
  302. data/assets/theme/j1/modules/photoswipe/README.md +32 -0
  303. data/assets/theme/j1/modules/photoswipe/_info/.version_5.4.4 +6 -0
  304. data/assets/theme/j1/modules/photoswipe/_info/example/photoswipe-caption-plugin.html +237 -0
  305. data/assets/theme/j1/modules/photoswipe/_info/example/test-gallery.html +36 -0
  306. data/assets/theme/j1/modules/photoswipe/css/photoswipe-caption-plugin.css +69 -0
  307. data/assets/theme/j1/modules/photoswipe/css/photoswipe-caption-plugin.min.css +16 -0
  308. data/assets/theme/j1/modules/photoswipe/css/photoswipe.css +376 -0
  309. data/assets/theme/j1/modules/photoswipe/css/photoswipe.min.css +17 -0
  310. data/assets/theme/j1/modules/photoswipe/js/_info/README.md +43 -0
  311. data/assets/theme/j1/modules/photoswipe/js/photoswipe-caption-plugin.js +428 -0
  312. data/assets/theme/j1/modules/photoswipe/js/photoswipe-caption-plugin.min.js +18 -0
  313. data/assets/theme/j1/modules/photoswipe/js/photoswipe-core.js +7102 -0
  314. data/assets/theme/j1/modules/photoswipe/js/photoswipe-core.min.js +18 -0
  315. data/assets/theme/j1/modules/photoswipe/js/photoswipe-lightbox.1.js +1990 -0
  316. data/assets/theme/j1/modules/photoswipe/js/photoswipe-lightbox.js +1981 -0
  317. data/assets/theme/j1/modules/photoswipe/js/photoswipe-lightbox.min.js +18 -0
  318. data/assets/theme/j1/modules/rangeSlider/css/theme/uno/nouislider.css +1 -1
  319. data/assets/theme/j1/modules/rangeSlider/css/theme/uno/nouislider.min.css +1 -1
  320. data/assets/theme/j1/modules/rouge/css/base16/theme.css +1 -1
  321. data/assets/theme/j1/modules/rouge/css/base16/theme.min.css +1 -1
  322. data/assets/theme/j1/modules/rouge/css/base16.dark/theme.css +1 -1
  323. data/assets/theme/j1/modules/rouge/css/base16.dark/theme.min.css +1 -1
  324. data/assets/theme/j1/modules/rouge/css/base16.light/theme.css +1 -1
  325. data/assets/theme/j1/modules/rouge/css/base16.light/theme.min.css +1 -1
  326. data/assets/theme/j1/modules/rouge/css/base16.monokai/theme.css +1 -1
  327. data/assets/theme/j1/modules/rouge/css/base16.monokai/theme.min.css +1 -1
  328. data/assets/theme/j1/modules/rouge/css/base16.monokai.dark/theme.css +1 -1
  329. data/assets/theme/j1/modules/rouge/css/base16.monokai.dark/theme.min.css +1 -1
  330. data/assets/theme/j1/modules/rouge/css/base16.monokai.light/theme.css +1 -1
  331. data/assets/theme/j1/modules/rouge/css/base16.monokai.light/theme.min.css +1 -1
  332. data/assets/theme/j1/modules/rouge/css/base16.solarized/theme.css +1 -1
  333. data/assets/theme/j1/modules/rouge/css/base16.solarized/theme.min.css +1 -1
  334. data/assets/theme/j1/modules/rouge/css/base16.solarized.dark/theme.css +1 -1
  335. data/assets/theme/j1/modules/rouge/css/base16.solarized.dark/theme.min.css +1 -1
  336. data/assets/theme/j1/modules/rouge/css/base16.solarized.light/theme.css +1 -1
  337. data/assets/theme/j1/modules/rouge/css/base16.solarized.light/theme.min.css +1 -1
  338. data/assets/theme/j1/modules/rouge/css/colorful/theme.css +1 -1
  339. data/assets/theme/j1/modules/rouge/css/colorful/theme.min.css +1 -1
  340. data/assets/theme/j1/modules/rouge/css/github/theme.css +1 -1
  341. data/assets/theme/j1/modules/rouge/css/github/theme.min.css +1 -1
  342. data/assets/theme/j1/modules/rouge/css/gruvbox/theme.css +1 -1
  343. data/assets/theme/j1/modules/rouge/css/gruvbox/theme.min.css +1 -1
  344. data/assets/theme/j1/modules/rouge/css/gruvbox.dark/theme.css +1 -1
  345. data/assets/theme/j1/modules/rouge/css/gruvbox.dark/theme.min.css +1 -1
  346. data/assets/theme/j1/modules/rouge/css/gruvbox.light/theme.css +1 -1
  347. data/assets/theme/j1/modules/rouge/css/gruvbox.light/theme.min.css +1 -1
  348. data/assets/theme/j1/modules/rouge/css/igorpro/theme.css +1 -1
  349. data/assets/theme/j1/modules/rouge/css/igorpro/theme.min.css +1 -1
  350. data/assets/theme/j1/modules/rouge/css/molokai/theme.css +1 -1
  351. data/assets/theme/j1/modules/rouge/css/molokai/theme.min.css +1 -1
  352. data/assets/theme/j1/modules/rouge/css/monokai/theme.css +1 -1
  353. data/assets/theme/j1/modules/rouge/css/monokai/theme.min.css +1 -1
  354. data/assets/theme/j1/modules/rouge/css/monokai.sublime/theme.css +1 -1
  355. data/assets/theme/j1/modules/rouge/css/monokai.sublime/theme.min.css +1 -1
  356. data/assets/theme/j1/modules/rouge/css/pastie/theme.css +1 -1
  357. data/assets/theme/j1/modules/rouge/css/pastie/theme.min.css +1 -1
  358. data/assets/theme/j1/modules/rouge/css/thankful_eyes/theme.css +1 -1
  359. data/assets/theme/j1/modules/rouge/css/thankful_eyes/theme.min.css +1 -1
  360. data/assets/theme/j1/modules/rouge/css/themes.txt +1 -1
  361. data/assets/theme/j1/modules/rouge/css/tulip/theme.css +1 -1
  362. data/assets/theme/j1/modules/rouge/css/tulip/theme.min.css +1 -1
  363. data/assets/theme/j1/modules/rouge/css/uno.dark/theme.css +1 -1
  364. data/assets/theme/j1/modules/rouge/css/uno.dark/theme.min.css +1 -1
  365. data/assets/theme/j1/modules/rouge/css/uno.light/theme.css +1 -1
  366. data/assets/theme/j1/modules/rouge/css/uno.light/theme.min.css +1 -1
  367. data/assets/theme/j1/modules/rouge/js/select.js +1 -1
  368. data/assets/theme/j1/modules/rtable/css/theme/uno/rtable.css +1 -1
  369. data/assets/theme/j1/modules/rtable/css/theme/uno/rtable.min.css +1 -1
  370. data/assets/theme/j1/modules/rtable/js/rtable.js +1 -1
  371. data/assets/theme/j1/modules/rtable/js/rtable.min.js +1 -1
  372. data/assets/theme/j1/modules/scroller/css/theme/uno.css +1 -1
  373. data/assets/theme/j1/modules/scroller/css/theme/uno.min.css +1 -1
  374. data/assets/theme/j1/modules/scroller/js/scroller.min.js +1 -1
  375. data/assets/theme/j1/modules/slick/lightbox/css/theme/uno.css +1 -1
  376. data/assets/theme/j1/modules/slick/lightbox/css/theme/uno.min.css +1 -1
  377. data/assets/theme/j1/modules/slick/slider/css/theme/uno.css +1 -1
  378. data/assets/theme/j1/modules/slick/slider/css/theme/uno.min.css +1 -1
  379. data/assets/theme/j1/modules/spinner/css/spin.css +1 -1
  380. data/assets/theme/j1/modules/spinner/css/spin.min.css +1 -1
  381. data/assets/theme/j1/modules/spinner/js/spin.js +1 -1
  382. data/assets/theme/j1/modules/spinner/js/spin.min.js +1 -1
  383. data/assets/theme/j1/modules/swiper/LICENSE +20 -0
  384. data/assets/theme/j1/modules/swiper/README.md +95 -0
  385. data/assets/theme/j1/modules/swiper/_info/.version_1.2.0 +15 -0
  386. data/assets/theme/j1/modules/swiper/_info/swiperjs.com-demos.url +2 -0
  387. data/assets/theme/j1/modules/swiper/css/modules/effectNeighbor.css +53 -0
  388. data/assets/theme/j1/modules/swiper/css/modules/effectNeighbor.min.css +17 -0
  389. data/assets/theme/j1/modules/swiper/css/modules/effectPanorama.css +26 -0
  390. data/assets/theme/j1/modules/swiper/css/modules/effectPanorama.min.css +17 -0
  391. data/assets/theme/j1/modules/swiper/css/modules/effectThumbs.css +44 -0
  392. data/assets/theme/j1/modules/swiper/css/modules/effectThumbs.min.css +44 -0
  393. data/assets/theme/j1/modules/swiper/css/swiper-bundle.css +746 -0
  394. data/assets/theme/j1/modules/swiper/css/swiper-bundle.min..css +23 -0
  395. data/assets/theme/j1/modules/swiper/css/theme/uno.css +229 -0
  396. data/assets/theme/j1/modules/swiper/css/theme/uno.min.css +144 -0
  397. data/assets/theme/j1/modules/swiper/js/modules/!readme +3 -0
  398. data/assets/theme/j1/modules/swiper/js/modules/effectNeighbor.js +33 -0
  399. data/assets/theme/j1/modules/swiper/js/modules/effectNeighbor.min.js +33 -0
  400. data/assets/theme/j1/modules/swiper/js/modules/effectPanorama.js +93 -0
  401. data/assets/theme/j1/modules/swiper/js/modules/effectPanorama.min.js +17 -0
  402. data/assets/theme/j1/modules/swiper/js/modules/effectThumbs.js +113 -0
  403. data/assets/theme/j1/modules/swiper/js/modules/effectThumbs.min.js +33 -0
  404. data/assets/theme/j1/modules/swiper/js/swiper-bundle.js +9791 -0
  405. data/assets/theme/j1/modules/swiper/js/swiper-bundle.min.js +23 -0
  406. data/assets/theme/j1/modules/themeSwitcher/js/switcher.js +1 -1
  407. data/assets/theme/j1/modules/themeSwitcher/js/switcher.min.js +1 -1
  408. data/assets/theme/j1/modules/translator/css/translator.css +1 -1
  409. data/assets/theme/j1/modules/translator/css/translator.min.css +1 -1
  410. data/assets/theme/j1/modules/translator/js/translator.js +1 -1
  411. data/assets/theme/j1/modules/translator/js/translator.min.js +1 -1
  412. data/assets/theme/j1/modules/videoPlayer/vimeo/js/player.min.js +1 -1
  413. data/assets/theme/j1/modules/videojs/css/plugins/controls/skipbuttons.0.css +1 -1
  414. data/assets/theme/j1/modules/videojs/css/plugins/controls/skipbuttons.1.css +1 -1
  415. data/assets/theme/j1/modules/videojs/css/plugins/controls/skipbuttons.css +1 -1
  416. data/assets/theme/j1/modules/videojs/css/plugins/controls/skipbuttons.min.css +1 -1
  417. data/assets/theme/j1/modules/videojs/css/plugins/controls/zoom.css +1 -1
  418. data/assets/theme/j1/modules/videojs/css/plugins/controls/zoom.min.css +1 -1
  419. data/assets/theme/j1/modules/videojs/css/themes/uno.css +1 -1
  420. data/assets/theme/j1/modules/videojs/css/themes/uno.min.css +1 -1
  421. data/assets/theme/j1/modules/videojs/js/plugins/controls/autocaption/autocaption.js +1 -1
  422. data/assets/theme/j1/modules/videojs/js/plugins/controls/autocaption/autocaption.min.js +1 -1
  423. data/assets/theme/j1/modules/videojs/js/plugins/controls/hotkeys/hotkeys.js +1 -1
  424. data/assets/theme/j1/modules/videojs/js/plugins/controls/hotkeys/hotkeys.min.js +1 -1
  425. data/assets/theme/j1/modules/videojs/js/plugins/controls/skipbuttons/skipbuttons.js +1 -1
  426. data/assets/theme/j1/modules/videojs/js/plugins/controls/skipbuttons/skipbuttons.min.js +1 -1
  427. data/assets/theme/j1/modules/videojs/js/plugins/controls/zoom/zoom.js +1 -1
  428. data/assets/theme/j1/modules/videojs/js/plugins/controls/zoom/zoom.min.js +1 -1
  429. data/assets/theme/j1/modules/videojs/js/plugins/players/dm/api/dailymotion.sdk.js +1 -1
  430. data/assets/theme/j1/modules/videojs/js/plugins/players/dm/api/dailymotion.sdk.min.js +1 -1
  431. data/assets/theme/j1/modules/videojs/js/plugins/players/dm/dailymotion.js +1 -1
  432. data/assets/theme/j1/modules/videojs/js/plugins/players/dm/dailymotion.min.js +1 -1
  433. data/assets/theme/j1/modules/videojs/js/plugins/players/vm/api/vimeo.js +1 -1
  434. data/assets/theme/j1/modules/videojs/js/plugins/players/vm/api/vimeo.min.js +1 -1
  435. data/assets/theme/j1/modules/videojs/js/plugins/players/vm/vimeo.js +1 -1
  436. data/assets/theme/j1/modules/videojs/js/plugins/players/vm/vimeo.min.js +1 -1
  437. data/assets/theme/j1/modules/videojs/js/plugins/players/wt/wistia.js +1 -1
  438. data/assets/theme/j1/modules/videojs/js/plugins/players/wt/wistia.min.js +1 -1
  439. data/assets/theme/j1/modules/videojs/js/plugins/players/yt/api/youtube.min.js +1 -1
  440. data/assets/theme/j1/modules/videojs/js/plugins/players/yt/v3.0.0/youtube.js +1 -1
  441. data/assets/theme/j1/modules/videojs/js/plugins/players/yt/v3.0.0/youtube.min.js +1 -1
  442. data/assets/theme/j1/modules/videojs/js/plugins/players/yt/youtube.js +1 -1
  443. data/assets/theme/j1/modules/videojs/js/plugins/players/yt/youtube.min.js +1 -1
  444. data/lib/j1/version.rb +1 -1
  445. data/lib/starter_web/Gemfile +1 -1
  446. data/lib/starter_web/README.md +5 -5
  447. data/lib/starter_web/_config.yml +2 -2
  448. data/lib/starter_web/_data/j1_config.yml +1 -1
  449. data/lib/starter_web/_data/modules/amplitude_players.yml +352 -0
  450. data/lib/starter_web/_data/modules/{amplitude.yml → amplitude_playlists.yml} +257 -239
  451. data/lib/starter_web/_data/modules/authentication.yml +1 -1
  452. data/lib/starter_web/_data/modules/defaults/amplitude.yml +60 -35
  453. data/lib/starter_web/_data/modules/defaults/slick.yml +1 -1
  454. data/lib/starter_web/_data/modules/defaults/swiper.yml +175 -0
  455. data/lib/starter_web/_data/modules/log4javascript.yml +1 -1
  456. data/lib/starter_web/_data/modules/navigator.yml +1 -1
  457. data/lib/starter_web/_data/modules/navigator_menu.yml +1 -1
  458. data/lib/starter_web/_data/modules/swiper.yml +655 -0
  459. data/lib/starter_web/_data/modules/swiper_playlists.yml +480 -0
  460. data/lib/starter_web/_data/private.yml +1 -1
  461. data/lib/starter_web/_data/resources.yml +272 -158
  462. data/lib/starter_web/_data/templates/feed.xml +1 -1
  463. data/lib/starter_web/_includes/custom/static/bs5_accordion.html +1 -1
  464. data/lib/starter_web/_includes/custom/templates/bs5_accordion.html +1 -1
  465. data/lib/starter_web/_includes/custom/templates/collection_panel.html +1 -1
  466. data/lib/starter_web/_includes/custom/templates/custom_header.html +1 -1
  467. data/lib/starter_web/_includes/custom/templates/people_panel.html +1 -1
  468. data/lib/starter_web/_includes/google/static/google_ad__your-slot-id.html +1 -1
  469. data/lib/starter_web/_includes/google/templates/google_ads.html +1 -1
  470. data/lib/starter_web/_plugins/asciidoctor/admonition-block-answer.rb +1 -1
  471. data/lib/starter_web/_plugins/asciidoctor/admonition-block-question.rb +1 -1
  472. data/lib/starter_web/_plugins/asciidoctor/amplitude-block.rb +2 -1
  473. data/lib/starter_web/_plugins/asciidoctor/banner.rb +1 -1
  474. data/lib/starter_web/_plugins/asciidoctor/callout.rb +1 -1
  475. data/lib/starter_web/_plugins/asciidoctor/carousel-block.rb +1 -1
  476. data/lib/starter_web/_plugins/asciidoctor/conum.rb +1 -1
  477. data/lib/starter_web/_plugins/asciidoctor/dailymotion-block.rb +1 -1
  478. data/lib/starter_web/_plugins/asciidoctor/fab-icon-inline.rb +1 -1
  479. data/lib/starter_web/_plugins/asciidoctor/fas-icon-inline.rb +1 -1
  480. data/lib/starter_web/_plugins/asciidoctor/flag-icon-inline.rb +1 -1
  481. data/lib/starter_web/_plugins/asciidoctor/gallery-block.rb +1 -1
  482. data/lib/starter_web/_plugins/asciidoctor/gemini-ui-block.rb +1 -1
  483. data/lib/starter_web/_plugins/asciidoctor/gist-block.rb +1 -1
  484. data/lib/starter_web/_plugins/asciidoctor/google-ad-block.rb +1 -1
  485. data/lib/starter_web/_plugins/asciidoctor/iconify-icon-inline.rb +1 -1
  486. data/lib/starter_web/_plugins/asciidoctor/iframe-block.rb +1 -1
  487. data/lib/starter_web/_plugins/asciidoctor/lightbox-block.rb +1 -1
  488. data/lib/starter_web/_plugins/asciidoctor/lorem_inline.rb +1 -1
  489. data/lib/starter_web/_plugins/asciidoctor/masonry-block.rb +1 -1
  490. data/lib/starter_web/_plugins/asciidoctor/masterslider-block.rb +1 -1
  491. data/lib/starter_web/_plugins/asciidoctor/mdi-icon-inline.rb +1 -1
  492. data/lib/starter_web/_plugins/asciidoctor/mdib-icon-inline.rb +1 -1
  493. data/lib/starter_web/_plugins/asciidoctor/mdil-icon-inline.rb +1 -1
  494. data/lib/starter_web/_plugins/asciidoctor/panel.rb +1 -1
  495. data/lib/starter_web/_plugins/asciidoctor/placeholder-inline.rb +1 -1
  496. data/lib/starter_web/_plugins/asciidoctor/range-slider-block.rb +1 -1
  497. data/lib/starter_web/_plugins/asciidoctor/shout-block.rb +1 -1
  498. data/lib/starter_web/_plugins/asciidoctor/slick-block.rb +1 -1
  499. data/lib/starter_web/_plugins/asciidoctor/slim-select-block.rb +1 -1
  500. data/lib/starter_web/_plugins/asciidoctor/swiper-block.rb +55 -0
  501. data/lib/starter_web/_plugins/asciidoctor/textbook-block.rb +1 -1
  502. data/lib/starter_web/_plugins/asciidoctor/twitter-emoji-inline.rb +1 -1
  503. data/lib/starter_web/_plugins/asciidoctor/videojs-block.rb +1 -5
  504. data/lib/starter_web/_plugins/asciidoctor/vimeo-block.rb +1 -1
  505. data/lib/starter_web/_plugins/asciidoctor/wistia-block.rb +1 -1
  506. data/lib/starter_web/_plugins/asciidoctor/youtube-block.rb +1 -1
  507. data/lib/starter_web/_plugins/filter/debug.rb +1 -1
  508. data/lib/starter_web/_plugins/filter/encodeBase64.rb +1 -1
  509. data/lib/starter_web/_plugins/filter/encryptAES.rb +1 -1
  510. data/lib/starter_web/_plugins/filter/filters.rb +32 -1
  511. data/lib/starter_web/_plugins/filter/liquify.rb +1 -1
  512. data/lib/starter_web/_plugins/filter/minifyJS.rb +1 -1
  513. data/lib/starter_web/_plugins/filter/minifyJSON.rb +1 -1
  514. data/lib/starter_web/_plugins/filter/prettify.rb +1 -1
  515. data/lib/starter_web/_plugins/filter/xml_prettify.rb +1 -1
  516. data/lib/starter_web/_plugins/helper/symlink_watcher.rb +1 -1
  517. data/lib/starter_web/_plugins/i18n/date.rb +1 -1
  518. data/lib/starter_web/_plugins/index/lunr.rb +2 -2
  519. data/lib/starter_web/_plugins/seo/j1-feed.rb +1 -1
  520. data/lib/starter_web/_plugins/seo/j1-seo-tags.rb +1 -1
  521. data/lib/starter_web/_plugins/seo/j1-sitemap.rb +1 -1
  522. data/lib/starter_web/assets/image/icons/tv/Index of -tv-logos-.url +2 -0
  523. data/lib/starter_web/assets/image/icons/tv/TV from Germany - LyngSat Logo.url +2 -0
  524. data/lib/starter_web/assets/image/icons/tv/Zeichnung.svg +47 -0
  525. data/lib/starter_web/assets/image/icons/tv/ard-icon-16x16.ico +0 -0
  526. data/lib/starter_web/assets/image/icons/tv/ard-icon-24x24.png +0 -0
  527. data/lib/starter_web/assets/image/icons/tv/ard-icon-512x512.png +0 -0
  528. data/lib/starter_web/assets/image/icons/tv/ard-icon.jpg +0 -0
  529. data/lib/starter_web/assets/image/icons/tv/ard-icon.jpg (353/303/227353).url" +2 -0
  530. data/lib/starter_web/assets/image/icons/tv/ard-icon.png +0 -0
  531. data/lib/starter_web/assets/image/icons/tv/ard-logo-png_seeklogo-428343.png +0 -0
  532. data/lib/starter_web/assets/image/icons/tv/cytec-tvlogos- collection of mostly german tv channel logos.url +2 -0
  533. data/lib/starter_web/assets/image/icons/tv/output_image.jpg +0 -0
  534. data/lib/starter_web/assets/image/icons/tv/pang.ping +0 -0
  535. data/lib/starter_web/assets/image/icons/tv/tv-logos-countries-germany-0_all_logos_mosaic.md at main /302/267 tv-logo-tv-logos.url" +2 -0
  536. data/lib/starter_web/assets/image/modules/attics/1920x1280/tiny_desk.jpg +0 -0
  537. data/lib/starter_web/assets/image/modules/attics/alice-donovan-rouse-2.jpg +0 -0
  538. data/lib/starter_web/assets/image/modules/gallery/free_animals/free-animals-1.jpg +0 -0
  539. data/lib/starter_web/assets/image/modules/gallery/free_animals/free-animals-2.jpg +0 -0
  540. data/lib/starter_web/assets/image/modules/gallery/free_animals/free-animals-3.jpg +0 -0
  541. data/lib/starter_web/assets/image/modules/gallery/free_animals/free-animals-4.jpg +0 -0
  542. data/lib/starter_web/assets/image/modules/gallery/free_animals/free-animals-5.jpg +0 -0
  543. data/lib/starter_web/assets/image/modules/gallery/free_animals/free-animals-6.jpg +0 -0
  544. data/lib/starter_web/assets/image/modules/gallery/mega_cities/295683517.jpg +0 -0
  545. data/lib/starter_web/assets/image/modules/gallery/mega_cities/chicago-us.jpg +0 -0
  546. data/lib/starter_web/assets/image/modules/gallery/mega_cities/denys-nevozhai-1_b.jpg +0 -0
  547. data/lib/starter_web/assets/image/modules/gallery/mega_cities/denys-nevozhai-1_c.jpg +0 -0
  548. data/lib/starter_web/assets/image/modules/gallery/mega_cities/denys-nevozhai-3_b.jpg +0 -0
  549. data/lib/starter_web/assets/image/modules/gallery/mega_cities/emmad-mazhari_c.jpg +0 -0
  550. data/lib/starter_web/assets/image/modules/gallery/mega_cities/federico-rizzarelli_b.jpg +0 -0
  551. data/lib/starter_web/assets/image/modules/gallery/mega_cities/federico-rizzarelli_c.jpg +0 -0
  552. data/lib/starter_web/assets/image/modules/gallery/mega_cities/jakarta_indonesia.jpg +0 -0
  553. data/lib/starter_web/assets/image/modules/gallery/mega_cities/jakarta_indonesia_2.jpg +0 -0
  554. data/lib/starter_web/assets/image/modules/gallery/mega_cities/melbourne_australia.jpg +0 -0
  555. data/lib/starter_web/assets/image/modules/gallery/mega_cities/melbourne_australia.webp +0 -0
  556. data/lib/starter_web/assets/image/modules/gallery/mega_cities/queen_bees_at_eureka_tower.jpg +0 -0
  557. data/lib/starter_web/assets/image/modules/gallery/mega_cities/shanghai_china.jpg +0 -0
  558. data/lib/starter_web/assets/image/modules/gallery/mega_cities/thomas-tucker_b.jpg +0 -0
  559. data/lib/starter_web/assets/image/modules/gallery/mega_cities/tokyo_japan.jpg +0 -0
  560. data/lib/starter_web/assets/image/modules/gallery/neighbor_slider/guardians-of-the-galaxy.jpg +0 -0
  561. data/lib/starter_web/assets/image/modules/gallery/neighbor_slider/justice-league.jpg +0 -0
  562. data/lib/starter_web/assets/image/modules/gallery/neighbor_slider/spider-man.jpg +0 -0
  563. data/lib/starter_web/assets/image/modules/gallery/neighbor_slider/suicide-squad.jpg +0 -0
  564. data/lib/starter_web/assets/image/modules/gallery/neighbor_slider/thor-ragnarok.jpg +0 -0
  565. data/lib/starter_web/assets/image/modules/gallery/panorama/1.jpg +0 -0
  566. data/lib/starter_web/assets/image/modules/gallery/panorama/10.jpg +0 -0
  567. data/lib/starter_web/assets/image/modules/gallery/panorama/11.jpg +0 -0
  568. data/lib/starter_web/assets/image/modules/gallery/panorama/12.jpg +0 -0
  569. data/lib/starter_web/assets/image/modules/gallery/panorama/2.jpg +0 -0
  570. data/lib/starter_web/assets/image/modules/gallery/panorama/3.jpg +0 -0
  571. data/lib/starter_web/assets/image/modules/gallery/panorama/4.jpg +0 -0
  572. data/lib/starter_web/assets/image/modules/gallery/panorama/5.jpg +0 -0
  573. data/lib/starter_web/assets/image/modules/gallery/panorama/6.jpg +0 -0
  574. data/lib/starter_web/assets/image/modules/gallery/panorama/7.jpg +0 -0
  575. data/lib/starter_web/assets/image/modules/gallery/panorama/8.jpg +0 -0
  576. data/lib/starter_web/assets/image/modules/gallery/panorama/9.jpg +0 -0
  577. data/lib/starter_web/assets/video/poster/youtube/faelle_des_bnd/der_unverzichtbare_feind.jpg +0 -0
  578. data/lib/starter_web/assets/video/poster/youtube/faelle_des_bnd/ein_diener_vieler_herren.jpg +0 -0
  579. data/lib/starter_web/assets/video/poster/youtube/the_piano/the-piano.jpg +0 -0
  580. data/lib/starter_web/config.ru +1 -1
  581. data/lib/starter_web/dot.gitattributes +1 -1
  582. data/lib/starter_web/dot.nojekyll +1 -1
  583. data/lib/starter_web/package.json +1 -1
  584. data/lib/starter_web/pages/public/{manuals/integrations/google/gemini/_includes → _includes}/attributes.asciidoc +5 -7
  585. data/lib/starter_web/pages/public/_includes/documents/photoswipe/200_photoswipe_parameters.asciidoc +529 -0
  586. data/lib/starter_web/pages/public/_includes/documents/photoswipe/210_photoswipe_lightbox_parameters.asciidoc +105 -0
  587. data/lib/starter_web/pages/public/_includes/documents/photoswipe/300_caption_plugin_for_photoSwipe.asciidoc +324 -0
  588. data/lib/starter_web/pages/public/_includes/documents/swiper/100_swiper_features.asciidoc +50 -0
  589. data/lib/starter_web/pages/public/_includes/documents/swiper/100_swiper_html_layout.asciidoc +122 -0
  590. data/lib/starter_web/pages/public/_includes/documents/swiper/100_swiper_initialization.asciidoc +53 -0
  591. data/lib/starter_web/pages/public/_includes/documents/swiper/110_swiper_common_options.asciidoc +118 -0
  592. data/lib/starter_web/pages/public/_includes/documents/swiper/200_swiper_parameters_a_k.asciidoc +1094 -0
  593. data/lib/starter_web/pages/public/_includes/documents/swiper/200_swiper_parameters_l_o.asciidoc +537 -0
  594. data/lib/starter_web/pages/public/_includes/documents/swiper/200_swiper_parameters_p_s.asciidoc +757 -0
  595. data/lib/starter_web/pages/public/_includes/documents/swiper/200_swiper_parameters_t_z.asciidoc +451 -0
  596. data/lib/starter_web/pages/public/_includes/documents/swiper/300_swiper_instance_properties.asciidoc +873 -0
  597. data/lib/starter_web/pages/public/_includes/documents/swiper/400_swiper_modules.asciidoc +3445 -0
  598. data/lib/starter_web/pages/public/_includes/documents/swiper/500_swiper_methods.asciidoc +989 -0
  599. data/lib/starter_web/pages/public/_includes/documents/swiper/600_swiper_events.asciidoc +1534 -0
  600. data/lib/starter_web/pages/public/{amplitude_yt_tester.adoc → tools/tester/amplitude_yt_tester.adoc} +81 -67
  601. data/lib/starter_web/pages/public/tools/tester/swiper_tester.adoc +796 -0
  602. data/lib/starter_web/pages/public/tour/modal_extentions.adoc +12 -5
  603. data/lib/starter_web/pages/public/tour/play_audio.adoc +60 -5
  604. data/lib/starter_web/pages/public/tour/play_video.adoc +30 -0
  605. data/lib/starter_web/pages/public/tour/present_images.adoc +24 -22
  606. metadata +128 -20
  607. data/assets/theme/j1/modules/amplitudejs/js/tech/youtube_example.js +0 -211
  608. data/lib/starter_web/assets/image/modules/gallery/mega_cities/thomas-tucker-bw.jpg +0 -0
  609. data/lib/starter_web/pages/public/lazy_loader_tester.adoc +0 -402
  610. data/lib/starter_web/pages/public/manuals/integrations/amplitudejs/_includes/attributes.asciidoc +0 -69
  611. data/lib/starter_web/pages/public/manuals/integrations/amplitudejs/_includes/documents/readme +0 -0
  612. data/lib/starter_web/pages/public/manuals/integrations/amplitudejs/amplitudejs-api.adoc +0 -2260
  613. data/lib/starter_web/pages/public/manuals/integrations/google/gemini/_includes/documents/preview_google_adsense.asciidoc +0 -448
  614. data/lib/starter_web/pages/public/manuals/integrations/google/gemini/_includes/documents/readme +0 -0
  615. data/lib/starter_web/pages/public/manuals/integrations/google/gemini/_includes/tables/readme +0 -0
  616. data/lib/starter_web/pages/public/manuals/integrations/google/gemini/gemini.adoc +0 -525
  617. data/lib/starter_web/pages/public/manuals/integrations/google/gemini/security.asccidoc +0 -274
  618. data/lib/starter_web/pages/public/manuals/integrations/google/gemini/security.hrml +0 -560
  619. data/lib/starter_web/pages/public/manuals/integrations/videojs/youtube-api.adoc +0 -1638
  620. data/lib/starter_web/pages/public/manuals/ytdl/man.adoc +0 -3020
  621. data/lib/starter_web/pages/public/manuals/ytdl/man.md +0 -2378
@@ -0,0 +1,3445 @@
1
+ [role="mt-5"]
2
+ [[swiper-modules]]
3
+ == Modules
4
+
5
+ SwiperJS modules are extensions that extend the functionality of the core
6
+ SwiperJS system. They offer additional and advanced features and customization
7
+ options beyond the basic functions of SwiperJS sliders.
8
+
9
+ [role="mt-4 mb-"]
10
+ [TIP]
11
+ ====
12
+ Find available SwiperJS module descriptions also with the
13
+ https://swiperjs.com/swiper-api#modules[Swiper Documentation, {browser-window--new}].
14
+ ====
15
+
16
+ Additional features::
17
+ Modules can be used when navigation, pagination, a scroll bar, or an effect,
18
+ such as a zoom effect, is required. A suitable module already exists for many
19
+ additional functions.
20
+
21
+ Customizatiion::
22
+ Modules allow detailed customization of a slideshow's look and behavior and
23
+ enable the adaptation of sliders to individual needs.
24
+
25
+ [role="mt-4 mb-5"]
26
+ [TIP]
27
+ ====
28
+ For using SwiperJS in the *web browser* or for J1 template projects, all
29
+ *modules* are *already* integrated* into the JS and CSS **resources** as
30
+ *bundle* versions and can be used immediately.
31
+
32
+ It is advisable to configure only the required modules to keep the code and
33
+ configuration of a SwiperJS slider compact and clear.
34
+ ====
35
+
36
+ .Available Modules for SwiperJS
37
+ [cols="3,9a", subs=+macros, options="header", width="100%", role="rtable mb-5"]
38
+ |===
39
+ |Name |Description \| Example
40
+
41
+ |<<Accessibility (a11y)>>
42
+ |Enable and configure Accessibility (a11y) module features of SwiperJS
43
+ available for screen readers and other assistive technologies.
44
+
45
+ [source, js]
46
+ ----
47
+ const swiper = new Swiper('#swiper_id', {
48
+ // other parameters ...
49
+ a11y: {
50
+ prevSlideMessage: 'Go to previous slide',
51
+ nextSlideMessage: 'Go to next slide',
52
+ firstSlideMessage: 'This is the first slide',
53
+ lastSlideMessage: 'This is the last slide'
54
+ }
55
+ });
56
+ ----
57
+
58
+ |<<Controller>>
59
+ |The Controller module allows to *synchronize* the movement of *multiple*
60
+ slider instances.
61
+
62
+ [source, js]
63
+ ----
64
+ const swiper = new Swiper('#swiper_id', {
65
+ // other parameters ...
66
+ controller: {
67
+ inverse: true
68
+ }
69
+ });
70
+ ----
71
+
72
+ |<<Cards Effect>>
73
+ |The Cards Effect module in SwiperJS adds a visually appealing, card-like
74
+ sliding animation for transitions between slides in a SwiperJS slider
75
+ instance.
76
+
77
+ [source, js]
78
+ ----
79
+ const swiper = new Swiper('#swiper_id', {
80
+ // other parameters ...
81
+ effect: 'cards',
82
+ cardsEffect: {
83
+ // ...
84
+ }
85
+ });
86
+ ----
87
+
88
+ |<<Coverflow Effect>>
89
+ |The Coverflow Effect module for SwiperJS creates a three-dimensional,
90
+ fan-like effect for the slides in a Swiper container. This effect is inspired
91
+ by the Coverflow view that you can see, for example, when selecting albums
92
+ in _iTunes_.
93
+
94
+ [source, js]
95
+ ----
96
+ const swiper = new Swiper('#swiper_id', {
97
+ // other parameters ...
98
+ effect: 'coverflow',
99
+ coverflowEffect: {
100
+ rotate: 30,
101
+ slideShadows: false
102
+ }
103
+ });
104
+ ----
105
+
106
+ |<<Creative Effect>>
107
+ |The creative effect module in SwiperJS generates creative and engaging visual
108
+ effects for the slides in a Swiper. The module allows for various custom
109
+ transformations to animate the slides dynamically as they transition between
110
+ each slide.
111
+
112
+ [source, js]
113
+ ----
114
+ const swiper = new Swiper('#swiper_id', {
115
+ // other parameters ...
116
+ effect: 'creative',
117
+ creativeEffect: {
118
+ prev: {
119
+ // will set `translateZ(-400px)` on previous slides
120
+ translate: [0, 0, -400],
121
+ },
122
+ next: {
123
+ // will set `translateX(100%)` on next slides
124
+ translate: ['100%', 0, 0],
125
+ }
126
+ }
127
+ });
128
+ ----
129
+
130
+ |<<Cube Effect>>
131
+ |The Cube Effect module in SwiperJS adds a 3D cube-like rotation effect to
132
+ the transitions between slides in a SwiperJS slider instance.
133
+
134
+ [source, js]
135
+ ----
136
+ const swiper = new Swiper('#swiper_id', {
137
+ // other parameters ...
138
+ effect: 'cube',
139
+ cubeEffect: {
140
+ slideShadows: false
141
+ }
142
+ });
143
+ ----
144
+
145
+ |<<Fade Effect>>
146
+ |The Fade Effect module in SwiperJS creates a smooth transition between each
147
+ slide. Instead of sliding or sliding the slides like other effects do, the
148
+ transition causes them to fade out and the next slide to fade in.
149
+
150
+ [source, js]
151
+ ----
152
+ const swiper = new Swiper('#swiper_id', {
153
+ // other parameters ...
154
+ effect: 'fade',
155
+ fadeEffect: {
156
+ crossFade: true
157
+ }
158
+ });
159
+ ----
160
+
161
+ |<<Flip Effect>>
162
+ |The Flip Effect module in SwiperJS creates a special transition effect
163
+ between individual slides. It gives the impression that the slides are being
164
+ turned like cards.
165
+
166
+ [source, js]
167
+ ----
168
+ const swiper = new Swiper('#swiper_id', {
169
+ // other parameters ...
170
+ effect: 'flip',
171
+ flipEffect: {
172
+ slideShadows: false
173
+ }
174
+ });
175
+ ----
176
+
177
+ |<<Free Mode>>
178
+ |The Free Mode module gives users a more fluid and interactive sliding
179
+ experience.
180
+
181
+ [source, js]
182
+ ----
183
+ // other parameters ...
184
+ const swiper = new Swiper('#swiper_id', {
185
+ grid: {
186
+ rows: 2
187
+ }
188
+ });
189
+ ----
190
+
191
+ |<<Grid>>
192
+ |The Grid module in SwiperJS allows to create *multi-row* sliders, effectively
193
+ arranging slides into a *grid-like* structure.
194
+
195
+ [source, js]
196
+ ----
197
+ // other parameters ...
198
+ const swiper = new Swiper('#swiper_id', {
199
+ grid: {
200
+ rows: 2
201
+ }
202
+ });
203
+ ----
204
+
205
+ |<<Hash Navigation>>
206
+ |Hash navigation is intended to have a link to specific slide that allows to
207
+ load a page with specific slide opened.
208
+
209
+ [source, js]
210
+ ----
211
+ const swiper = new Swiper('#swiper_id', {
212
+ // other parameters ...
213
+ hashNavigation: {
214
+ replaceState: true
215
+ }
216
+ });
217
+ ----
218
+
219
+ |<<History Navigation>>
220
+ |The History (Navigation) module in SwiperJS allows you to integrate Swiper
221
+ with history of the *browser*. This means, when users navigate between slides
222
+ in a Swiper, the browser's URL will be updated to reflect the current slide.
223
+
224
+ Object with history navigation parameters or boolean `true` to enable
225
+ with default settings.
226
+
227
+ [source, js]
228
+ ----
229
+ const swiper = new Swiper('#swiper_id', {
230
+ // other parameters ...
231
+ history: {
232
+ replaceState: true
233
+ }
234
+ });
235
+ ----
236
+
237
+ |<<Keyboard Control>>
238
+ |The Keyboard Control module in SwiperJS enables navigation through slides
239
+ using the keyboard.
240
+
241
+ [source, js]
242
+ ----
243
+ // other parameters ...
244
+ const swiper = new Swiper('#swiper_id', {
245
+ keyboard: {
246
+ enabled: true,
247
+ onlyInViewport: false
248
+ }
249
+ });
250
+ ----
251
+
252
+ |<<Lazy Loading>>
253
+ |The Lazy Loading module in SwiperJS controls the lazy loading of *images*
254
+ within a swiper. Lazy loading means images are *not loaded* until they
255
+ scroll into the browser's *visible area*. Using the module increases loading
256
+ speed, especially for websites with many images, and thus improves the user
257
+ experience.
258
+
259
+ |<<Manipulation>>
260
+ |The Manipulation module adds useful methods to SwiperJS for manipulating
261
+ slides. The module provides methods for dynamically adding, removing, and
262
+ rearranging slides within a SwiperJS slider.
263
+
264
+ |<<Mousewheel Control>>
265
+ |The Mousewheel Control module in SwiperJS enables users to navigate through
266
+ the slides of a SwiperJS instance using their mouse wheel.
267
+
268
+ [source, js]
269
+ ----
270
+ // other parameters ...
271
+ const swiper = new Swiper('#swiper_id', {
272
+ mousewheel: {
273
+ invert: true
274
+ }
275
+ });
276
+ ----
277
+
278
+ |<<Pagination>>
279
+ |The Pagination module in SwiperJS is a powerful tool for adding visual
280
+ indicators (like buttons) to a SwiperJS slide. The navigation elements make
281
+ it clear to users how many slides they view and which ones they view.
282
+
283
+ [source, js]
284
+ ----
285
+ const swiper = new Swiper('#swiper_id', {
286
+ // other parameters ...
287
+ navigation: {
288
+ nextEl: '.swiper-button-next',
289
+ prevEl: '.swiper-button-prev'
290
+ }
291
+ });
292
+ ----
293
+
294
+ |<<Parallax>>
295
+ |The Parallax module supports parallax transition effects for SwiperJS silder
296
+ *slides* and nested elements.
297
+
298
+ [source, js]
299
+ ----
300
+ const swiper = new Swiper('#swiper_id', {
301
+ // other parameters ...
302
+ parallax: true
303
+ });
304
+ ----
305
+
306
+ |<<Scrollbar>>
307
+ |The Scrollbar module in SwiperJS is a powerful tool that enhances user
308
+ interaction and provides visual feedback within a SwiperJS slider.
309
+
310
+ [source, js]
311
+ ----
312
+ const swiper = new Swiper('#swiper_id', {
313
+ // other parameters ...
314
+ scrollbar: {
315
+ el: '.swiper-scrollbar',
316
+ draggable: true
317
+ }
318
+ });
319
+ ----
320
+
321
+ |<<Thumbs>>
322
+ |The Thumbs module enables to create a thumbnail navigation for SliderJS
323
+ sliders.
324
+
325
+ [source, js]
326
+ ----
327
+ const swiper = new Swiper('#swiper_id', {
328
+ // other parameters ...
329
+ thumbs: {
330
+ swiper: thumbsSwiper
331
+ }
332
+ });
333
+ ----
334
+
335
+ |<<Virtual Slides>>
336
+ |The Virtual Slides module allows you to keep the required number of slides
337
+ in the DOM. The module is very useful in terms of performance and memory
338
+ issues if you have a lot of slides, especially slides with heavyweight DOM
339
+ trees or images.
340
+
341
+ [source, js]
342
+ ----
343
+ // other parameters ...
344
+ const swiper = new Swiper('#swiper_id', {
345
+ virtual: {
346
+ slides: ['Slide 1', 'Slide 2', 'Slide 3', 'Slide 4', 'Slide 5']
347
+ }
348
+ });
349
+ ----
350
+
351
+ |===
352
+
353
+
354
+ [role="mt-5"]
355
+ [[swiper-modules-a11y]]
356
+ === Accessibility (a11y)
357
+
358
+ Enable and configure *Accessibility* (a11y) module features of SwiperJS
359
+ available for **screen readers** and other *assistive technologies*. By using
360
+ the parameter and its options, you can *significantly enhance* the
361
+ accessibility for *users with disabilities*:
362
+
363
+ Keyboard Navigation::
364
+ Enables users to navigate slides using keyboard arrows.
365
+
366
+ Screen Reader Support::
367
+ Provides meaningful information to *screen readers* about the slider,
368
+ such as the number of slides and the current slide.
369
+
370
+ Customizable Messages::
371
+ Allows you to provide custom messages for *screen readers*, improving
372
+ user experience.
373
+
374
+ [role="mt-4"]
375
+ [[swiper-modules-a11y-parameters]]
376
+ ==== Parameters
377
+
378
+ Find all parameters available for the *Accessibility* (a11y) module.
379
+
380
+ .Accessibility (a11y) Parameters
381
+ [cols="3,2,3,4a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
382
+ |===
383
+ |Name |Type |Default |Description \| Example
384
+
385
+ |`containerMessage`
386
+ |null \| string
387
+ |null
388
+ |Message for *screen readers* for *outer* swiper container.
389
+
390
+ |`containerRole`
391
+ |null \| string
392
+ |null
393
+ |Value of the *role attribute* to be set on the *swiper container*.
394
+
395
+ |`containerRoleDescriptionMessage`
396
+ |null \| string
397
+ |null
398
+ |Message for *screen readers* describing the role of *outer* swiper container.
399
+
400
+ |`enabled`
401
+ |boolean
402
+ |`true`
403
+ |Enables the Accessibility Module (a11y).
404
+
405
+ |`firstSlideMessage`
406
+ |string
407
+ |_This is the first slide_
408
+ |Message for *screen readers* for *previous button* when swiper
409
+ is on *first slide*.
410
+
411
+ |`id`
412
+ |null \| string \| number
413
+ |null
414
+ |Value of the id attribute to be set on *swiper-wrapper*. If set to
415
+ `null` the *id* will be *generated automatically*.
416
+
417
+ |`itemRoleDescriptionMessage`
418
+ |null \| string
419
+ |null
420
+ |Message for *screen readers* describing *the role* of a slide element.
421
+
422
+ |`lastSlideMessage`
423
+ |string
424
+ |_This is the last slide_
425
+ |Message for *screen readers* for *next button* when swiper
426
+ is on *last slide*.
427
+
428
+ |`nextSlideMessage`
429
+ |string
430
+ |_Next slide_
431
+ |Message for *screen readers* for the *next button*.
432
+
433
+ |`notificationClass`
434
+ |string
435
+ |_swiper-notification_
436
+ |*CSS class name* of A11y notification.
437
+
438
+ |`paginationBulletMessage`
439
+ |string
440
+ |_Go to slide **{{index}}**_
441
+ |Message for *screen readers* for *single pagination bullet*.
442
+
443
+ |`prevSlideMessage`
444
+ |string
445
+ |_Previous slide_
446
+ |Message for *screen readers* for the *previous button*.
447
+
448
+ |`scrollOnFocus`
449
+ |boolean
450
+ |`true`
451
+ |Enables *scrolling* to the slide that has been *focused*.
452
+
453
+ |`slideLabelMessage`
454
+ |string
455
+ |_**{{index}}**_ \| _**{{slidesLength}}**_
456
+ |Message for *screen readers* describing the label of the *slide element*.
457
+
458
+ |`slideRole`
459
+ |string
460
+ |_group_
461
+ |Value of swiper slide *role attribute*.
462
+
463
+ |===
464
+
465
+
466
+ [[swiper-modules-autoplay]]
467
+ === Autoplay
468
+
469
+ The Autoplay module in SwiperJS is a powerful feature that allows you to
470
+ automatically transition between slides in your slider at a specified
471
+ interval. Here's a breakdown of its key functionalities:
472
+
473
+ Automatic Slide Transitions::
474
+ The primary function is to automatically move the slider to the next
475
+ slide after a defined delay.
476
+
477
+ Customization::
478
+ You can extensively customize the autoplay behavior:
479
+
480
+ * Delay:
481
+ Control the time interval between each slide transition.
482
+ * Disable on Interaction:
483
+ Stop autoplay when the user interacts with the slider (e.g., swiping, clicking).
484
+ * Reverse Direction:
485
+ Change the direction of autoplay (from right to left or vice versa).
486
+ * Disable on Interaction:
487
+ Stop autoplay when the user interacts with the slider.
488
+
489
+ [role="mt-4"]
490
+ [[swiper-modules-autoplay-parameters]]
491
+ ==== Parameters
492
+
493
+ Find all *Parameters* available for the *Autoplay* module.
494
+
495
+ .Autoplay Parameters
496
+ [cols="4,2,2,4a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
497
+ |===
498
+ |Name |Type |Default |Description \| Example
499
+
500
+ |`delay`
501
+ |number
502
+ |3000
503
+ |Delay between transitions (in ms). If this parameter is *not specified*,
504
+ auto play will be *disabled*.
505
+
506
+ If you need to specify different delay for specific slides you can do it
507
+ by using `data-swiper-autoplay` (in ms) *attribute* individually on each
508
+ slide.
509
+
510
+ [source, html]
511
+ ----
512
+ <!-- hold this slide for 2 seconds -->
513
+ <div class="swiper-slide" data-swiper-autoplay="2000">
514
+ ----
515
+
516
+ |`disableOnInteraction`
517
+ |boolean
518
+ |`true`
519
+ |Set to `false` and autoplay will *not be disabled* after *user interactions*
520
+ (swiping). It will be restarted every time after interaction.
521
+
522
+ |`pauseOnMouseEnter`
523
+ |boolean
524
+ |`false`
525
+ |When enabled, autoplay will *be paused* on pointer (mouse) enter
526
+ *over Swiper container*.
527
+
528
+ |`reverseDirection`
529
+ |boolean
530
+ |`false`
531
+ |Enables autoplay in *reverse direction*.
532
+
533
+ |`stopOnLastSlide`
534
+ |boolean
535
+ |`false`
536
+ |Enable this parameter and autoplay is *stopped* when the *last slide*
537
+ is reached.
538
+
539
+ [CAUTION]
540
+ ====
541
+ This setting has *no effect* in *loop mode*.
542
+ ====
543
+
544
+ |`waitForTransition`
545
+ |boolean
546
+ |`true`
547
+ |When enabled autoplay will *wait for wrapper transition* to *continue*.
548
+ Can be disabled in case of using Virtual Translate when your slider may
549
+ *not* have transitions.
550
+
551
+ |===
552
+
553
+ [role="mt-4"]
554
+ [[swiper-modules-autoplay-properties]]
555
+ ==== Properties
556
+
557
+ Find all *Properties* available for the *Autoplay* module.
558
+
559
+ .Autoplay Properties
560
+ [cols="3,3,6a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
561
+ |===
562
+ |Name |Type |Description
563
+
564
+ |`paused`
565
+ |boolean
566
+ |Indicate whether autoplay is paused.
567
+
568
+ |`running`
569
+ |boolean
570
+ |Indicate whether autoplay is enabled and running.
571
+
572
+ |`timeLeft`
573
+ |number
574
+ |If autoplay is *paused*, it contains the *time left* (in ms) before
575
+ transition starts to *next slide*.
576
+
577
+ |===
578
+
579
+ [role="mt-4"]
580
+ [[swiper-modules-autoplay-methods]]
581
+ ==== Methods
582
+
583
+ Find all *Methods* available for the *Autoplay* module.
584
+
585
+ .Autoplay Methods
586
+ [cols="3,9a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
587
+ |===
588
+ |Name |Description
589
+
590
+ |`paused`
591
+ |Pause autoplay.
592
+
593
+ |`resume`
594
+ |Resume autoplay.
595
+
596
+ |`start`
597
+ |Starts autoplay.
598
+
599
+ |`stop`
600
+ |Stops autoplay.
601
+
602
+ |===
603
+
604
+ Find all events availalable for the
605
+ [role="mt-4"]
606
+ [[swiper-modules-autoplay-events]]
607
+ ==== Events
608
+
609
+ Find all *Events* available for the *Autoplay* module.
610
+
611
+ [NOTE]
612
+ ====
613
+ All events receives *swiper* event *data* as an *argument*.
614
+ ====
615
+
616
+ [role="mt-4"]
617
+ [[swiper-modules-event-autoplay]]
618
+ ===== autoplay
619
+
620
+ Event will be fired when *slide changed* with autoplay.
621
+
622
+ [cols="12a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
623
+ |===
624
+ |Usage
625
+
626
+ |
627
+ [source, js]
628
+ ----
629
+ const swiper = new Swiper('#swiper_id', {
630
+ // option settings ...
631
+ on: {
632
+ autoplay: (swiper) => {
633
+ // do something
634
+ }
635
+ }
636
+ });
637
+ ----
638
+
639
+ |===
640
+
641
+ [role="mt-4"]
642
+ [[swiper-modules-event-autoplayPause]]
643
+ ===== autoplayPause
644
+
645
+ Event will be fired on autoplay *pause*.
646
+
647
+ [cols="12a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
648
+ |===
649
+ |Usage
650
+
651
+ |
652
+ [source, js]
653
+ ----
654
+ const swiper = new Swiper('#swiper_id', {
655
+ // option settings ...
656
+ on: {
657
+ autoplayPause: (swiper) => {
658
+ // do something
659
+ }
660
+ }
661
+ });
662
+ ----
663
+
664
+ |===
665
+
666
+ [role="mt-4"]
667
+ [[swiper-modules-event-autoplayResume]]
668
+ ===== autoplayResume
669
+
670
+ Event will be fired on autoplay *resume*.
671
+
672
+ [cols="12a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
673
+ |===
674
+ |Usage
675
+
676
+ |
677
+ [source, js]
678
+ ----
679
+ const swiper = new Swiper('#swiper_id', {
680
+ // option settings ...
681
+ on: {
682
+ autoplayResume: (swiper) => {
683
+ // do something
684
+ }
685
+ }
686
+ });
687
+ ----
688
+
689
+ |===
690
+
691
+ [role="mt-4"]
692
+ [[swiper-modules-event-autoplayStart]]
693
+ ===== autoplayStart
694
+
695
+ Event will be fired in case autoplay has been *started*.
696
+
697
+ [cols="12a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
698
+ |===
699
+ |Usage
700
+
701
+ |
702
+ [source, js]
703
+ ----
704
+ const swiper = new Swiper('#swiper_id', {
705
+ // option settings ...
706
+ on: {
707
+ autoplayStart: (swiper) => {
708
+ // do something
709
+ }
710
+ }
711
+ });
712
+ ----
713
+
714
+ |===
715
+
716
+ [role="mt-4"]
717
+ [[swiper-modules-event-autoplayStop]]
718
+ ===== autoplayStop
719
+
720
+ Event will be fired when autoplay has been *stopped*.
721
+
722
+ [cols="12a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
723
+ |===
724
+ |Usage
725
+
726
+ |
727
+ [source, js]
728
+ ----
729
+ const swiper = new Swiper('#swiper_id', {
730
+ // option settings ...
731
+ on: {
732
+ autoplayStop: (swiper) => {
733
+ // do something
734
+ }
735
+ }
736
+ });
737
+ ----
738
+
739
+ |===
740
+
741
+ [role="mt-4"]
742
+ [[swiper-modules-event-autoplayTimeLeft]]
743
+ ===== autoplayTimeLeft
744
+
745
+ Event fires *continuously* while autoplay is *enabled*. It
746
+ contains *time left* (in ms) before transition to next slide
747
+ and *percentage* of the *time* related to *autoplay delay*.
748
+
749
+ [NOTE]
750
+ ====
751
+ Receives *swiper*, *timeLeft*, *percentage* event *data* as *arguments*.
752
+ ====
753
+
754
+ [cols="12a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
755
+ |===
756
+ |Usage
757
+
758
+ |
759
+ [source, js]
760
+ ----
761
+ const swiper = new Swiper('#swiper_id', {
762
+ // option settings ...
763
+ on: {
764
+ autoplayTimeLeft: (swiper, timeLeft, percentage) => {
765
+ // do something
766
+ }
767
+ }
768
+ });
769
+ ----
770
+
771
+ |===
772
+
773
+
774
+ [role="mt-5"]
775
+ [[swiper-modules-controller]]
776
+ === Controller
777
+
778
+ In SwiperJS, the Controller module allows to *synchronize* the *movement*
779
+ of one or *multiple* slider instances. This is incredibly useful for
780
+ creating complex, *interconnected* slider experiences. Here's a breakdown of
781
+ its key functionalities:
782
+
783
+ Master/Slave Relationship::
784
+ You designate one swiper instance as the *master* and others as *slaves*.
785
+
786
+ Synchronized Slides::
787
+ When the *master* swiper *changes* slides, the slave swipers automatically
788
+ move to the *corresponding* position.
789
+
790
+ Inverse Control::
791
+ You can configure the slaves to move in the *opposite* direction of the
792
+ master.
793
+
794
+ By Slide or by Progress::
795
+ Control can be based on the *slide index* of the master or its overall
796
+ *progress percentage*.
797
+
798
+
799
+ [role="mt-4"]
800
+ [[swiper-modules-controller-parameters]]
801
+ ==== Parameters
802
+
803
+ Find all parameters available for the *Controller* module.
804
+
805
+ .Controller Parameters
806
+ [cols="3,2,3,4a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
807
+ |===
808
+ |Name |Type |Default |Description \| Example
809
+
810
+ |`by`
811
+ |_slide_ \| _container_
812
+ |_slide_
813
+ |Defines, as a *string*, to *control* another slider or (multiple sliders)
814
+ slide by slide. With respect to other slider's *grid* or depending on all
815
+ sliders *container*, depending on total slider percentage.
816
+
817
+ |`control`
818
+ |any
819
+ |*no default*
820
+ |Pass another sniper instance or an *array* of (multiple) sniper instances
821
+ that should be controlled by this swiper. Also accepts a *string* with a
822
+ *CSS selector* or the *HTML Element* of a swiper.
823
+
824
+ |`inverse`
825
+ |boolean
826
+ |`false`
827
+ |If set to `true`, the controlling *direction* will be *inverted*.
828
+
829
+ |===
830
+
831
+ [role="mt-4"]
832
+ [[swiper-modules-controller-methods]]
833
+ ==== Methods
834
+
835
+ Find below available *Methods* for the SwiperJS *Controller* module.
836
+
837
+ .Controller Methods
838
+ [cols="3,9a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
839
+ |===
840
+ |Method |Description \| Example
841
+
842
+ |`control`
843
+ |Pass a swiper instance or an *array* of (multiple) instances that
844
+ should be *controlled* by this *swiper*.
845
+
846
+ [source, js]
847
+ ----
848
+ // single instance
849
+ swiper.control(instance);
850
+
851
+ // multiple instances
852
+ swiper.control(instances[]);
853
+ ----
854
+
855
+ |===
856
+
857
+
858
+ [role="mt-5"]
859
+ [[swiper-modules-cards-effect]]
860
+ === Cards Effect
861
+
862
+ The Cards Effect module in SwiperJS adds a visually appealing, card-like
863
+ sliding *animation* for *transitions* between slides in a SwiperJS slider
864
+ instance.
865
+
866
+ [NOTE]
867
+ ====
868
+ Be sure to have the parameter `effect` set to _cards_ in order to make the
869
+ module work.
870
+ ====
871
+
872
+ [role="mt-4"]
873
+ [[swiper-modules-cards-effect-parameters]]
874
+ ==== Parameters
875
+
876
+ Find all parameters available for the *Cards Effect* module.
877
+
878
+ .Cards Effect Parameters
879
+ [cols="3,2,3,4a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
880
+ |===
881
+ |Name |Type |Default |Description
882
+
883
+ |`perSlideOffset`
884
+ |number
885
+ |8
886
+ |Offset distance per slide (in px).
887
+
888
+ |`perSlideRotate`
889
+ |number
890
+ |2
891
+ |Rotate angle per slide (in degrees).
892
+
893
+ |`rotate`
894
+ |boolean
895
+ |`true`
896
+ |Enables cards rotation.
897
+
898
+ |`slideShadows`
899
+ |boolean
900
+ |`true`
901
+ |Enables slides shadows.
902
+
903
+ |===
904
+
905
+
906
+ [role="mt-5"]
907
+ [[swiper-modules-scover-effect]]
908
+ === Coverflow Effect
909
+
910
+ Be sure to have the `effect` param set to `'coverflow'` in order for
911
+ this to work.
912
+
913
+ [role="mt-4"]
914
+ [[swiper-modules-cover-effect-parameters]]
915
+ ==== Parameters
916
+
917
+ Find all parameters available for the *Coverflow Effect* module.
918
+
919
+ .Coverflow Effect Parameters
920
+ [cols="3,2,3,4a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
921
+ |===
922
+ |Name |Type |Default |Description
923
+
924
+ |`depth`
925
+ |number
926
+ |100
927
+ |Depth offset in px (slides translate in Z axis).
928
+
929
+ |`modifier`
930
+ |number
931
+ |1
932
+ |Effect multiplier.
933
+
934
+ |`rotate`
935
+ |number
936
+ |50
937
+ |Slide rotate in degrees.
938
+
939
+ |`scale`
940
+ |number
941
+ |1
942
+ |Slide scale effect.
943
+
944
+ |`slideShadows`
945
+ |boolean
946
+ |`true`
947
+ |Enables slides shadows.
948
+
949
+ |`stretch`
950
+ |number
951
+ |0
952
+ |Stretch space between slides (in px).
953
+ |===
954
+
955
+
956
+ [role="mt-5"]
957
+ [[swiper-modules-creative-effect]]
958
+ === Creative Effect
959
+
960
+ The creative effect module in SwiperJS generates creative and engaging
961
+ visual effects for the slides in a Swiper. It allows for a variety of custom
962
+ transformations to animate the slides dynamically as they transition between
963
+ each slide.
964
+
965
+ Here's a breakdown of its key features:
966
+
967
+ Customizable Transitions::
968
+ Allows you to define unique transformations for each slide (previous, next,
969
+ and active) using properties like translate, rotate, scale, opacity, and more.
970
+ This flexibility enables you to create a wide range of effects, from subtle
971
+ shifts to dramatic 3D transformations.
972
+
973
+ Precise Control::
974
+ Offers fine-grained control over the timing and appearance of each effect
975
+ by manipulating CSS properties directly. You can adjust the intensity,
976
+ duration, and easing of transitions to achieve the desired visual impact.
977
+
978
+ [NOTE]
979
+ ====
980
+ Be sure to have the parameter `effect` set to _creative_ in order to make
981
+ the module work.
982
+ ====
983
+
984
+ [role="mt-4"]
985
+ [[swiper-modules-creative-effect-parameters]]
986
+ ==== Parameters
987
+
988
+ Find all parameters available for the SwiperJS *Creative Effect* module.
989
+
990
+ .Creative Effect Parameters
991
+ [cols="3,2,3,4a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
992
+ |===
993
+ |Name |Type |Default |Description \| Example
994
+
995
+ |`limitProgress`
996
+ |number
997
+ |1
998
+ |Limit progress/offset to amount of side slides. If `1`, then slides all
999
+ slides after prev/next will have same state. If `2`, then all slides
1000
+ after 2nd before/after active will have same state, etc.
1001
+
1002
+ |`next`
1003
+ |CreativeEffectTransform
1004
+ |*no default*
1005
+ |Next slide transformations.
1006
+
1007
+ // kapott 1
1008
+
1009
+ |`perspective`
1010
+ |boolean
1011
+ |`true`
1012
+ |Enable this parameter if your custom transforms require 3D transformations
1013
+ like `translateZ`, `rotateX`, `rotateY.
1014
+
1015
+ |`prev`
1016
+ |CreativeEffectTransform
1017
+ |*no defaults*
1018
+ |Previous slide transformations. Accepts object of the following type:
1019
+
1020
+ // kapott 2
1021
+
1022
+ |`progressMultiplier`
1023
+ |number
1024
+ |1
1025
+ |Allows to multiply slides transformations and opacity.
1026
+
1027
+ |`shadowPerProgress`
1028
+ |boolean
1029
+ |`false`
1030
+ |Splits shadow "opacity" per slide based on `limitProgress` (only if
1031
+ transformation shadows enabled). E.g. setting `limitProgress: 2` and
1032
+ enabling `shadowPerProgress`, will set shadow opacity to `0.5` and
1033
+ `1` on two slides next to active. With this parameter disabled, all
1034
+ slides beside active will have shadow with `1` opacity
1035
+
1036
+ |===
1037
+
1038
+
1039
+ [role="mt-5"]
1040
+ [[swiper-modules-cube-effect]]
1041
+ === Cube Effect
1042
+
1043
+ The Cube Effect module in SwiperJS adds a 3D cube-like rotation effect
1044
+ to the *transitions* between slides in a SwiperJS slider instance.
1045
+
1046
+ [NOTE]
1047
+ ====
1048
+ Be sure to have the parameter `effect` set to _cube_ in order to make the
1049
+ module work.
1050
+ ====
1051
+
1052
+ [role="mt-4"]
1053
+ [[swiper-modules-cube-effect-parameters]]
1054
+ ==== Parameters
1055
+
1056
+ Find all parameters available for the *Cube Effect* module.
1057
+
1058
+ .Cube Effect Parameters
1059
+ [cols="3,2,3,4a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
1060
+ |===
1061
+ |Name |Type |Default |Description
1062
+
1063
+ |`shadow`
1064
+ |boolean
1065
+ |`true`
1066
+ |Enables main slider shadow.
1067
+
1068
+ |`shadowOffset`
1069
+ |number
1070
+ |20
1071
+ |Main shadow offset in px.
1072
+
1073
+ |`shadowScale`
1074
+ |number
1075
+ |0.94
1076
+ |Main shadow scale ratio.
1077
+
1078
+ |`slideShadows`
1079
+ |boolean
1080
+ |`true`
1081
+ |Enables slides shadows.
1082
+
1083
+ |===
1084
+
1085
+
1086
+ [role="mt-5"]
1087
+ [[swiper-modules-fade-effect]]
1088
+ === Fade Effect
1089
+
1090
+ The Fade Effect module in SwiperJS creates a smooth transition between each
1091
+ slide. Instead of sliding or sliding the slides like other effects do, the
1092
+ transition causes them to fade out and the next slide to fade in.
1093
+
1094
+ [NOTE]
1095
+ ====
1096
+ Be sure to have the `effect` parameter set to _fade_ in order in order to
1097
+ make the module work.
1098
+
1099
+ Parameter `crossFade` should be set to `true` in order to avoid seeing
1100
+ content *behind* or *underneath*.
1101
+ ====
1102
+
1103
+ [role="mt-4"]
1104
+ [[swiper-modules-fade-effect-parameters]]
1105
+ ==== Parameters
1106
+
1107
+ Find all parameters available for the *Fade Effect* module.
1108
+
1109
+ .Fade Effect Parameters
1110
+ [cols="3,2,3,4a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
1111
+ |===
1112
+ |Name |Type |Default |Description
1113
+
1114
+ |`crossFade`
1115
+ |boolean
1116
+ |`false`
1117
+ |Enables slides cross fade.
1118
+ |===
1119
+
1120
+
1121
+ [role="mt-5"]
1122
+ [[swiper-modules-flip-effect]]
1123
+ === Flip Effect
1124
+
1125
+ The Flip Effect module in SwiperJS adds a 3D flip animation to the slides
1126
+ in your slider.
1127
+
1128
+ [NOTE]
1129
+ ====
1130
+ Be sure to have the parameter `effect` set to _flip_ in order to make the
1131
+ module work.
1132
+ ====
1133
+
1134
+ [role="mt-4"]
1135
+ [[swiper-modules-flip-effect-parameters]]
1136
+ ==== Parameters
1137
+
1138
+ Find all parameters available for the *Flip Effect* module.
1139
+
1140
+ .Flip Effect Parameters
1141
+ [cols="3,2,3,4a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
1142
+ |===
1143
+ |Name |Type |Default |Description
1144
+
1145
+ |`limitRotation`
1146
+ |boolean
1147
+ |`true`
1148
+ |Limit edge slides rotation.
1149
+
1150
+ |`slideShadows`
1151
+ |boolean
1152
+ |`true`
1153
+ |Enables slides shadows.
1154
+
1155
+ |===
1156
+
1157
+
1158
+ [role="mt-5"]
1159
+ [[swiper-modules-free-mode]]
1160
+ === Free Mode
1161
+
1162
+ In SwiperJS, the Free Mode module allows for a more *fluid* and *interactive*
1163
+ sliding experience. Here's a breakdown of its key features:
1164
+
1165
+ Free Movement::
1166
+ Slides can be freely dragged and positioned anywhere within the slider
1167
+ container.
1168
+
1169
+ Momentum::
1170
+ When the user releases the slide, it continues to move with momentum,
1171
+ simulating realistic inertia.
1172
+
1173
+ Sticky Option::
1174
+ This *optional* feature *snaps* the slide to the nearest position when
1175
+ it comes to rest, providing a more controlled experience.
1176
+
1177
+
1178
+ [role="mt-4"]
1179
+ [[swiper-modules-free-mode-parameters]]
1180
+ ==== Parameters
1181
+
1182
+ Find all parameters available for the *Free Mode* module.
1183
+
1184
+ .Free Mode Parameters
1185
+ [cols="3,2,3,4a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
1186
+ |===
1187
+ |Name |Type |Default |Description
1188
+
1189
+ |`enabled`
1190
+ |boolean
1191
+ |`false`
1192
+ |Whether the free mode is enabled.
1193
+
1194
+ |`minimumVelocity`
1195
+ |number
1196
+ |0.02
1197
+ |Minimum touchmove-velocity required to trigger free mode momentum.
1198
+
1199
+ |`momentum`
1200
+ |boolean
1201
+ |`true`
1202
+ |If enabled, then slide will keep moving for a while after you release it.
1203
+
1204
+ |`momentumBounce`
1205
+ |boolean
1206
+ |`true`
1207
+ |Set to `false` if you want to disable momentum bounce in free mode.
1208
+
1209
+ |`momentumBounceRatio`
1210
+ |number
1211
+ |1
1212
+ |Higher value produces larger momentum bounce effect.
1213
+
1214
+ |`momentumRatio`
1215
+ |number
1216
+ |1
1217
+ |Higher value produces larger momentum distance after you release slider.
1218
+
1219
+ |`momentumVelocityRatio`
1220
+ |number
1221
+ |1
1222
+ |Higher value produces larger momentum velocity after you release slider.
1223
+
1224
+ |`sticky`
1225
+ |boolean
1226
+ |`false`
1227
+ |Set to enabled to enable snap to slides positions in free mode.
1228
+
1229
+ |===
1230
+
1231
+
1232
+ [role="mt-5"]
1233
+ [[swiper-modules-grid]]
1234
+ === Grid
1235
+
1236
+ The Grid module in SwiperJS allows you to create multi-row sliders,
1237
+ effectively arranging slides into a grid-like structure. Here's a
1238
+ breakdown of its key features:
1239
+
1240
+ Multi-row layouts::
1241
+ Define the number of rows (`grid.rows`) to control how slides are distributed
1242
+ within the slider.
1243
+
1244
+ Fill direction::
1245
+ Control how slides fill the rows:
1246
+
1247
+ * grid.fill: *row*, Slides fill rows from left to right.
1248
+ * grid.fill: *column*, Slides fill columns from top to bottom.
1249
+
1250
+ [role="mt-4"]
1251
+ [[swiper-modules-grid-parameters]]
1252
+ ==== Parameters
1253
+
1254
+ Find all parameters available for the *Grid* module.
1255
+
1256
+ .Grid Parameters
1257
+ [cols="3,2,3,4a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
1258
+ |===
1259
+ |Name |Type |Default |Description \| Example
1260
+
1261
+ |`fill`
1262
+ |_row_ \| _column_
1263
+ |_column_
1264
+ | Can be _column_ or _row_. Defines how slides should fill rows,
1265
+ by column or by row.
1266
+
1267
+ [NOTE]
1268
+ ====
1269
+ If used with loop mode make sure number of slides is even specified in
1270
+ loop mode requirements, or enable `loopAddBlankSlides` parameter
1271
+ ====
1272
+
1273
+ |`rows`
1274
+ |number
1275
+ |1
1276
+ |Number of slides rows, for multirow layout.
1277
+
1278
+ |===
1279
+
1280
+
1281
+ [role="mt-5"]
1282
+ [[swiper-modules-hash-navigation]]
1283
+ === Hash Navigation
1284
+
1285
+ Hash navigation is intended to have a link to specific slide that allows
1286
+ to load page with specific slide opened.
1287
+
1288
+ To make it work, you need to enable it by passing:
1289
+
1290
+ * `hashNavigation: true` parameter and adding slides hashes in
1291
+ * `data-hash` attribute:
1292
+
1293
+ [role="mt-4"]
1294
+ .HTML Structure
1295
+ [source, html]
1296
+ ----
1297
+ <div id="swiperHashNavigation" class="swiper swiper-container">
1298
+ <div class="swiper-wrapper">
1299
+ <div class="swiper-slide" data-hash="slide1">Slide 1</div>
1300
+ <div class="swiper-slide" data-hash="slide2">Slide 2</div>
1301
+ <div class="swiper-slide" data-hash="slide3">Slide 3</div>
1302
+ <div class="swiper-slide" data-hash="slide4">Slide 4</div>
1303
+ <div class="swiper-slide" data-hash="slide5">Slide 5</div>
1304
+ ...
1305
+ </div>
1306
+ </div>
1307
+ ----
1308
+
1309
+ [role="mb-5"]
1310
+ .Swiper Initialization
1311
+ [source, js]
1312
+ ----
1313
+ const swiper = new Swiper('#swiperHashNavigation', {
1314
+ //enable hash navigation
1315
+ hashNavigation: true
1316
+ });
1317
+ ----
1318
+
1319
+ [role="mt-4"]
1320
+ [[swiper-modules-hash-navigation-parameters]]
1321
+ ==== Parameters
1322
+
1323
+ Find all parameters available for the *Hash Navigation* module.
1324
+
1325
+ .Hash Navigation Parameters
1326
+ [cols="2,2,2,6a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
1327
+ |===
1328
+ |Name |Type |Default |Description
1329
+
1330
+ |`getSlideIndex`
1331
+ |function(swiper, hash)
1332
+ |*no default*
1333
+ |Designed to be used with Virtual slides when it is impossible to find
1334
+ slide in DOM by hash (e.g. not yet rendered).
1335
+
1336
+ |`replaceState`
1337
+ |boolean
1338
+ |`false`
1339
+ |Works in addition to hashnav to replace current url state with the new one
1340
+ instead of adding it to history.
1341
+
1342
+ |`watchState`
1343
+ |boolean
1344
+ |`false`
1345
+ |Set to `true` to enable also navigation through slides (when hashnav is
1346
+ enabled) by browser history or by setting directly hash on document location.
1347
+
1348
+ |===
1349
+
1350
+ [role="mt-4"]
1351
+ [[swiper-modules-hash-navigation-events]]
1352
+ ==== Events
1353
+
1354
+ Find below available *Events* for the SwiperJS *Hash Navigation* module.
1355
+
1356
+ [role="mt-4"]
1357
+ [[swiper-modules-hash-navigation-events-hashChange]]
1358
+ ===== hashChange
1359
+
1360
+ Event fired on window hash change.
1361
+
1362
+ [cols="12a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
1363
+ |===
1364
+ |Usage
1365
+
1366
+ |
1367
+ [source, js]
1368
+ ----
1369
+ const swiper = new Swiper('#swiper_id', {
1370
+ // option settings ...
1371
+ on: {
1372
+ hashChange: (swiper) => {
1373
+ // do something
1374
+ }
1375
+ }
1376
+ });
1377
+ ----
1378
+
1379
+ |===
1380
+
1381
+ [role="mt-4"]
1382
+ [[swiper-modules-hash-navigation-events-hashSet]]
1383
+ ===== hashSet
1384
+
1385
+ Event fired when swiper updates the hash.
1386
+
1387
+ [cols="12a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
1388
+ |===
1389
+ |Usage
1390
+
1391
+ |
1392
+ [source, js]
1393
+ ----
1394
+ const swiper = new Swiper('#swiper_id', {
1395
+ // option settings ...
1396
+ on: {
1397
+ hashSet: (swiper) => {
1398
+ // do something
1399
+ }
1400
+ }
1401
+ });
1402
+ ----
1403
+
1404
+ |===
1405
+
1406
+
1407
+ [role="mt-5"]
1408
+ [[swiper-modules-history-navigation]]
1409
+ === History Navigation
1410
+
1411
+ The History Navigation module in SwiperJS allows you to integrate Swiper
1412
+ with *history* of your browser. This means, when you navigate between slides
1413
+ in your Swiper, the browser's URL will be updated to reflect the current
1414
+ slide. This is useful for:
1415
+
1416
+ Browser back/forward buttons:: Users can navigate through the slides
1417
+ using their browser's back and forward buttons, providing a familiar and
1418
+ intuitive user experience.
1419
+
1420
+ Bookmarking specific slides::
1421
+ Users can easily bookmark a particular slide and return to it later.
1422
+
1423
+ Sharing specific slides::
1424
+ Sharing the URL of a specific slide with others allows them to directly
1425
+ access that slide.
1426
+
1427
+ SEO:: Search engines can index *individual slides* and potentially this may
1428
+ *improve* your website's *search rank*.
1429
+
1430
+ [role="mt-4"]
1431
+ [[swiper-modules-history-navigation-parameters]]
1432
+ ==== Parameters
1433
+
1434
+ Find all parameters available for the *History Navigation* module.
1435
+
1436
+ .History Navigation Parameters
1437
+ [cols="2,2,2,6a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
1438
+ |===
1439
+ |Name |Type |Default |Description \| Example
1440
+
1441
+ |`enabled`
1442
+ |boolean
1443
+ |`false`
1444
+ |Enables the History Plugin.
1445
+
1446
+ |`keepQuery`
1447
+ |boolean
1448
+ |`false`
1449
+ |Keep query parameters when changing browser url.
1450
+
1451
+ |`key`
1452
+ |string
1453
+ |_slides_
1454
+ |URL key for slides.
1455
+
1456
+ |`replaceState`
1457
+ |boolean
1458
+ |`false`
1459
+ |Works in addition to hashnav or history to replace current url state
1460
+ with the new one instead of adding it to history.
1461
+
1462
+ |`root`
1463
+ |string
1464
+ |empty string
1465
+ |swiper page root, useful to specify when you use SwiperJS history mode
1466
+ not on root website page. For example can be `https://my-website.com/` or
1467
+ `https://my-website.com/subpage/` or `/subpage/`
1468
+
1469
+ |===
1470
+
1471
+
1472
+ [role="mt-5"]
1473
+ [[swiper-modules-keyboard-control]]
1474
+ === Keyboard Control
1475
+
1476
+ The Keyboard Control module in SwiperJS enables *navigation* through slides
1477
+ using the keyboard. Here's a breakdown of its key functionalities:
1478
+
1479
+ Default Keys::
1480
+ Typically uses arrow keys (left/right) to navigate between slides.
1481
+
1482
+ Customizable::
1483
+ You can potentially configure it to use other keys if needed.
1484
+
1485
+ Viewport Control::
1486
+ This option allows you to control whether keyboard navigation works only
1487
+ when the SwiperJS instance is within the viewport. This can be useful to
1488
+ prevent *accidental navigation* when the swiper is off-screen.
1489
+
1490
+ [role="mt-4"]
1491
+ [[swiper-modules-keyboard-control-parameters]]
1492
+ ==== Parameters
1493
+
1494
+ Find all parameters available for the *Keyboard Control* module.
1495
+
1496
+ .Keyboard Control Parameters
1497
+ [cols="3,2,3,4a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
1498
+ |===
1499
+ |Name |Type |Default |Description \| Example
1500
+
1501
+ |`enabled`
1502
+ |boolean
1503
+ |`false`
1504
+ |Set to `true` to enable keyboard control.
1505
+
1506
+ |`onlyInViewport`
1507
+ |boolean
1508
+ |`true`
1509
+ |When enabled it will control sliders that are currently in viewport.
1510
+
1511
+ |`pageUpDown`
1512
+ |boolean
1513
+ |`true`
1514
+ |When enabled it will enable keyboard navigation by Page Up and Page Down keys.
1515
+ |===
1516
+
1517
+ [role="mt-4"]
1518
+ [[swiper-modules-keyboard-control-Properties]]
1519
+ ==== Properties
1520
+
1521
+ Find below available *Properties* for the SwiperJS *Keyboard Control* module.
1522
+
1523
+ .Keyboard Control Properties
1524
+ [cols="3,3,6a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
1525
+ |===
1526
+ |Name |Type |Description
1527
+
1528
+ |`enabled`
1529
+ |boolean
1530
+ |Whether the keyboard control is enabled.
1531
+
1532
+ |===
1533
+
1534
+ [role="mt-4"]
1535
+ [[swiper-modules-keyboard-control-methods]]
1536
+ ==== Methods
1537
+
1538
+ Find below available *Methods* for the SwiperJS *Keyboard Control* module.
1539
+
1540
+ .Keyboard Control Methods
1541
+ [cols="3,9a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
1542
+ |===
1543
+ |Method |Description
1544
+
1545
+ |`disable`
1546
+ |Disable keyboard control.
1547
+
1548
+ |`enable`
1549
+ |Enable keyboard control.
1550
+
1551
+ |===
1552
+
1553
+ [role="mt-4"]
1554
+ [[swiper-modules-keyboard-control-events]]
1555
+ ==== Events
1556
+
1557
+ Find below available *Events* for the SwiperJS *Keyboard Control* module.
1558
+
1559
+ [role="mt-4"]
1560
+ [[swiper-modules-keyboard-control-events-keyPress]]
1561
+ ===== keyPress
1562
+
1563
+ Event fired on key press.
1564
+
1565
+ [cols="12a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
1566
+ |===
1567
+ |Usage
1568
+
1569
+ |
1570
+ [source, js]
1571
+ ----
1572
+ const swiper = new Swiper('#swiper_id', {
1573
+ // option settings ...
1574
+ on: {
1575
+ keyPress: (swiper, keyCode) => {
1576
+ // do something
1577
+ }
1578
+ }
1579
+ });
1580
+ ----
1581
+
1582
+ |===
1583
+
1584
+
1585
+ [role="mt-5"]
1586
+ [[swiper-modules-lazy-loading]]
1587
+ === Lazy Loading
1588
+
1589
+ Since version 9 SwiperJSdoesn't have a specific lazy loading API, as it
1590
+ relies on native browser lazy loading feature. To use lazy loading, we
1591
+ just need to set `loading="lazy"` on images and add preloader element:
1592
+
1593
+ [role="mt-4"]
1594
+ .Example
1595
+ [source, html]
1596
+ ----
1597
+ <div class="swiper">
1598
+ <div class="swiper-wrapper">
1599
+ <!-- Lazy image -->
1600
+ <div class="swiper-slide">
1601
+ <img src="path/to/picture-1.jpg" loading="lazy" />
1602
+ <div class="swiper-lazy-preloader"></div>
1603
+ </div>
1604
+ <!-- Lazy image with srcset -->
1605
+ <div class="swiper-slide">
1606
+ <img
1607
+ src="path/to/logo-small.png"
1608
+ srcset="path/to/logo-large.png 2x"
1609
+ loading="lazy"
1610
+ />
1611
+ <div class="swiper-lazy-preloader"></div>
1612
+ </div>
1613
+ </div>
1614
+ </div>
1615
+ ----
1616
+
1617
+ As you see:
1618
+
1619
+ * Lazy image must have `loading="lazy"` attribute
1620
+ * Add animated preloader spinner to slide which will be removed
1621
+ automatically after image loaded:
1622
+
1623
+ [source, html]
1624
+ ----
1625
+ <div class="swiper-lazy-preloader"></div>
1626
+ ----
1627
+
1628
+ Or white one for dark *layout*:
1629
+
1630
+ [source, html]
1631
+ ----
1632
+ <div class="swiper-lazy-preloader swiper-lazy-preloader-white"></div>
1633
+ ----
1634
+
1635
+
1636
+ [role="mt-5"]
1637
+ [[swiper-modules-manipulation]]
1638
+ === Manipulation
1639
+
1640
+ The Manipulation module adds useful methods to SwiperJS for manipulating
1641
+ slides. The module provides methods for dynamically adding, removing, and
1642
+ rearranging slides within the slider.
1643
+
1644
+ [role="mt-4 mb-5"]
1645
+ [NOTE]
1646
+ ====
1647
+ It makes sense to use it only with SwiperJS Core version, amd is *not*
1648
+ intended to be used with SwiperJS Environments like *React* or *Vue*.
1649
+ ====
1650
+
1651
+ [role="mt-4"]
1652
+ [[swiper-modules-manipulation-methods]]
1653
+ ==== Methods
1654
+
1655
+ Find below available *Methods* for the SwiperJS *Manipulation* module.
1656
+
1657
+ .Manipulation Methods
1658
+ [cols="4,8a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
1659
+ |===
1660
+ |Method |Description \| Example
1661
+
1662
+ |`addSlide(index, slides)`
1663
+ |Add new slides to the required index. Slides could be *HTML Element* or
1664
+ *HTML string* with new slide or *array* with such slides.
1665
+
1666
+ [source, js]
1667
+ ----
1668
+ addSlide(1, '<div class="swiper-slide">Slide 10"</div>')
1669
+ addSlide(1, [
1670
+ '<div class="swiper-slide">Slide 10"</div>',
1671
+ '<div class="swiper-slide">Slide 11"</div>'
1672
+ ]);
1673
+ ----
1674
+
1675
+ |`appendSlide(index, slides)`
1676
+ |Add new slides to the end. Slides could be a *HTML Element* or *HTML string*
1677
+ with new slide or *array* with such slides.
1678
+
1679
+ [source, js]
1680
+ ----
1681
+ appendSlide('<div class="swiper-slide">Slide 10"</div>')
1682
+ appendSlide([
1683
+ '<div class="swiper-slide">Slide 10"</div>',
1684
+ '<div class="swiper-slide">Slide 11"</div>'
1685
+ ]);
1686
+ ----
1687
+
1688
+ |`prependSlide(index, slides)`
1689
+ |Add new slides to the beginning. Slides could be *HTML Element* or
1690
+ *HTML string* with new slide or *array* with such slides.
1691
+
1692
+ [source, js]
1693
+ ----
1694
+ prependSlide('<div class="swiper-slide">Slide 0"</div>')
1695
+ prependSlide([
1696
+ '<div class="swiper-slide">Slide 1"</div>',
1697
+ '<div class="swiper-slide">Slide 2"</div>'
1698
+ ]);
1699
+ ----
1700
+
1701
+ |`removeAllSlides(index, slides)`
1702
+ |Remove all slides.
1703
+
1704
+ [source, js]
1705
+ ----
1706
+ removeSlide(0); // remove first slide
1707
+ removeSlide([0, 1]); // remove first and second slides
1708
+ removeAllSlides(); // Remove all slides
1709
+ ----
1710
+
1711
+ |`removeSlide(index, slides)`
1712
+ |Remove selected slides. *SlideIndex* could be a number with slide *index*
1713
+ to remove or *array* with indexes.
1714
+
1715
+ [source, js]
1716
+ ----
1717
+ removeSlide(0); // remove first slide
1718
+ removeSlide([0, 1]); // remove first and second slides
1719
+ removeAllSlides(); // Remove all slides
1720
+ ----
1721
+
1722
+ |===
1723
+
1724
+
1725
+ [role="mt-5"]
1726
+ [[swiper-modules-mousewheel-control]]
1727
+ === Mousewheel Control
1728
+
1729
+ The Mousewheel Control module in SwiperJS enables users to navigate
1730
+ through the slides of a SwiperJS instance using their mouse wheel. Here's a
1731
+ breakdown of its key functionalities:
1732
+
1733
+ Smooth Scrolling::
1734
+ Allows for smooth and intuitive navigation through slides by scrolling
1735
+ the mouse wheel.
1736
+
1737
+ Configurable::
1738
+ Offers options to customize mousewheel behavior, such as:
1739
+
1740
+ * releaseOnEdges: Allows page scrolling when the swiper reaches
1741
+ the beginning or end.
1742
+
1743
+ * invert: Inverts the scrolling direction e.g. for scrolling up moves to
1744
+ the next slide.
1745
+
1746
+ Axis Control::
1747
+ Can be configured to *restrict* mousewheel *scrolling* to a defined
1748
+ axis, e.g. for only *horizontal* scrolling in horizontal mode.
1749
+
1750
+ [role="mt-4"]
1751
+ [[swiper-modules-mousewheel-control-parameters]]
1752
+ ==== Parameters
1753
+
1754
+ Find below available *Parameters* for the SwiperJS *Mousewheel Control* module.
1755
+
1756
+ .Mousewheel Control Parameters
1757
+ [cols="3,2,3,4a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
1758
+ |===
1759
+ |Name |Type |Default |Description
1760
+
1761
+ |`enabled`
1762
+ |boolean
1763
+ |`false`
1764
+ |Set to `true` to enable mousewheel control.
1765
+
1766
+ |`eventsTarget`
1767
+ |string
1768
+ |_container_
1769
+ |String with *CSS selector* or *HTML element* of the container accepting
1770
+ mousewheel events. By default it is swiper.
1771
+
1772
+ |`forceToAxis`
1773
+ |boolean
1774
+ |`false`
1775
+ |Set to `true` to force mousewheel swipes to axis. So in horizontal mode
1776
+ mousewheel will work only with horizontal mousewheel scrolling, and only
1777
+ with vertical scrolling in vertical mode.
1778
+
1779
+ |`invert`
1780
+ |boolean
1781
+ |`false`
1782
+ |Set to `true` to invert sliding direction.
1783
+
1784
+ |`noMousewheelClass`
1785
+ |string
1786
+ |_swiper-no-mousewheel_
1787
+ |Scrolling on elements with this class will be ignored.
1788
+
1789
+ |`releaseOnEdges`
1790
+ |boolean
1791
+ |`false`
1792
+ |Set to `true` and swiper will release mousewheel event and allow page
1793
+ scrolling when swiper is on edge positions (in the beginning or in the
1794
+ end).
1795
+
1796
+ |`sensitivity`
1797
+ |number
1798
+ |1
1799
+ |Multiplier of mousewheel data, allows to tweak mouse wheel sensitivity.
1800
+
1801
+ |`thresholdDelta`
1802
+ |null \| number
1803
+ |null
1804
+ |Minimum mousewheel scroll delta to trigger swiper slide change.
1805
+
1806
+ |`thresholdTime`
1807
+ |null \| number
1808
+ |null
1809
+ |Minimum mousewheel scroll time delta (in ms) to trigger swiper slide change.
1810
+
1811
+ |===
1812
+
1813
+ [role="mt-4"]
1814
+ [[swiper-modules-mousewheel-control-properties]]
1815
+ ==== Properties
1816
+
1817
+ Find below available *Properties* for the SwiperJS *Keyboard Control* module.
1818
+
1819
+ .Mousewheel Control Properties
1820
+ [cols="3,3,6a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
1821
+ |===
1822
+ |Name |Type |Description
1823
+
1824
+ |`enabled`
1825
+ |boolean
1826
+ |Whether the mousewheel control is enabled.
1827
+
1828
+ |===
1829
+
1830
+ [role="mt-4"]
1831
+ [[swiper-modules-mousewheel-control-methods]]
1832
+ ==== Methods
1833
+
1834
+ Find below available *Methods* for the SwiperJS *Mousewheel Control* module.
1835
+
1836
+ .Mousewheel Control Methods
1837
+ [cols="4,8a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
1838
+ |===
1839
+ |Method |Description
1840
+
1841
+ |`disable`
1842
+ |Disable mousewheel control.
1843
+
1844
+ |`enable`
1845
+ |Enable mousewheel control.
1846
+
1847
+ |===
1848
+
1849
+ [role="mt-4"]
1850
+ [[swiper-modules-mousewheel-control-events]]
1851
+ ==== Events
1852
+
1853
+ Find below available *Events* for the SwiperJS *Mousewheel Control* module.
1854
+
1855
+ [role="mt-4"]
1856
+ [[swiper-modules-mousewheel-control-events-scroll]]
1857
+ ===== scroll
1858
+
1859
+ Event fired on mousewheel scroll.
1860
+
1861
+ [cols="12a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
1862
+ |===
1863
+ |Usage
1864
+
1865
+ |
1866
+ [source, js]
1867
+ ----
1868
+ const swiper = new Swiper('#swiper_id', {
1869
+ // option settings ...
1870
+ on: {
1871
+ scroll: (swiper, event) => {
1872
+ // do something
1873
+ }
1874
+ }
1875
+ });
1876
+ ----
1877
+
1878
+ |===
1879
+
1880
+
1881
+ [role="mt-5"]
1882
+ [[swiper-modules-navigation]]
1883
+ === Navigation
1884
+
1885
+ In SwiperJS, the Navigation module provides a way to control the slider's
1886
+ movement using dedicated "next" and "previous" buttons.
1887
+
1888
+ Customizable Buttons::
1889
+ You can use your own HTML elements (like buttons or icons) as navigation
1890
+ controls.
1891
+
1892
+ Flexibility::
1893
+ The module offers options to customize the appearance and behavior of
1894
+ the navigation buttons.
1895
+
1896
+
1897
+ [role="mt-5"]
1898
+ [[swiper-modules-navigation-parameters]]
1899
+ ==== Parameters
1900
+
1901
+ Find all parameters available for the *Navigation* module.
1902
+
1903
+ .Navigation Parameters
1904
+ // [cols="3,2,3,4a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
1905
+ [cols=",,,", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
1906
+ |===
1907
+ |Name |Type |Default |Description
1908
+
1909
+ |`disabledClass`
1910
+ |string
1911
+ |_swiper-button-disabled_
1912
+ |*CSS class name* added to navigation button when it becomes disabled.
1913
+
1914
+ |`enabled`
1915
+ |boolean
1916
+ |*no default*
1917
+ |Boolean property to use with breakpoints to *enable/disable* navigation
1918
+ on certain *breakpoints*
1919
+
1920
+ |`hiddenClass`
1921
+ |string
1922
+ |_swiper-button-hidden_
1923
+ |*CSS class name* added to *navigation button* when it becomes *hidden*.
1924
+
1925
+ |`hideOnClick`
1926
+ |boolean
1927
+ |`false`
1928
+ |*Toggle* navigation *button visibility* after *click* on Slider's container.
1929
+
1930
+ |`lockClass`
1931
+ |string
1932
+ |swiper-button-lock
1933
+ |*CSS class name* added to *navigation button* when it is *disabled*.
1934
+
1935
+ |`navigationDisabledClass`
1936
+ |string
1937
+ |_swiper-navigation-disabled_
1938
+ |*CSS class name* added *on swiper container* when navigation is *disabled*
1939
+ by *breakpoint*
1940
+
1941
+ |`nextEl`
1942
+ |any
1943
+ |null
1944
+ |String with *CSS selector* or *HTML element* of the element that will
1945
+ work like *next button* after click on it.
1946
+
1947
+ |`prevEl`
1948
+ |any
1949
+ |null
1950
+ |String with *CSS selector* or *HTML element* of the element that will
1951
+ work like *prev button* after click on it.
1952
+ |===
1953
+
1954
+ [role="mt-4"]
1955
+ [[swiper-modules-navigation-properties]]
1956
+ ==== Properties
1957
+
1958
+ Find below available *Properties* for the SwiperJS *Navigation* module.
1959
+
1960
+ .Navigation Properties
1961
+ [cols="3,9a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5" mb-5]
1962
+ |===
1963
+ |Name |Description \| Example
1964
+
1965
+ |`nextEl`
1966
+ |HTMLElement of *next* navigation button.
1967
+
1968
+ |`prevEl`
1969
+ |HTMLElement of *previous* navigation button
1970
+
1971
+ |===
1972
+
1973
+ [role="mt-4"]
1974
+ [[swiper-modules-navigation-methods]]
1975
+ ==== Methods
1976
+
1977
+ Find below available *Methods* for the SwiperJS *Navigation* module.
1978
+
1979
+ .Navigation Methods
1980
+ [cols="3,9a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5" mb-5]
1981
+ |===
1982
+ |Name |Description
1983
+
1984
+ |`destroy()`
1985
+ |Destroy navigation.
1986
+
1987
+ |`init()`
1988
+ |Initialize navigation.
1989
+
1990
+ |`update()`
1991
+ |Update navigation buttons state (enabled/disabled).
1992
+
1993
+ |===
1994
+
1995
+ [role="mt-4"]
1996
+ [[swiper-modules-navigation-events]]
1997
+ ==== Events
1998
+
1999
+ Find below available Events for the SwiperJS *Navigation* module.
2000
+
2001
+ [role="mt-4"]
2002
+ [[swiper-modules-navigation-events-navigationHide]]
2003
+ ===== navigationHide
2004
+
2005
+ Event will be fired on *navigation hide*
2006
+
2007
+ [cols="12a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
2008
+ |===
2009
+ |Usage
2010
+
2011
+ |
2012
+ [source, js]
2013
+ ----
2014
+ const swiper = new Swiper('#swiper_id', {
2015
+ // option settings ...
2016
+ on: {
2017
+ navigationHide: (swiper) => {
2018
+ // do something
2019
+ }
2020
+ }
2021
+ });
2022
+ ----
2023
+
2024
+ |===
2025
+
2026
+ [role="mt-4"]
2027
+ [[swiper-modules-navigation-events-navigationNext]]
2028
+ ===== navigationNext
2029
+
2030
+ Event will be fired on *click* the navigation *next button*.
2031
+
2032
+ [cols="12a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
2033
+ |===
2034
+ |Usage
2035
+
2036
+ |
2037
+ [source, js]
2038
+ ----
2039
+ const swiper = new Swiper('#swiper_id', {
2040
+ // option settings ...
2041
+ on: {
2042
+ navigationNext: (swiper) => {
2043
+ // do something
2044
+ }
2045
+ }
2046
+ });
2047
+ ----
2048
+
2049
+ |===
2050
+
2051
+ [role="mt-4"]
2052
+ [[swiper-modules-navigation-events-navigationPrev]]
2053
+ ===== navigationPrev
2054
+
2055
+ Event will be fired on *click* the navigation *prev button*.
2056
+
2057
+ [cols="12a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
2058
+ |===
2059
+ |Usage
2060
+
2061
+ |
2062
+ [source, js]
2063
+ ----
2064
+ const swiper = new Swiper('#swiper_id', {
2065
+ // option settings ...
2066
+ on: {
2067
+ navigationPrev: (swiper) => {
2068
+ // do something
2069
+ }
2070
+ }
2071
+ });
2072
+ ----
2073
+
2074
+ |===
2075
+
2076
+ [role="mt-4"]
2077
+ [[swiper-modules-navigation-events-navigationShow]]
2078
+ ===== navigationShow
2079
+
2080
+ Event will be fired on *navigation show*.
2081
+
2082
+ [cols="12a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
2083
+ |===
2084
+ |Usage
2085
+
2086
+ |
2087
+ [source, js]
2088
+ ----
2089
+ const swiper = new Swiper('#swiper_id', {
2090
+ // option settings ...
2091
+ on: {
2092
+ navigationShow: (swiper) => {
2093
+ // do something
2094
+ }
2095
+ }
2096
+ });
2097
+ ----
2098
+
2099
+ |===
2100
+
2101
+ [role="mt-4"]
2102
+ [[swiper-modules-navigation-css-properties]]
2103
+ ==== CSS Properties
2104
+
2105
+ Find below available *CSS Properties* for the SwiperJS *Navigation* module.
2106
+
2107
+ [source, css]
2108
+ ----
2109
+ {
2110
+ --swiper-navigation-size: 44px;
2111
+ --swiper-navigation-top-offset: 50%;
2112
+ --swiper-navigation-sides-offset: 10px;
2113
+ --swiper-navigation-color: var(--swiper-theme-color);
2114
+ }
2115
+ ----
2116
+
2117
+
2118
+ [role="mt-5"]
2119
+ [[swiper-modules-pagination]]
2120
+ === Pagination
2121
+
2122
+ The Pagination module in SwiperJS is a powerful tool that allows you to add
2123
+ visual indicators (like buttons) to a SwiperJS slide. The navigation elements
2124
+ make it clear to users how many slides there are and which slide they are
2125
+ currently viewing. Here's a breakdown of its key functionalities:
2126
+
2127
+ Active State::
2128
+ The indicator corresponding to the currently active slide is visually
2129
+ highlighted to provide immediate feedback to the user.
2130
+
2131
+ User Interaction::
2132
+ In many cases, the pagination indicators are clickable. Clicking on an
2133
+ indicator will directly navigate the slider to the corresponding slide.
2134
+
2135
+ Visual Indicators::
2136
+ The module generates a set of visual indicators (often small dots or numbers)
2137
+ that represent each slide in your slider.
2138
+
2139
+ [role="mt-4"]
2140
+ [[swiper-modules-pagination-parameters]]
2141
+ ==== Parameters
2142
+
2143
+ Find all parameters available for the *Pagination* module.
2144
+
2145
+ .Pagination Parameters
2146
+ // [cols="2,2,2,6a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
2147
+ [cols=",,,", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
2148
+ |===
2149
+ |Name |Type |Default |Description \| Example
2150
+
2151
+ |`bulletActiveClass`
2152
+ |string
2153
+ |_swiper-pagination-bullet-active_
2154
+ |*CSS class name* of the *active* pagination *bullet*.
2155
+
2156
+ |`bulletClass`
2157
+ |string
2158
+ |_swiper-pagination-bullet_
2159
+ |*CSS class name* of the pagination *bullet*.
2160
+
2161
+ |`bulletElement`
2162
+ |string
2163
+ |_span_
2164
+ |Defines which HTML tag will be used to represent single pagination bullet.
2165
+ Only for pagination type of _bullets_ .
2166
+
2167
+ |`clickable`
2168
+ |boolean
2169
+ |`false`
2170
+ |If `true` then clicking on pagination button will cause transition
2171
+ to appropriate slide. Only for bullets pagination type.
2172
+
2173
+ |`clickableClass`
2174
+ |string
2175
+ |_swiper-pagination-clickable_
2176
+ |*CSS class name* set to pagination if its *clickable*.
2177
+
2178
+ |`currentClass`
2179
+ |string
2180
+ |_swiper-pagination-current_
2181
+ |*CSS class name* of the element with currently active index in
2182
+ *fraction* pagination.
2183
+
2184
+ |`dynamicBullets`
2185
+ |boolean
2186
+ |`false`
2187
+ |Good to enable if you use bullets pagination with a lot of slides.
2188
+ So it will keep only few bullets visible at the same time.
2189
+
2190
+ |`dynamicMainBullets`
2191
+ |number
2192
+ |1
2193
+ |The number of main bullets visible when `dynamicBullets` is enabled.
2194
+
2195
+ |`el`
2196
+ |any
2197
+ |null
2198
+ |String with CSS selector or HTML element of the container with pagination.
2199
+
2200
+ |`enabled`
2201
+ |boolean
2202
+ |*no default*
2203
+ |Boolean property to use with breakpoints to enable/disable pagination
2204
+ on certain breakpoints.
2205
+
2206
+ |`formatFractionCurrent`
2207
+ |function(number)
2208
+ |*no default*
2209
+ |Format fraction pagination current number. Function receives current
2210
+ number, and you need to return formatted value.
2211
+
2212
+ |`formatFractionTotal`
2213
+ |function(number)
2214
+ |*no default*
2215
+ |Format fraction pagination total number. Function receives total number,
2216
+ and you need to return formatted value.
2217
+
2218
+ |`hiddenClass`
2219
+ |string
2220
+ |_swiper-pagination-hidden_
2221
+ |*CSS class name* of pagination when it becomes inactive.
2222
+
2223
+ |`hideOnClick`
2224
+ |boolean
2225
+ |`true`
2226
+ |Toggle (hide/show) pagination container visibility after click on
2227
+ slider's container.
2228
+
2229
+ |`horizontalClass`
2230
+ |string
2231
+ |_swiper-pagination-horizontal_
2232
+ |CSS class name set to pagination in horizontal Swiper.
2233
+
2234
+ |`lockClass`
2235
+ |string
2236
+ |_swiper-pagination-lock_
2237
+ |*CSS class name* set to pagination when it is disabled.
2238
+
2239
+ |`modifierClass`
2240
+ |string
2241
+ |_swiper-pagination-_
2242
+ |The *beginning* of the *modifier CSS class name* that will be added
2243
+ to pagination depending on parameters.
2244
+
2245
+ |`paginationDisabledClass`
2246
+ |string
2247
+ |_swiper-pagination-disabled_
2248
+ |*CSS class name* added on swiper container and pagination element
2249
+ when pagination is disabled by breakpoint.
2250
+
2251
+ |`progressbarFillClass`
2252
+ |string
2253
+ |_swiper-pagination-progressbar-fill_
2254
+ |*CSS class name* of pagination progressbar fill element.
2255
+
2256
+ |`progressbarOpposite`
2257
+ |boolean
2258
+ |`false`
2259
+ |Makes pagination progressbar opposite to Swiper's `direction`
2260
+ parameter, means vertical progressbar for horizontal swiper direction
2261
+ and horizontal progressbar for vertical swiper direction
2262
+
2263
+ |`progressbarOppositeClass`
2264
+ |string
2265
+ |_swiper-pagination-progressbar-opposite_
2266
+ |*CSS class name* of pagination progressbar opposite
2267
+
2268
+ |`renderBullet`
2269
+ |function(args)
2270
+ |*no default*
2271
+ a|This parameter allows totally customize pagination bullets, you need to
2272
+ pass here a function that accepts `index` number of pagination bullet
2273
+ and required element class name (`className`). Only for `'bullets'`
2274
+ pagination type.
2275
+
2276
+ [source, js]
2277
+ ----
2278
+ const swiper = new Swiper('#swiper_id', {
2279
+ //...
2280
+ renderBullet: function (index, className) {
2281
+ return '<span class="' + className + '">' + (index + 1) + '</span>';
2282
+ }
2283
+ });
2284
+ ----
2285
+
2286
+ |`renderCustom`
2287
+ |function(args)
2288
+ |*no default*
2289
+ a|This parameter is required for _custom_ pagination type where you
2290
+ have to specify how it should be rendered.
2291
+
2292
+ [source, js]
2293
+ ----
2294
+ const swiper = new Swiper('#swiper_id', {
2295
+ //...
2296
+ renderCustom: function (swiper, current, total) {
2297
+ return current + ' of ' + total;
2298
+ }
2299
+ });
2300
+ ----
2301
+
2302
+ |`renderFraction`
2303
+ |function(args)
2304
+ |*no default*
2305
+ a|This parameter allows to customize *fraction* pagination html. Only for
2306
+ _fraction_ pagination type.
2307
+
2308
+ [source, js]
2309
+ ----
2310
+ const swiper = new Swiper('#swiper_id', {
2311
+ //...
2312
+ renderFraction: function (currentClass, totalClass) {
2313
+ return '<span class="' + currentClass + '"></span>' +
2314
+ ' of ' +
2315
+ '<span class="' + totalClass + '"></span>';
2316
+ }
2317
+ });
2318
+ ----
2319
+
2320
+ |`renderProgressbar`
2321
+ |function(args)
2322
+ |*no default*
2323
+ a|This parameter allows to customize "progress" pagination. Only for
2324
+ _progress_ pagination type
2325
+
2326
+ [source, js]
2327
+ ----
2328
+ const swiper = new Swiper('#swiper_id', {
2329
+ //...
2330
+ renderProgressbar: function (progressbarFillClass) {
2331
+ return '<span class="' + progressbarFillClass + '"></span>';
2332
+ }
2333
+ });
2334
+ ----
2335
+
2336
+ |`totalClass`
2337
+ |string
2338
+ |_swiper-pagination-total_
2339
+ |*CSS class name* of the element with total number of *snaps* in
2340
+ *fraction* pagination.
2341
+
2342
+ |`type`
2343
+ |string
2344
+ |_bullets_
2345
+ |String with type of pagination. +
2346
+ Can be _bullets_, _fraction_ , _progressbar_ or _custom_.
2347
+
2348
+ |`verticalClass`
2349
+ |string
2350
+ |_swiper-pagination-vertical_
2351
+ |*CSS class name* set to pagination in vertical Swiper.
2352
+
2353
+ |===
2354
+
2355
+ [role="mt-4"]
2356
+ [[swiper-modules-pagination-properties]]
2357
+ ==== Properties
2358
+
2359
+ Find below available *Properties* for the SwiperJS *Pagination* module.
2360
+
2361
+ .Pagination Properties
2362
+ [cols="3,9a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5" mb-5]
2363
+ |===
2364
+ |Property |Description \| Example
2365
+
2366
+ |`bullets`
2367
+ |Array of pagination bullets HTML elements. To get specific slide
2368
+ HTMLElement use `swiper.pagination.bullets[1]`.
2369
+
2370
+ |`el`
2371
+ |HTMLElement of pagination container element.
2372
+
2373
+ |===
2374
+
2375
+ [role="mt-4"]
2376
+ [[swiper-modules-pagination-methods]]
2377
+ ==== Methods
2378
+
2379
+ Find below available *Methods* for the SwiperJS *Pagination* module.
2380
+
2381
+ .Pagination Methods
2382
+ [cols="3,9a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5" mb-5]
2383
+ |===
2384
+ |Method |Description
2385
+
2386
+ |`destroy`
2387
+ |Destroy pagination.
2388
+
2389
+ |`init`
2390
+ |Initialize pagination.
2391
+
2392
+ |`render`
2393
+ |Render pagination layout.
2394
+
2395
+ |`update`
2396
+ |Update pagination state of *enabled* \| *disabled* \| *active*.
2397
+ |===
2398
+
2399
+ [role="mt-4"]
2400
+ [[swiper-modules-pagination-events]]
2401
+ ==== Events
2402
+
2403
+ Find below available *Events* for the SwiperJS *Pagination* module.
2404
+
2405
+ [role="mt-4"]
2406
+ [[swiper-modules-pagination-events-paginationHide]]
2407
+ ===== paginationHide
2408
+
2409
+ Event will be fired on pagination hide.
2410
+
2411
+ [cols="12a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
2412
+ |===
2413
+ |Usage
2414
+
2415
+ |
2416
+ [source, js]
2417
+ ----
2418
+ const swiper = new Swiper('#swiper_id', {
2419
+ // option settings ...
2420
+ on: {
2421
+ paginationHide: (swiper) => {
2422
+ // do something
2423
+ }
2424
+ }
2425
+ });
2426
+ ----
2427
+
2428
+ |===
2429
+
2430
+ [role="mt-4"]
2431
+ [[swiper-modules-pagination-events-paginationRender]]
2432
+ ===== paginationRender
2433
+
2434
+ Event will be fired after pagination rendered.
2435
+
2436
+ [cols="12a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
2437
+ |===
2438
+ |Usage
2439
+
2440
+ |
2441
+ [source, js]
2442
+ ----
2443
+ const swiper = new Swiper('#swiper_id', {
2444
+ // option settings ...
2445
+ on: {
2446
+ paginationRender: (swiper) => {
2447
+ // do something
2448
+ }
2449
+ }
2450
+ });
2451
+ ----
2452
+
2453
+ |===
2454
+
2455
+ [role="mt-4"]
2456
+ [[swiper-modules-pagination-events-paginationShow]]
2457
+ ===== paginationShow
2458
+
2459
+ Event will be fired when pagination is *shown*.
2460
+
2461
+ [NOTE]
2462
+ ====
2463
+ Receives *paginationEl* event as an *argument*.
2464
+ ====
2465
+
2466
+ [cols="12a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
2467
+ |===
2468
+ |Usage
2469
+
2470
+ |
2471
+ [source, js]
2472
+ ----
2473
+ const swiper = new Swiper('#swiper_id', {
2474
+ // option settings ...
2475
+ on: {
2476
+ paginationShow: (swiper, paginationEl) => {
2477
+ // do something
2478
+ }
2479
+ }
2480
+ });
2481
+ ----
2482
+
2483
+ |===
2484
+
2485
+ [role="mt-4"]
2486
+ [[swiper-modules-pagination-events-paginationUpdate]]
2487
+ ===== paginationUpdate
2488
+
2489
+ Event will be fired when pagination updated
2490
+
2491
+ [NOTE]
2492
+ ====
2493
+ Receives *paginationEl* event as an *argument*.
2494
+ ====
2495
+
2496
+ [cols="12a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
2497
+ |===
2498
+ |Usage
2499
+
2500
+ |
2501
+ [source, js]
2502
+ ----
2503
+ const swiper = new Swiper('#swiper_id', {
2504
+ // option settings ...
2505
+ on: {
2506
+ paginationUpdate: (swiper, paginationEl) => {
2507
+ // do something
2508
+ }
2509
+ }
2510
+ });
2511
+ ----
2512
+
2513
+ |===
2514
+
2515
+ [role="mt-4"]
2516
+ [[swiper-modules-pagination-css-properties]]
2517
+ ==== CSS Properties
2518
+
2519
+ Find below available *CSS Properties* for the SwiperJS *Pagination* module.
2520
+
2521
+ [source, css]
2522
+ ----
2523
+ {
2524
+ --swiper-pagination-color: var(--swiper-theme-color);
2525
+ --swiper-pagination-left: auto;
2526
+ --swiper-pagination-right: 8px;
2527
+ --swiper-pagination-bottom: 8px;
2528
+ --swiper-pagination-top: auto;
2529
+ --swiper-pagination-fraction-color: inherit;
2530
+ --swiper-pagination-progressbar-bg-color: rgba(0, 0, 0, 0.25);
2531
+ --swiper-pagination-progressbar-size: 4px;
2532
+ --swiper-pagination-bullet-size: 8px;
2533
+ --swiper-pagination-bullet-width: 8px;
2534
+ --swiper-pagination-bullet-height: 8px;
2535
+ --swiper-pagination-bullet-inactive-color: #000;
2536
+ --swiper-pagination-bullet-inactive-opacity: 0.2;
2537
+ --swiper-pagination-bullet-opacity: 1;
2538
+ --swiper-pagination-bullet-horizontal-gap: 4px;
2539
+ --swiper-pagination-bullet-vertical-gap: 6px;
2540
+ }
2541
+ ----
2542
+
2543
+
2544
+ [role="mt-5"]
2545
+ [[swiper-modules-parallax]]
2546
+ === Parallax
2547
+
2548
+ The SwiperJS parallax module supports parallax transition effects for
2549
+ swiper/slides nested elements. There are two types of parallax elements
2550
+ supported:
2551
+
2552
+ * Direct child elements of `swiper`. Parallax effect for such elements
2553
+ will depend on total slider progress. Useful for parallax backgrounds.
2554
+
2555
+ * Slides child elements. Parallax effect for such elements will depend
2556
+ on slide progress
2557
+
2558
+ To enable parallax effects you need to init SwiperJS instance with passed
2559
+ `parallax: true` parameter and add one of the following (or mix)
2560
+ attributes to required elements:
2561
+
2562
+ * `data-swiper-parallax`, enable transform-translate parallax transition.
2563
+ This attribute may accept:
2564
+
2565
+ ** `number`, value in px (as for title, subtitle in example above) to
2566
+ move element depending on progress. In this case such element will be
2567
+ moved on ± this value in px depending on slide position (next or
2568
+ previous)
2569
+
2570
+ ** `percentage`, (as for "parallax-bg") to move element depending on
2571
+ progress and on its size. In this case such element will be moved
2572
+ on ± this percentage of its size (width in horizontal direction,
2573
+ and height in vertical direction) depending on slide position
2574
+ (next or previous). So if element has 400px width and you specified
2575
+ data-swiper-parallax="50%" then it will be moved on ± 200px
2576
+
2577
+ * `data-swiper-parallax-x`, same but for x-axis direction
2578
+ * `data-swiper-parallax-y`, same but for y-axis direction
2579
+ * `data-swiper-parallax-scale`, scale ratio of the parallax element
2580
+ when it is in "inactive" (not on active slide) state
2581
+ * `data-swiper-parallax-opacity`, opacity of the parallax element
2582
+ when it is in "inactive" (not on active slide) state
2583
+ * `data-swiper-parallax-duration`, custom transition duration for
2584
+ parallax elements
2585
+
2586
+ [role="mt-4"]
2587
+ .Example
2588
+ [source, html]
2589
+ ----
2590
+ <div class="swiper">
2591
+ <!-- Parallax background element -->
2592
+ <div
2593
+ class="parallax-bg"
2594
+ style="background-image:url(path/to/image.jpg)"
2595
+ data-swiper-parallax="-23%"
2596
+ ></div>
2597
+ <div class="swiper-wrapper">
2598
+ <div class="swiper-slide">
2599
+ <!-- Each slide has parallax title -->
2600
+ <div class="title" data-swiper-parallax="-100">Slide 1</div>
2601
+ <!-- Parallax subtitle -->
2602
+ <div class="subtitle" data-swiper-parallax="-200">Subtitle</div>
2603
+ <!-- And parallax text with custom transition duration -->
2604
+ <div
2605
+ class="text"
2606
+ data-swiper-parallax="-300"
2607
+ data-swiper-parallax-duration="600"
2608
+ >
2609
+ <p>Lorem ipsum dolor sit amet, ...</p>
2610
+ </div>
2611
+ <!-- Opacity parallax -->
2612
+ <div data-swiper-parallax-opacity="0.5">I will change opacity</div>
2613
+ <!-- Scale parallax -->
2614
+ <div data-swiper-parallax-scale="0.15">I will change scale</div>
2615
+ </div>
2616
+ ...
2617
+ </div>
2618
+ </div>
2619
+ ----
2620
+
2621
+ [role="mt-4"]
2622
+ [[swiper-modules-parallax-parameters]]
2623
+ ==== Parameters
2624
+
2625
+ Find all parameters available for the *Parallax* module.
2626
+
2627
+ .Parallax Parameters
2628
+ [cols="3,2,3,4a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
2629
+ |===
2630
+ |Name |Type |Default |Description
2631
+
2632
+ |`enabled`
2633
+ |boolean
2634
+ |`false`
2635
+ |Enable, if you want to use *parallaxed* elements inside of slider.
2636
+ |===
2637
+
2638
+
2639
+ [role="mt-5"]
2640
+ [[swiper-modules-scrollbar]]
2641
+ === Scrollbar
2642
+
2643
+ The Scrollbar module in SwiperJS is a powerful tool that enhances user
2644
+ interaction and provides visual feedback within your slider. Here's a
2645
+ breakdown of its key functionalities:
2646
+
2647
+ Visual Indicator::
2648
+ The module renders a visual scrollbar that dynamically reflects the
2649
+ slider's current position. This provides users with a clear understanding
2650
+ of where they are within the overall content.
2651
+
2652
+ Draggable Interaction::
2653
+ The scrollbar can be made draggable, allowing users to directly control
2654
+ the slider's position by moving the scrollbar handle. This offers an
2655
+ alternative navigation method to swiping or clicking.
2656
+
2657
+ Customization::
2658
+ You can extensively customize the appearance and behavior of the scrollbar
2659
+ to match your project's design. This includes options for size, color,
2660
+ position, and more.
2661
+
2662
+ [role="mt-4"]
2663
+ [[swiper-modules-scrollbar-parameters]]
2664
+ ==== Parameters
2665
+
2666
+ Find all parameters available for the *Scrollbar* module.
2667
+
2668
+ .Scrollbar Parameters
2669
+ // [cols="3,2,3,4a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
2670
+ [cols=",,,", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
2671
+ |===
2672
+ |Name |Type |Default |Description
2673
+
2674
+ |`dragClass`
2675
+ |string
2676
+ |_swiper-scrollbar-drag_
2677
+ |Scrollbar draggable element *CSS class*.
2678
+
2679
+ |`dragSize`
2680
+ |number \| _auto_
2681
+ |_auto_
2682
+ |*Size* of scrollbar *draggable element* in px.
2683
+
2684
+ |`draggable`
2685
+ |boolean
2686
+ |`false`
2687
+ |Set to `true` to enable make *scrollbar draggable* that allows you to
2688
+ control slider position.
2689
+
2690
+ |`el`
2691
+ |any
2692
+ |null
2693
+ |String with *CSS selector* or *HTML element* of the container with scrollbar.
2694
+
2695
+ |`enabled`
2696
+ |boolean
2697
+ |*no default*
2698
+ |Boolean property to use with breakpoints to enable \| disable *scrollbar*
2699
+ on certain *breakpoints*.
2700
+
2701
+ |`hide`
2702
+ |boolean
2703
+ |`true`
2704
+ |Hide scrollbar automatically *after* user interaction.
2705
+
2706
+ |`horizontalClass`
2707
+ |string
2708
+ |_swiper-scrollbar-horizontal_
2709
+ |*CSS class name* set to scrollbar in *horizontal* Swiper.
2710
+
2711
+ |`lockClass`
2712
+ |string
2713
+ |_swiper-scrollbar-lock_
2714
+ |Scrollbar element additional CSS class when it is disabled.
2715
+
2716
+ |`scrollbarDisabledClass`
2717
+ |string
2718
+ |_swiper-scrollbar-disabled_
2719
+ |*CSS class name* added on swiper container and scrollbar element when
2720
+ scrollbar is *disabled* by *breakpoint*.
2721
+
2722
+ |`snapOnRelease`
2723
+ |boolean
2724
+ |`false`
2725
+ |Set to `true` to snap slider position to slides when you release scrollbar.
2726
+
2727
+ |`verticalClass`
2728
+ |string
2729
+ |_swiper-scrollbar-vertical_
2730
+ |*CSS class name* set to scrollbar in *vertical* Swiper.
2731
+ |===
2732
+
2733
+ [role="mt-4"]
2734
+ [[swiper-modules-scrollbar-properties]]
2735
+ ==== Properties
2736
+
2737
+ Find below available *Properties* for the SwiperJS *Scrollbar* module.
2738
+
2739
+ .Scrollbar Properties
2740
+ [cols="3,9a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5" mb-5]
2741
+ |===
2742
+ |Property |Description
2743
+
2744
+ |`dragEl`
2745
+ |*HTML Element* of Scrollbar *draggable handler* element.
2746
+
2747
+ |`el`
2748
+ |HTML Element of Scrollbar *container* element.
2749
+
2750
+ |===
2751
+
2752
+
2753
+ [role="mt-4"]
2754
+ [[swiper-modules-scrollbar-methods]]
2755
+ ==== Methods
2756
+
2757
+ Find below available *Methods* for the SwiperJS *Scrollbar* module.
2758
+
2759
+ .Scrollbar Methods
2760
+ [cols="3,9a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5" mb-5]
2761
+ |===
2762
+ |Name |Description
2763
+
2764
+ |`destroy`
2765
+ |Destroy *scrollbar*.
2766
+
2767
+ |`init`
2768
+ |Initialize *scrollbar*.
2769
+
2770
+ |`setTranslate`
2771
+ |Updates *scrollbar translate*.
2772
+
2773
+ |`updateSize`
2774
+ |Updates scrollbar *track and handler* sizes.
2775
+
2776
+ |===
2777
+
2778
+ [role="mt-4"]
2779
+ [[swiper-modules-scrollbar-events]]
2780
+ ==== Events
2781
+
2782
+ [role="mt-4"]
2783
+ [[swiper-modules-event-scrollbarDragEnd]]
2784
+ ===== scrollbarDragEnd
2785
+
2786
+ Event fired on draggable scrollbar *drag end*.
2787
+
2788
+ [NOTE]
2789
+ ====
2790
+ Receives *scrollbar event* as an *argument*.
2791
+ ====
2792
+
2793
+ [cols="12a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
2794
+ |===
2795
+ |Usage
2796
+
2797
+ |
2798
+ [source, js]
2799
+ ----
2800
+ const swiper = new Swiper('#swiper_id', {
2801
+ // option settings ...
2802
+ on: {
2803
+ scrollbarDragEnd: (swiper, event) => {
2804
+ // do something
2805
+ }
2806
+ }
2807
+ });
2808
+ ----
2809
+
2810
+ |===
2811
+
2812
+ [role="mt-4"]
2813
+ [[swiper-modules-event-scrollbarDragMove]]
2814
+ ===== scrollbarDragMove
2815
+
2816
+ Event will be fired on draggable scrollbar *drag move*.
2817
+
2818
+ [NOTE]
2819
+ ====
2820
+ Receives *scrollbar event* as an *argument*.
2821
+ ====
2822
+
2823
+ [cols="12a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
2824
+ |===
2825
+ |Usage
2826
+
2827
+ |
2828
+ [source, js]
2829
+ ----
2830
+ const swiper = new Swiper('#swiper_id', {
2831
+ // option settings ...
2832
+ on: {
2833
+ scrollbarDragMove: (swiper, event) => {
2834
+ // do something
2835
+ }
2836
+ }
2837
+ });
2838
+ ----
2839
+
2840
+ |===
2841
+
2842
+ [role="mt-4"]
2843
+ [[swiper-modules-event-scrollbarDragStart]]
2844
+ ===== scrollbarDragStart
2845
+
2846
+ Event will be fired on draggable scrollbar *drag start*.
2847
+
2848
+ [NOTE]
2849
+ ====
2850
+ Receives *scrollbar event* as an *argument*.
2851
+ ====
2852
+
2853
+ [cols="12a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
2854
+ |===
2855
+ |Usage
2856
+
2857
+ |
2858
+ [source, js]
2859
+ ----
2860
+ const swiper = new Swiper('#swiper_id', {
2861
+ // option settings ...
2862
+ on: {
2863
+ scrollbarDragStart: (swiper, event) => {
2864
+ // do something
2865
+ }
2866
+ }
2867
+ });
2868
+ ----
2869
+
2870
+ |===
2871
+
2872
+ [role="mt-4"]
2873
+ [[swiper-modules-scrollbar-css-properties]]
2874
+ ==== CSS Properties
2875
+
2876
+ [source, css]
2877
+ ----
2878
+ {
2879
+ --swiper-scrollbar-border-radius: 10px;
2880
+ --swiper-scrollbar-top: auto;
2881
+ --swiper-scrollbar-bottom: 4px;
2882
+ --swiper-scrollbar-left: auto;
2883
+ --swiper-scrollbar-right: 4px;
2884
+ --swiper-scrollbar-sides-offset: 1%;
2885
+ --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1);
2886
+ --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5);
2887
+ --swiper-scrollbar-size: 4px;
2888
+ }
2889
+ ----
2890
+
2891
+
2892
+ [role="mt-5"]
2893
+ [[swiper-modules-thumbs]]
2894
+ === Thumbs
2895
+
2896
+ In SwiperJS, the Thumbs module enables to create a *thumbnail* navigation
2897
+ (slave) for (master) sliders.
2898
+
2899
+ In addition to the SwiperJS <<Controller>> module the API comes with the
2900
+ *Thumbs module* that is designed to work with a additional (slave)
2901
+ *thumbs swiper* for a *more correct* way for *syncing* two swipers.
2902
+
2903
+ [role="mt-4"]
2904
+ [[swiper-modules-thumbs-parameters]]
2905
+ ==== Parameters
2906
+
2907
+ Find all parameters available for the *Thumbs* module.
2908
+
2909
+ .Thumbs Parameters
2910
+ [cols="3,2,3,4a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
2911
+ |===
2912
+ |Name |Type |Default |Description
2913
+
2914
+ |`autoScrollOffset`
2915
+ |number
2916
+ |0
2917
+ |Allows to set on which thumbs active slide from edge it should automatically
2918
+ move scroll thumbs. For example, if set to 1 and last visible thumb will be
2919
+ activated (1 from edge) it will auto scroll thumbs.
2920
+
2921
+ |`multipleActiveThumbs`
2922
+ |boolean
2923
+ |`true`
2924
+ |When enabled multiple thumbnail slides may get activated.
2925
+
2926
+ |`slideThumbActiveClass`
2927
+ |string
2928
+ |_swiper-slide-thumb-active_
2929
+ |Additional class that will be added to activated thumbs swiper slide.
2930
+
2931
+ |`swiper`
2932
+ |any
2933
+ |null
2934
+ |SwiperJS instance of swiper used as thumbs or object with SwiperJS API
2935
+ parameters to initialize thumbs swiper.
2936
+
2937
+ |`thumbsContainerClass`
2938
+ |string
2939
+ |_swiper-thumbs_
2940
+ |Additional class that will be added to thumbs swiper
2941
+
2942
+ |===
2943
+
2944
+ [role="mt-4"]
2945
+ [[swiper-modules-thumbs-properties]]
2946
+ ==== Properties
2947
+
2948
+ Find below available *Properties* for the SwiperJS *Thumbs* module.
2949
+
2950
+ .Thumbs Properties
2951
+ [cols="3,3,6a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
2952
+ |===
2953
+ |Name |Type |Description
2954
+
2955
+ |`swiper`
2956
+ |any
2957
+ |SwiperJS instance of thumbs swiper.
2958
+
2959
+ |===
2960
+
2961
+ [role="mt-4"]
2962
+ [[swiper-modules-thumbs-methods]]
2963
+ ==== Methods
2964
+
2965
+ Find below available *Methods* for the SwiperJS *Thumbs* module.
2966
+
2967
+ [role="mt-4"]
2968
+ [[swiper-modules-thumbs-methods-init]]
2969
+ ===== init
2970
+
2971
+ Initialize thumbs.
2972
+
2973
+ [cols="12a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
2974
+ |===
2975
+ |Usage
2976
+
2977
+ |
2978
+ [source, js]
2979
+ ----
2980
+ const swiper = new Swiper('#swiper_id', {
2981
+ // option settings ...
2982
+ on: {
2983
+ init: (swiper) => {
2984
+ // do something
2985
+ }
2986
+ }
2987
+ });
2988
+ ----
2989
+
2990
+ |===
2991
+
2992
+ [role="mt-4"]
2993
+ [[swiper-modules-thumbs-methods-update]]
2994
+ ===== update
2995
+
2996
+ Update thumbs.
2997
+
2998
+ [cols="12a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
2999
+ |===
3000
+ |Usage
3001
+
3002
+ |
3003
+ [source, js]
3004
+ ----
3005
+ const swiper = new Swiper('#swiper_id', {
3006
+ // option settings ...
3007
+ on: {
3008
+ update: (initial) => {
3009
+ // do something
3010
+ }
3011
+ }
3012
+ });
3013
+ ----
3014
+
3015
+ |===
3016
+
3017
+
3018
+ [role="mt-5"]
3019
+ [[swiper-modules-virtual-slides]]
3020
+ === Virtual Slides
3021
+
3022
+ Virtual Slides module allows to keep just required amount of slides in
3023
+ DOM. It is very useful in terms in performance and memory issues if you
3024
+ have a lot of slides, especially slides with heavyweight DOM tree or
3025
+ images.
3026
+
3027
+ [NOTE]
3028
+ ====
3029
+ Virtual Slides *doesn't work* with *Grid* module and if parameter
3030
+ `slidesPerView` is set to _auto_.
3031
+ ====
3032
+
3033
+ [role="mt-4"]
3034
+ [[swiper-modules-virtual-slides-parameters]]
3035
+ ==== Parameters
3036
+
3037
+ Find all parameters available for the *Virtual Slides* module.
3038
+
3039
+ .Virtual Slides Parameters
3040
+ [cols="3,2,3,4a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
3041
+ |===
3042
+ |Name |Type |Default |Description
3043
+
3044
+ |`addSlidesAfter`
3045
+ |number
3046
+ |0
3047
+ |Increases amount of pre-rendered slides after active slide.
3048
+
3049
+ |`addSlidesBefore`
3050
+ |number
3051
+ |0
3052
+ |Increases amount of pre-rendered slides before active slide.
3053
+
3054
+ |`cache`
3055
+ |boolean
3056
+ |`true`
3057
+ |Enables DOM cache of rendering slides html elements. Once rendered,
3058
+ they will be saved to cache and reused from it.
3059
+
3060
+ |`enabled`
3061
+ |boolean
3062
+ |`false`
3063
+ |Whether the virtual slides are enabled.
3064
+
3065
+ |`renderExternal`
3066
+ |function(data)
3067
+ |*no default*
3068
+ |Function for external rendering (e.g. using some other library to handle
3069
+ DOM manipulations and state like *React.js* or *Vue.js*). As an argument it
3070
+ accepts `data` object with the following properties:
3071
+
3072
+ * `offset`, slides left/top offset in px
3073
+ * `from`, index of first slide required to be rendered
3074
+ * `to`, index of last slide required to be rendered
3075
+ * `slides`, array with slide items to be rendered
3076
+
3077
+ |`renderExternalUpdate`
3078
+ |boolean
3079
+ |`true`
3080
+ |When enabled (by default) it will update swiper layout right after
3081
+ renderExternal called. Useful to disable and update swiper manually when
3082
+ used with render libraries that renders asynchronously
3083
+
3084
+ |`renderSlide`
3085
+ |function(slide, index)
3086
+ |*no default*
3087
+ |Function to render slide. As an argument it accepts current slide item
3088
+ for `slides` array and index number of the current slide. Function must
3089
+ return an outer HTML of the swiper slide or slide HTML element.
3090
+
3091
+ |`slides`
3092
+ |Text[]
3093
+ |[]
3094
+ |Array with slides.
3095
+
3096
+ |===
3097
+
3098
+ [cols="3,3,6a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5" mb-5]
3099
+ |===
3100
+ |Name |Type |Description
3101
+
3102
+ |`cache`
3103
+ |object
3104
+ |Object with cached slides HTML elements.
3105
+
3106
+ |`from`
3107
+ |number
3108
+ |Index of first rendered slide.
3109
+
3110
+ |`slides`
3111
+ |Text[]
3112
+ |Array with slide items passed by `virtual.slides` parameter.
3113
+
3114
+ |`to`
3115
+ |number
3116
+ |Index of last rendered slide.
3117
+
3118
+ |===
3119
+
3120
+ [role="mt-4"]
3121
+ [[swiper-modules-virtual-slides-methods]]
3122
+ ==== Methods
3123
+
3124
+ Find below available *Methods* for the SwiperJS *Virtual Slides* module.
3125
+
3126
+ .Virtual Slides Methods
3127
+ [cols="3,9a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5" mb-5]
3128
+ |===
3129
+ |Name |Description
3130
+
3131
+ |`appendSlide(slide)`
3132
+ |Append slide. Slides defined by `slides` can be a single slide item or
3133
+ an array with such slides.
3134
+
3135
+ [CAUTION]
3136
+ ====
3137
+ Only for *Core* version. In *React* & *Vue* it should be done by modifying
3138
+ slides array/data/source.
3139
+ ====
3140
+
3141
+ |`prependSlide(slide)`
3142
+ |Prepend slide. Slides defined by `slides` can be a single slide item or
3143
+ an array with such slides.
3144
+
3145
+ [CAUTION]
3146
+ ====
3147
+ Only for *Core* version. In *React* & *Vue* it should be done by modifying
3148
+ slides array/data/source.
3149
+ ====
3150
+
3151
+ |`removeAllSlides`
3152
+ | Remove all slides.
3153
+
3154
+ [CAUTION]
3155
+ ====
3156
+ Only for *Core* version. In *React* & *Vue* it should be done by modifying
3157
+ slides array/data/source.
3158
+ ====
3159
+
3160
+ |`removeSlide(slideIndexes)`
3161
+ |Remove specific slide or slides. Index defined by `slideIndexes` can be
3162
+ a number with slide index to remove or an array with indexes.
3163
+
3164
+ [CAUTION]
3165
+ ====
3166
+ Only for *Core* version. In *React* & *Vue* it should be done by modifying
3167
+ slides array/data/source.
3168
+ ====
3169
+
3170
+ |`update(force)`
3171
+ |Update virtual slides state.
3172
+ |===
3173
+
3174
+ [role="mt-4"]
3175
+ [[swiper-modules-virtual-slides-dom]]
3176
+ ==== DOM
3177
+
3178
+ Since version 9, SwiperJS virtual slides can work with slides originally
3179
+ rendered in DOM. On initialize it will remove them from DOM, cache and
3180
+ then re-use the ones which are required:
3181
+
3182
+ [source, html]
3183
+ ----
3184
+ <div class="swiper">
3185
+ <div class="swiper-wrapper">
3186
+ <div class="swiper-slide">Slide 1</div>
3187
+ <div class="swiper-slide">Slide 2</div>
3188
+ ...
3189
+ <div class="swiper-slide">Slide 100</div>
3190
+ </div>
3191
+ </div>
3192
+
3193
+ <script>
3194
+ const swiper = new Swiper('#swiper_id', {
3195
+ virtual: {
3196
+ enabled: true
3197
+ }
3198
+ });
3199
+ </script>
3200
+ ----
3201
+
3202
+
3203
+ [role="mt-5"]
3204
+ [[swiper-modules-zoom]]
3205
+ === Zoom
3206
+
3207
+ SwiperJS supports a Zoom functionality on images (similar to what you see
3208
+ on iOS when browsing single photo) where you can zoom-in image by pinch
3209
+ gesture and or by zoom-in/zoom-out by double tap on it. In this case,
3210
+ a additional layout is required:
3211
+
3212
+ .Example
3213
+ [role="mt-4 mb-4"]
3214
+ [source, html]
3215
+ ----
3216
+ <div class="swiper">
3217
+ <div class="swiper-wrapper">
3218
+ <div class="swiper-slide">
3219
+ <div class="swiper-zoom-container">
3220
+ <img src="path/to/image1.jpg" />
3221
+ </div>
3222
+ </div>
3223
+ <div class="swiper-slide">
3224
+ <div class="swiper-zoom-container">
3225
+ <img src="path/to/image2.jpg" />
3226
+ </div>
3227
+ </div>
3228
+ <div class="swiper-slide">Plain slide with text</div>
3229
+ <div class="swiper-slide">
3230
+ <!-- Override maxRatio parameter -->
3231
+ <div class="swiper-zoom-container" data-swiper-zoom="5">
3232
+ <img src="path/to/image1.jpg" />
3233
+ </div>
3234
+ </div>
3235
+ </div>
3236
+ </div>
3237
+ ----
3238
+
3239
+ All *zoomable* images should be wrapped with the div with
3240
+ _swiper-zoom-container_ class. By default it expects to zoom one of
3241
+ the `img`, `picture` or `canvas` element. If you want to make zoom on
3242
+ some other custom element, then just add _swiper-zoom-target_ class to
3243
+ this element.
3244
+
3245
+ .Example
3246
+ [source, html]
3247
+ ----
3248
+ <div class="swiper">
3249
+ <div class="swiper-wrapper">
3250
+ <div class="swiper-slide">
3251
+ <div class="swiper-zoom-container">
3252
+ <!-- custom zoomable element -->
3253
+ <div
3254
+ class="swiper-zoom-target"
3255
+ style="background-image: url(...)"
3256
+ ></div>
3257
+ </div>
3258
+ </div>
3259
+ </div>
3260
+ </div>
3261
+ ----
3262
+
3263
+ You can override `maxRatio` parameter for specific slides by using
3264
+ `data-swiper-zoom` attribute on zoom container.
3265
+
3266
+ [role="mt-4"]
3267
+ [[swiper-modules-zoom-parameters]]
3268
+ ==== Parameters
3269
+
3270
+ Find all parameters available for the *Zoom* module.
3271
+
3272
+ .Zoom Parameters
3273
+ [cols="3,2,3,4a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
3274
+ |===
3275
+ |Name |Type |Default |Description
3276
+
3277
+ |`containerClass`
3278
+ |string
3279
+ |_swiper-zoom-container_
3280
+ |*CSS class name* of zoom container.
3281
+
3282
+ |`limitToOriginalSize`
3283
+ |boolean
3284
+ |`false`
3285
+ |When set to true, the image will not be scaled past 100% of its
3286
+ original size.
3287
+
3288
+ |`maxRatio`
3289
+ |number
3290
+ |3
3291
+ |Maximum image zoom multiplier.
3292
+
3293
+ |`minRatio`
3294
+ |number
3295
+ |1
3296
+ |Minimal image zoom multiplier.
3297
+
3298
+ |`panOnMouseMove`
3299
+ |boolean
3300
+ |`false`
3301
+ |When set to true, a zoomed in image will automatically pan while moving
3302
+ the mouse over the image.
3303
+
3304
+ |`toggle`
3305
+ |boolean
3306
+ |`true`
3307
+ |Enable/disable zoom-in by slide's double tap.
3308
+
3309
+ |`zoomedSlideClass`
3310
+ |string
3311
+ |_swiper-slide-zoomed_
3312
+ |CSS class name of zoomed in container.
3313
+
3314
+ |===
3315
+
3316
+ [role="mt-4"]
3317
+ [[swiper-modules-zoom-properties]]
3318
+ ==== Properties
3319
+
3320
+ Find below available *Properties* for the SwiperJS *Zoom* module.
3321
+
3322
+ .Zoom Properties
3323
+ [cols="3,3,6a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
3324
+ |===
3325
+ |Name |Type |Description
3326
+
3327
+ |`enabled`
3328
+ |boolean
3329
+ |Whether the zoom module is enabled.
3330
+
3331
+ |`scale`
3332
+ |number
3333
+ |Current image scale ratio.
3334
+
3335
+ |===
3336
+
3337
+ [role="mt-4"]
3338
+ [[swiper-modules-zoom-methods]]
3339
+ ==== Methods
3340
+
3341
+ Find below available *Methods* for the SwiperJS *Zoom* module.
3342
+
3343
+ .Zoom Methods
3344
+ [cols="3,9a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5" mb-5]
3345
+ |===
3346
+ |Name |Description
3347
+
3348
+ |`disable`
3349
+ |Disable the Zoom module.
3350
+
3351
+ |`enable`
3352
+ |Enable the Zoom module.
3353
+
3354
+ |`in(ratio)`
3355
+ |Zoom in the image of the currently *active slide*. Optionally accepts
3356
+ *custom zoom ratio*.
3357
+
3358
+ |`out`
3359
+ |Zoom out the image of the currently *active slide*.
3360
+
3361
+ |`toggle(event)`
3362
+ |Toggle image zoom of the currently *active slide*.
3363
+
3364
+ |===
3365
+
3366
+ [role="mt-4"]
3367
+ [[swiper-modules-zoom-events]]
3368
+ ==== Events
3369
+
3370
+ The module allows you to zoom in and out of images *within* a slider.
3371
+ *Zoom Events* likely refers to *custom events* you might create or utilize
3372
+ within a SwiperJS implementation to:
3373
+
3374
+ * Trigger actions when zooming begins, ends, or changes.
3375
+ * Coordinate with other parts of your application based on zoom levels.
3376
+ * Enhance user interactions with dynamic effects or UI updates.
3377
+
3378
+ [role="mt-4"]
3379
+ [[swiper-modules-zoom-events-zoomChange]]
3380
+ ===== zoomChange
3381
+
3382
+ Event fired on zoom change.
3383
+
3384
+ [NOTE]
3385
+ ====
3386
+ Receives evants *scale*, *imageEl*, *slideEl* as an *argument*.
3387
+ ====
3388
+
3389
+ [cols="12a", subs=+macros, options="header", width="100%", role="rtable mt-4 mb-5"]
3390
+ |===
3391
+ |Usage
3392
+
3393
+ |
3394
+ [source, js]
3395
+ ----
3396
+ const swiper = new Swiper('#swiper_id', {
3397
+ // option settings ...
3398
+ on: {
3399
+ zoomChange: (swiper, scale, imageEl, slideEl) => {
3400
+ // do something
3401
+ }
3402
+ }
3403
+ });
3404
+ ----
3405
+
3406
+ |===
3407
+
3408
+
3409
+ ////
3410
+
3411
+ // kapott 1
3412
+ [source, js]
3413
+ ----
3414
+ // Array with translate X, Y and Z values
3415
+ translate: (string | number)[];
3416
+ // Array with rotate X, Y and Z values (in deg)
3417
+ rotate?: number[];
3418
+ // Slide opacity
3419
+ opacity?: number;
3420
+ // Slide scale
3421
+ scale?: number;
3422
+ // Enables slide shadow
3423
+ shadow?: boolean;
3424
+ // Transform origin, e.g. `left bottom`
3425
+ origin?: string;
3426
+ ----
3427
+
3428
+ // kapott 2
3429
+ [source, js]
3430
+ ----
3431
+ // Array with translate X, Y and Z values
3432
+ translate: (string | number)[];
3433
+ // Array with rotate X, Y and Z values (in deg)
3434
+ rotate?: number[];
3435
+ // Slide opacity
3436
+ opacity?: number;
3437
+ // Slide scale
3438
+ scale?: number;
3439
+ // Enables slide shadow
3440
+ shadow?: boolean;
3441
+ // Transform origin, e.g. `left bottom`
3442
+ origin?: string;
3443
+ ----
3444
+
3445
+ ////