mirror of
https://github.com/Dvorinka/bizoni.git
synced 2026-06-03 18:22:57 +00:00
women
This commit is contained in:
+189
@@ -0,0 +1,189 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<team>
|
||||||
|
<category name="men">
|
||||||
|
<member>
|
||||||
|
<name>Janečka Martin</name>
|
||||||
|
<number>13</number>
|
||||||
|
<role>Hráč</role>
|
||||||
|
<image>img/muzi/Janečka_Martin_1.png</image>
|
||||||
|
</member>
|
||||||
|
<member>
|
||||||
|
<name>Hubinka Adam</name>
|
||||||
|
<number>5</number>
|
||||||
|
<role>Hráč</role>
|
||||||
|
<image>img/muzi/Hubinka_Adam_1.png</image>
|
||||||
|
</member>
|
||||||
|
<member>
|
||||||
|
<name>Zapletal Martin</name>
|
||||||
|
<number>8</number>
|
||||||
|
<role>Hráč</role>
|
||||||
|
<image>img/muzi/Zapletal_Martin_1.png</image>
|
||||||
|
</member>
|
||||||
|
<member>
|
||||||
|
<name>Drobný Michal</name>
|
||||||
|
<number>3</number>
|
||||||
|
<role>Hráč</role>
|
||||||
|
<image>img/muzi/Drobný_Michal_1.png</image>
|
||||||
|
</member>
|
||||||
|
<member>
|
||||||
|
<name>Prokeš Martin</name>
|
||||||
|
<number>12</number>
|
||||||
|
<role>Hráč</role>
|
||||||
|
<image>img/muzi/Prokeš_Martin_1.png</image>
|
||||||
|
</member>
|
||||||
|
<member>
|
||||||
|
<name>Janečka Radek</name>
|
||||||
|
<number>16</number>
|
||||||
|
<role>Brankář</role>
|
||||||
|
<image>img/muzi/Janečka_Radek_1.png</image>
|
||||||
|
</member>
|
||||||
|
<member>
|
||||||
|
<name>Mačuda Jakub</name>
|
||||||
|
<number></number>
|
||||||
|
<role></role>
|
||||||
|
<image>img/muzi/Mačuda_Jakub_1.png</image>
|
||||||
|
</member>
|
||||||
|
<member>
|
||||||
|
<name>Svízela Jakub</name>
|
||||||
|
<number>19</number>
|
||||||
|
<role>Hráč</role>
|
||||||
|
<image>img/muzi/Svízela_Jakub_1.png</image>
|
||||||
|
</member>
|
||||||
|
<member>
|
||||||
|
<name>Šipka Jan</name>
|
||||||
|
<number>14</number>
|
||||||
|
<role>Hráč</role>
|
||||||
|
<image>img/muzi/Šipka_Jan_1.png</image>
|
||||||
|
</member>
|
||||||
|
<member>
|
||||||
|
<name>Polák David</name>
|
||||||
|
<number>9</number>
|
||||||
|
<role>Hráč</role>
|
||||||
|
<image>img/muzi/Polák_David_1.png</image>
|
||||||
|
</member>
|
||||||
|
<member>
|
||||||
|
<name>Kočiš Lukáš</name>
|
||||||
|
<number>6</number>
|
||||||
|
<role>Hráč</role>
|
||||||
|
<image>img/muzi/Kočiš_Lukáš_1.png</image>
|
||||||
|
</member>
|
||||||
|
<member>
|
||||||
|
<name>Malý Lukáš</name>
|
||||||
|
<number>21</number>
|
||||||
|
<role>Hráč</role>
|
||||||
|
<image>img/muzi/Malý_Lukáš_1.png</image>
|
||||||
|
</member>
|
||||||
|
<member>
|
||||||
|
<name>Řičica Jakub</name>
|
||||||
|
<number></number>
|
||||||
|
<role>sekretář klubu</role>
|
||||||
|
<image>img/muzi/Řičica_Jakub_1.png</image>
|
||||||
|
</member>
|
||||||
|
<member>
|
||||||
|
<name>Moravec David</name>
|
||||||
|
<number></number>
|
||||||
|
<role>místopředseda klubu</role>
|
||||||
|
<image>img/muzi/Moravec_David_1.png</image>
|
||||||
|
</member>
|
||||||
|
<member>
|
||||||
|
<name>Janečková Vladimíra</name>
|
||||||
|
<number></number>
|
||||||
|
<role>vedoucí týmu</role>
|
||||||
|
<image>img/muzi/Janečková_Vladimíra_1.png</image>
|
||||||
|
</member>
|
||||||
|
<member>
|
||||||
|
<name>Stodůlka Štěpán</name>
|
||||||
|
<number></number>
|
||||||
|
<role>PR manažer klubu</role>
|
||||||
|
<image>img/muzi/Stodůlka_Štěpán_1.png</image>
|
||||||
|
</member>
|
||||||
|
<member>
|
||||||
|
<name>Stojaspal Marek</name>
|
||||||
|
<number></number>
|
||||||
|
<role></role>
|
||||||
|
<image>img/muzi/Stojaspal_Marek_1.png</image>
|
||||||
|
</member>
|
||||||
|
<member>
|
||||||
|
<name>Puškáč Lubomír</name>
|
||||||
|
<number></number>
|
||||||
|
<role></role>
|
||||||
|
<image>img/muzi/Puškáč_Lubomír_1.png</image>
|
||||||
|
</member>
|
||||||
|
<member>
|
||||||
|
<name>Náplava Jaroslav</name>
|
||||||
|
<number></number>
|
||||||
|
<role></role>
|
||||||
|
<image>img/muzi/Náplava_Jaroslav_1.png</image>
|
||||||
|
</member>
|
||||||
|
</category>
|
||||||
|
|
||||||
|
|
||||||
|
<category name="women">
|
||||||
|
<member>
|
||||||
|
<name>Šrámková Sára</name>
|
||||||
|
<number>12</number>
|
||||||
|
<role>hráč</role>
|
||||||
|
<image>img/zeny/Šrámková_Sára_1.png</image>
|
||||||
|
</member>
|
||||||
|
<member>
|
||||||
|
<name>Baná Barbora</name>
|
||||||
|
<number>21</number>
|
||||||
|
<role>hráč</role>
|
||||||
|
<image>img/zeny/Baná_Barbora_1.png</image>
|
||||||
|
</member>
|
||||||
|
<member>
|
||||||
|
<name>Majerechová Eliška</name>
|
||||||
|
<number>69</number>
|
||||||
|
<role>hráč</role>
|
||||||
|
<image>img/zeny/Majerechová_Eliška_1.png</image>
|
||||||
|
</member>
|
||||||
|
<member>
|
||||||
|
<name>Maleňáková Adriana</name>
|
||||||
|
<number>11</number>
|
||||||
|
<role>hráč</role>
|
||||||
|
<image>img/zeny/Maleňáková_Adriana_1.png</image>
|
||||||
|
</member>
|
||||||
|
<member>
|
||||||
|
<name>Adamíková Andrea</name>
|
||||||
|
<number>6</number>
|
||||||
|
<role>hráč</role>
|
||||||
|
<image>img/zeny/Adamíková_Andrea_1.png</image>
|
||||||
|
</member>
|
||||||
|
<member>
|
||||||
|
<name>Dufková Martina</name>
|
||||||
|
<number>17</number>
|
||||||
|
<role>hráč</role>
|
||||||
|
<image>img/zeny/Dufková_Martina_1.png</image>
|
||||||
|
</member>
|
||||||
|
<member>
|
||||||
|
<name>Gorčíková Anna</name>
|
||||||
|
<number>16</number>
|
||||||
|
<role>hráč</role>
|
||||||
|
<image>img/zeny/Gorčíková_Anna_1.png</image>
|
||||||
|
</member>
|
||||||
|
<member>
|
||||||
|
<name>Mrázková Denisa</name>
|
||||||
|
<number>4</number>
|
||||||
|
<role>hráč</role>
|
||||||
|
<image>img/zeny/Mrázková_Denisa_1.png</image>
|
||||||
|
</member>
|
||||||
|
<member>
|
||||||
|
<name>Prokešová Terezie</name>
|
||||||
|
<number>1</number>
|
||||||
|
<role>hráč</role>
|
||||||
|
<image>img/zeny/Prokešová_Terezie_1.png</image>
|
||||||
|
</member>
|
||||||
|
<member>
|
||||||
|
<name>Sekaninová Markéta</name>
|
||||||
|
<number>7</number>
|
||||||
|
<role>hráč</role>
|
||||||
|
<image>img/zeny/Sekaninová_Markéta_1.png</image>
|
||||||
|
</member>
|
||||||
|
<member>
|
||||||
|
<name>Štichová Tereza</name>
|
||||||
|
<number>10</number>
|
||||||
|
<role>hráč</role>
|
||||||
|
<image>img/zeny/Štichová_Tereza_1.png</image>
|
||||||
|
</member>
|
||||||
|
</category>
|
||||||
|
</team>
|
||||||
+11
-556
@@ -751,567 +751,21 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div id="gender-switcher" aria-label="Přepínač pohlaví týmu">
|
||||||
|
<button type="button" class="switch-btn active" data-gender="men">Muži</button>
|
||||||
|
<button type="button" class="switch-btn" data-gender="women">Ženy</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="elementor-element elementor-element-074577d e-con-full lte-background-black e-flex e-con e-parent" data-id="074577d" data-element_type="container" data-settings="{"background_background":"classic"}" data-core-v316-plus="true">
|
</div>
|
||||||
|
<div id="team-section-1" class="elementor-element elementor-element-074577d e-con-full lte-background-black e-flex e-con e-parent" data-id="074577d" data-element_type="container" data-settings="{"background_background":"classic"}" data-core-v316-plus="true">
|
||||||
<div class="elementor-element elementor-element-dddf621 lte-team-offset elementor-widget elementor-widget-lte-team" data-id="dddf621" data-element_type="widget" data-widget_type="lte-team.default">
|
<div class="elementor-element elementor-element-dddf621 lte-team-offset elementor-widget elementor-widget-lte-team" data-id="dddf621" data-element_type="widget" data-widget_type="lte-team.default">
|
||||||
<div class="elementor-widget-container">
|
<div class="elementor-widget-container">
|
||||||
|
<div class="team-preloader" id="team-preloader-1" aria-hidden="true">
|
||||||
|
<div class="spinner"></div>
|
||||||
|
<div class="loading-text">Načítání…</div>
|
||||||
|
</div>
|
||||||
<div class="lte-swiper-slider-wrapper">
|
<div class="lte-swiper-slider-wrapper">
|
||||||
<div class="lte-swiper-slider swiper-container lte-team-list lte-team-layout-default " data-space-between="30" data-arrows="sides-outside" data-autoplay="0" data-autoplay-interaction="" data-loop="" data-speed="1000" data-effect="coverflow" data-slides-per-group="-1" data-touch-move="0.2" data-breakpoints="5;4;4;3;3;1">
|
<div class="lte-swiper-slider swiper-container lte-team-list lte-team-layout-default " data-space-between="30" data-arrows="sides-outside" data-autoplay="0" data-autoplay-interaction="" data-loop="" data-speed="1000" data-effect="coverflow" data-slides-per-group="-1" data-touch-move="0.2" data-breakpoints="5;4;4;3;3;1">
|
||||||
<div class="swiper-wrapper">
|
<div class="swiper-wrapper" id="team-swiper-wrapper-1">
|
||||||
<div class="lte-item swiper-slide">
|
|
||||||
<div class="lte-team-item">
|
|
||||||
<a class="lte-image" style="background-image: url()">
|
|
||||||
<img loading="lazy" decoding="async" width="800" height="1200" src="img/clen3.png" class="attachment-full size-full" />
|
|
||||||
</a>
|
|
||||||
<div class="lte-social-wrapper">
|
|
||||||
<span class="lte-social-icon"></span>
|
|
||||||
<ul class="lte-social">
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-linkedin-in"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-facebook-f"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-twitter"></a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="lte-descr">
|
|
||||||
<div class="lte-num">13</div>
|
|
||||||
<a href="img/clen3.png" target="_blank">
|
|
||||||
<h4 class="lte-header">Janečka Martin</h4>
|
|
||||||
</a>
|
|
||||||
<p class="lte-subheader">
|
|
||||||
<span>Hráč</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="lte-item swiper-slide">
|
|
||||||
<div class="lte-team-item">
|
|
||||||
<a class="lte-image" style="background-image: url()">
|
|
||||||
<img loading="lazy" decoding="async" width="800" height="1200" src="img/clen5.png" class="attachment-full size-full" />
|
|
||||||
</a>
|
|
||||||
<div class="lte-social-wrapper">
|
|
||||||
<span class="lte-social-icon"></span>
|
|
||||||
<ul class="lte-social">
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-linkedin-in"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-facebook-f"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-twitter"></a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="lte-descr">
|
|
||||||
<div class="lte-num">5</div>
|
|
||||||
<a href="img/clen5.png" target="_blank">
|
|
||||||
<h4 class="lte-header">Lapčík Martin</h4>
|
|
||||||
</a>
|
|
||||||
<p class="lte-subheader">
|
|
||||||
<span>Hráč</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="lte-item swiper-slide">
|
|
||||||
<div class="lte-team-item">
|
|
||||||
<a class="lte-image" style="background-image: url()">
|
|
||||||
<img loading="lazy" decoding="async" width="800" height="1200" src="img/clen6.png" class="attachment-full size-full" />
|
|
||||||
</a>
|
|
||||||
<div class="lte-social-wrapper">
|
|
||||||
<span class="lte-social-icon"></span>
|
|
||||||
<ul class="lte-social">
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-twitter"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-facebook-f"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-google-plus-g"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-instagram"></a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="lte-descr">
|
|
||||||
<div class="lte-num">8</div>
|
|
||||||
<a href="img/clen6.png" target="_blank">
|
|
||||||
<h4 class="lte-header">Zapletal Martin</h4>
|
|
||||||
</a>
|
|
||||||
<p class="lte-subheader">
|
|
||||||
<span>Hráč</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="lte-item swiper-slide">
|
|
||||||
<div class="lte-team-item">
|
|
||||||
<a class="lte-image" style="background-image: url()">
|
|
||||||
<img loading="lazy" decoding="async" width="800" height="1200" src="img/clen7.png" class="attachment-full size-full" />
|
|
||||||
</a>
|
|
||||||
<div class="lte-social-wrapper">
|
|
||||||
<span class="lte-social-icon"></span>
|
|
||||||
<ul class="lte-social">
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-twitter"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-facebook-f"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-google-plus-g"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-instagram"></a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="lte-descr">
|
|
||||||
<div class="lte-num">3</div>
|
|
||||||
<a href="img/clen7.png" target="_blank">
|
|
||||||
<h4 class="lte-header">Drobný Michal</h4>
|
|
||||||
</a>
|
|
||||||
<p class="lte-subheader">
|
|
||||||
<span>Hráč</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="lte-item swiper-slide">
|
|
||||||
<div class="lte-team-item">
|
|
||||||
<a class="lte-image" style="background-image: url()">
|
|
||||||
<img loading="lazy" decoding="async" width="800" height="1200" src="img/clen9.png" class="attachment-full size-full" />
|
|
||||||
</a>
|
|
||||||
<div class="lte-social-wrapper">
|
|
||||||
<span class="lte-social-icon"></span>
|
|
||||||
<ul class="lte-social">
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-twitter"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-facebook-f"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-google-plus-g"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-instagram"></a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="lte-descr">
|
|
||||||
<div class="lte-num">12</div>
|
|
||||||
<a href="img/clen9.png" target="_blank">
|
|
||||||
<h4 class="lte-header">Brázdil Petr</h4>
|
|
||||||
</a>
|
|
||||||
<p class="lte-subheader">
|
|
||||||
<span>Hráč</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="lte-item swiper-slide">
|
|
||||||
<div class="lte-team-item">
|
|
||||||
<a class="lte-image" style="background-image: url()">
|
|
||||||
<img loading="lazy" decoding="async" width="800" height="1200" src="img/clen11.png" class="attachment-full size-full" />
|
|
||||||
</a>
|
|
||||||
<div class="lte-social-wrapper">
|
|
||||||
<span class="lte-social-icon"></span>
|
|
||||||
<ul class="lte-social">
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-twitter"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-facebook-f"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-google-plus-g"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-instagram"></a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="lte-descr">
|
|
||||||
<div class="lte-num">16</div>
|
|
||||||
<a href="img/clen11.png" target="_blank">
|
|
||||||
<h4 class="lte-header">Janečka Radek</h4>
|
|
||||||
</a>
|
|
||||||
<p class="lte-subheader">
|
|
||||||
<span>Brankář</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="lte-item swiper-slide">
|
|
||||||
<div class="lte-team-item">
|
|
||||||
<a class="lte-image" style="background-image: url()">
|
|
||||||
<img loading="lazy" decoding="async" width="800" height="1200" src="img/clen12.png" class="attachment-full size-full" />
|
|
||||||
</a>
|
|
||||||
<div class="lte-social-wrapper">
|
|
||||||
<span class="lte-social-icon"></span>
|
|
||||||
<ul class="lte-social">
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-twitter"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-facebook-f"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-google-plus-g"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-instagram"></a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="lte-descr">
|
|
||||||
<div class="lte-num">19</div>
|
|
||||||
<a href="img/clen12.png" target="_blank">
|
|
||||||
<h4 class="lte-header">Svízela Jakub</h4>
|
|
||||||
</a>
|
|
||||||
<p class="lte-subheader">
|
|
||||||
<span>Hráč</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="lte-item swiper-slide">
|
|
||||||
<div class="lte-team-item">
|
|
||||||
<a class="lte-image" style="background-image: url()">
|
|
||||||
<img loading="lazy" decoding="async" width="800" height="1200" src="img/clen13.png" class="attachment-full size-full" />
|
|
||||||
</a>
|
|
||||||
<div class="lte-social-wrapper">
|
|
||||||
<span class="lte-social-icon"></span>
|
|
||||||
<ul class="lte-social">
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-twitter"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-facebook-f"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-google-plus-g"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-instagram"></a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="lte-descr">
|
|
||||||
<div class="lte-num">14</div>
|
|
||||||
<a href="img/clen13.png" target="_blank">
|
|
||||||
<h4 class="lte-header">Šipka Jan</h4>
|
|
||||||
</a>
|
|
||||||
<p class="lte-subheader">
|
|
||||||
<span>Hráč</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="lte-item swiper-slide">
|
|
||||||
<div class="lte-team-item">
|
|
||||||
<a class="lte-image" style="background-image: url()">
|
|
||||||
<img loading="lazy" decoding="async" width="800" height="1200" src="img/clen14.png" class="attachment-full size-full" />
|
|
||||||
</a>
|
|
||||||
<div class="lte-social-wrapper">
|
|
||||||
<span class="lte-social-icon"></span>
|
|
||||||
<ul class="lte-social">
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-twitter"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-facebook-f"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-google-plus-g"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-instagram"></a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="lte-descr">
|
|
||||||
<div class="lte-num">18</div>
|
|
||||||
<a href="img/clen14.png" target="_blank">
|
|
||||||
<h4 class="lte-header">Hubinka Adam</h4>
|
|
||||||
</a>
|
|
||||||
<p class="lte-subheader">
|
|
||||||
<span>Hráč</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="lte-item swiper-slide">
|
|
||||||
<div class="lte-team-item">
|
|
||||||
<a" class="lte-image" style="background-image: url()">
|
|
||||||
<img loading="lazy" decoding="async" width="800" height="1200" src="img/clen16.png" class="attachment-full size-full" />
|
|
||||||
</a>
|
|
||||||
<div class="lte-social-wrapper">
|
|
||||||
<span class="lte-social-icon"></span>
|
|
||||||
<ul class="lte-social">
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-twitter"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-facebook-f"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-google-plus-g"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-instagram"></a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="lte-descr">
|
|
||||||
<div class="lte-num">9</div>
|
|
||||||
<a href="img/clen16.png" target="_blank">
|
|
||||||
<h4 class="lte-header">Příplata Filip</h4>
|
|
||||||
</a>
|
|
||||||
<p class="lte-subheader">
|
|
||||||
<span>Hráč</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="lte-item swiper-slide">
|
|
||||||
<div class="lte-team-item">
|
|
||||||
<a class="lte-image" style="background-image: url()">
|
|
||||||
<img loading="lazy" decoding="async" width="800" height="1200" src="img/clen15.png" class="attachment-full size-full" />
|
|
||||||
</a>
|
|
||||||
<div class="lte-social-wrapper">
|
|
||||||
<span class="lte-social-icon"></span>
|
|
||||||
<ul class="lte-social">
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-twitter"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-facebook-f"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-google-plus-g"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-instagram"></a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="lte-descr">
|
|
||||||
<div class="lte-num">6</div>
|
|
||||||
<a href="img/clen15.png" target="_blank">
|
|
||||||
<h4 class="lte-header">Kočiš Lukáš</h4>
|
|
||||||
</a>
|
|
||||||
<p class="lte-subheader">
|
|
||||||
<span>Hráč</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="lte-item swiper-slide">
|
|
||||||
<div class="lte-team-item">
|
|
||||||
<a" class="lte-image" style="background-image: url()">
|
|
||||||
<img loading="lazy" decoding="async" width="800" height="1200" src="img/clen17.png" class="attachment-full size-full" />
|
|
||||||
</a>
|
|
||||||
<div class="lte-social-wrapper">
|
|
||||||
<span class="lte-social-icon"></span>
|
|
||||||
<ul class="lte-social">
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-twitter"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-facebook-f"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-google-plus-g"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-instagram"></a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="lte-descr">
|
|
||||||
<div class="lte-num">21</div>
|
|
||||||
<a href="img/clen17.png" target="_blank">
|
|
||||||
<h4 class="lte-header">Malý Lukáš</h4>
|
|
||||||
</a>
|
|
||||||
<p class="lte-subheader">
|
|
||||||
<span>Hráč</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="lte-item swiper-slide">
|
|
||||||
<div class="lte-team-item">
|
|
||||||
<a class="lte-image" style="background-image: url()">
|
|
||||||
<img loading="lazy" decoding="async" width="800" height="1200" src="img/clen8.png" class="attachment-full size-full" />
|
|
||||||
</a>
|
|
||||||
<div class="lte-social-wrapper">
|
|
||||||
<span class="lte-social-icon"></span>
|
|
||||||
<ul class="lte-social">
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-twitter"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-facebook-f"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-google-plus-g"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-instagram"></a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="lte-descr">
|
|
||||||
<div class="lte-num"></div>
|
|
||||||
<a href="img/clen8.png" target="_blank">
|
|
||||||
<h4 class="lte-header">Řičica Jakub</h4>
|
|
||||||
</a>
|
|
||||||
<p class="lte-subheader">sekretář <span>klubu</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="lte-item swiper-slide">
|
|
||||||
<div class="lte-team-item">
|
|
||||||
<a class="lte-image" style="background-image: url()">
|
|
||||||
<img loading="lazy" decoding="async" width="800" height="1200" src="img/clen10.png" class="attachment-full size-full" />
|
|
||||||
</a>
|
|
||||||
<div class="lte-social-wrapper">
|
|
||||||
<span class="lte-social-icon"></span>
|
|
||||||
<ul class="lte-social">
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-twitter"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-facebook-f"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-google-plus-g"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-instagram"></a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="lte-descr">
|
|
||||||
<div class="lte-num"></div>
|
|
||||||
<a href="img/clen10.png" target="_blank">
|
|
||||||
<h4 class="lte-header">Moravec David</h4>
|
|
||||||
</a>
|
|
||||||
<p class="lte-subheader">místopředseda <span>klubu</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="lte-item swiper-slide">
|
|
||||||
<div class="lte-team-item">
|
|
||||||
<a class="lte-image" style="background-image: url()">
|
|
||||||
<img loading="lazy" decoding="async" width="800" height="1200" src="img/clen4.png" class="attachment-full size-full" />
|
|
||||||
</a>
|
|
||||||
<div class="lte-social-wrapper">
|
|
||||||
<span class="lte-social-icon"></span>
|
|
||||||
<ul class="lte-social">
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-linkedin-in"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-facebook-f"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-twitter"></a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="lte-descr">
|
|
||||||
<div class="lte-num"></div>
|
|
||||||
<a href="img/clen4.png" target="_blank">
|
|
||||||
<h4 class="lte-header">Janečková Vladimíra</h4>
|
|
||||||
</a>
|
|
||||||
<p class="lte-subheader">vedoucí <span>týmu</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="lte-item swiper-slide">
|
|
||||||
<div class="lte-team-item">
|
|
||||||
<a class="lte-image" style="background-image: url()">
|
|
||||||
<img loading="lazy" decoding="async" width="800" height="1200" src="img/clen1.png" class="attachment-full size-full" />
|
|
||||||
</a>
|
|
||||||
<div class="lte-social-wrapper">
|
|
||||||
<span class="lte-social-icon"></span>
|
|
||||||
<ul class="lte-social">
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-linkedin-in"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-facebook-f"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-twitter"></a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="lte-descr">
|
|
||||||
<div class="lte-num"></div>
|
|
||||||
<a href="img/clen1.png" target="_blank">
|
|
||||||
<h4 class="lte-header">Stodůlka Štěpán</h4>
|
|
||||||
</a>
|
|
||||||
<p class="lte-subheader">PR manažer <span>klubu</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="lte-item swiper-slide">
|
|
||||||
<div class="lte-team-item">
|
|
||||||
<a class="lte-image" style="background-image: url()">
|
|
||||||
<img loading="lazy" decoding="async" width="800" height="1200" src="img/clen2.png" class="attachment-full size-full" />
|
|
||||||
</a>
|
|
||||||
<div class="lte-social-wrapper">
|
|
||||||
<span class="lte-social-icon"></span>
|
|
||||||
<ul class="lte-social">
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-linkedin-in"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-facebook-f"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" class="cybron_fa5_icons fab fa-twitter"></a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="lte-descr">
|
|
||||||
<div class="lte-num"></div>
|
|
||||||
<a href="img/clen2.png" target="_blank">
|
|
||||||
<h4 class="lte-header">Náplava Jaroslav</h4>
|
|
||||||
</a>
|
|
||||||
<p class="lte-subheader">předseda <span>klubu</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="lte-team-descr"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="elementor-element elementor-element-074577d e-con-full lte-background-black e-flex e-con e-parent" data-id="074577d" data-element_type="container" data-settings="{"background_background":"classic"}" data-core-v316-plus="true">
|
|
||||||
<div class="elementor-element elementor-element-dddf621 lte-team-offset elementor-widget elementor-widget-lte-team" data-id="dddf621" data-element_type="widget" data-widget_type="lte-team.default">
|
|
||||||
<div class="elementor-widget-container">
|
|
||||||
<div class="lte-swiper-slider-wrapper">
|
|
||||||
<div class="lte-swiper-slider swiper-container lte-team-list lte-team-layout-default " data-space-between="30" data-arrows="sides-outside" data-autoplay="0" data-autoplay-interaction="" data-loop="" data-speed="1000" data-effect="coverflow" data-slides-per-group="-1" data-touch-move="0.2" data-breakpoints="5;4;4;3;3;1">
|
|
||||||
<div class="swiper-wrapper">
|
|
||||||
<div class="lte-item swiper-slide">
|
<div class="lte-item swiper-slide">
|
||||||
<div class="lte-team-item">
|
<div class="lte-team-item">
|
||||||
<a class="lte-image" style="background-image: url()">
|
<a class="lte-image" style="background-image: url()">
|
||||||
@@ -2686,5 +2140,6 @@
|
|||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<script src="js/facr-frontend.js"></script>
|
<script src="js/facr-frontend.js"></script>
|
||||||
|
<script src="js/team-switcher.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -0,0 +1,334 @@
|
|||||||
|
// team-switcher.js
|
||||||
|
// Loads team data from XML and populates the team slider. Adds a men/women switcher.
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
const XML_URL = 'data/team.xml';
|
||||||
|
const SWITCHER_ID = 'gender-switcher';
|
||||||
|
const WRAPPER_ID = 'team-swiper-wrapper-1';
|
||||||
|
const PRELOADER_ID = 'team-preloader-1';
|
||||||
|
const SECTION_ID = 'team-section-1';
|
||||||
|
|
||||||
|
let teamData = null; // cached parsed XML data
|
||||||
|
let currentGender = 'men';
|
||||||
|
// Autoscroll timers
|
||||||
|
let autoTimer = null;
|
||||||
|
let resumeTimer = null;
|
||||||
|
const AUTO_DELAY = 2000; // 5s
|
||||||
|
const RESUME_AFTER = 10000; // resume 10s after user interaction
|
||||||
|
|
||||||
|
function qs(sel, root = document) { return root.querySelector(sel); }
|
||||||
|
function qsa(sel, root = document) { return Array.from(root.querySelectorAll(sel)); }
|
||||||
|
|
||||||
|
async function loadXML() {
|
||||||
|
if (teamData) return teamData;
|
||||||
|
const res = await fetch(XML_URL, { cache: 'no-cache' });
|
||||||
|
if (!res.ok) throw new Error('Failed to fetch team.xml');
|
||||||
|
const text = await res.text();
|
||||||
|
const parser = new DOMParser();
|
||||||
|
const xml = parser.parseFromString(text, 'application/xml');
|
||||||
|
const parseError = xml.querySelector('parsererror');
|
||||||
|
if (parseError) throw new Error('Invalid XML in team.xml');
|
||||||
|
teamData = xml;
|
||||||
|
return xml;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getMembersByCategory(xml, categoryName) {
|
||||||
|
const cat = Array.from(xml.querySelectorAll('team > category'))
|
||||||
|
.find(c => (c.getAttribute('name') || '').toLowerCase() === categoryName);
|
||||||
|
if (!cat) return [];
|
||||||
|
return Array.from(cat.querySelectorAll('member')).map(m => ({
|
||||||
|
name: (m.querySelector('name')?.textContent || '').trim(),
|
||||||
|
number: (m.querySelector('number')?.textContent || '').trim(),
|
||||||
|
role: (m.querySelector('role')?.textContent || '').trim(),
|
||||||
|
image: (m.querySelector('image')?.textContent || '').trim(),
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
function slideHTML(member) {
|
||||||
|
const numHTML = member.number ? `<div class="lte-num">${member.number}</div>` : '<div class="lte-num"></div>';
|
||||||
|
const safeImg = member.image || '';
|
||||||
|
return (
|
||||||
|
`<div class="lte-item swiper-slide">
|
||||||
|
<div class="lte-team-item">
|
||||||
|
<a class="lte-image" style="background-image: url()">
|
||||||
|
<img loading="lazy" decoding="async" width="800" height="1200" src="${safeImg}" class="attachment-full size-full" />
|
||||||
|
</a>
|
||||||
|
<div class="lte-descr">
|
||||||
|
${numHTML}
|
||||||
|
<a href="${safeImg}" target="_blank">
|
||||||
|
<h4 class="lte-header">${member.name}</h4>
|
||||||
|
</a>
|
||||||
|
<p class="lte-subheader" style="color: #c42221">${member.role}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function renderMembers(members) {
|
||||||
|
const wrapper = document.getElementById(WRAPPER_ID);
|
||||||
|
if (!wrapper) return;
|
||||||
|
const swiperEl = wrapper.closest('.swiper-container');
|
||||||
|
const swiper = swiperEl && swiperEl.swiper;
|
||||||
|
|
||||||
|
// Use DOM-based rendering to match theme's slider expectations
|
||||||
|
wrapper.innerHTML = members.map(slideHTML).join('');
|
||||||
|
|
||||||
|
// Strong refresh
|
||||||
|
if (swiper) {
|
||||||
|
try {
|
||||||
|
if (typeof swiper.updateSlides === 'function') swiper.updateSlides();
|
||||||
|
if (typeof swiper.updateSize === 'function') swiper.updateSize();
|
||||||
|
if (typeof swiper.updateAutoHeight === 'function') swiper.updateAutoHeight(0);
|
||||||
|
if (typeof swiper.slideTo === 'function') swiper.slideTo(0, 0, false);
|
||||||
|
if (typeof swiper.update === 'function') swiper.update();
|
||||||
|
} catch (e) {}
|
||||||
|
}
|
||||||
|
// Ask the theme to re-init this slider completely so arrows/loop/order are consistent
|
||||||
|
const sliderContainer = wrapper.closest('.lte-swiper-slider');
|
||||||
|
// For consistent sequential navigation, disable coverflow loop and multi-view
|
||||||
|
if (sliderContainer && sliderContainer.dataset) {
|
||||||
|
sliderContainer.dataset.effect = 'slide'; // avoid forced loop in coverflow
|
||||||
|
sliderContainer.dataset.loop = '0';
|
||||||
|
sliderContainer.dataset.breakpoints = '1;1;1;1;1;1'; // 1 per view on all widths
|
||||||
|
}
|
||||||
|
if (sliderContainer) sliderContainer.classList.remove('lte-inited');
|
||||||
|
if (typeof window.initSwiperWrappers === 'function') {
|
||||||
|
try { window.initSwiperWrappers(); } catch (_) {}
|
||||||
|
}
|
||||||
|
// Remove any duplicate arrow bars the theme may have added on re-init
|
||||||
|
cleanupDuplicateArrows();
|
||||||
|
setTimeout(() => window.dispatchEvent(new Event('resize')), 0);
|
||||||
|
|
||||||
|
// Ensure arrows exist and are bound; manual endless wrap
|
||||||
|
setupEndlessNavigation(swiperEl);
|
||||||
|
setupDragWrap(swiper);
|
||||||
|
// Restart autoscroll on fresh render
|
||||||
|
stopAutoScroll();
|
||||||
|
startAutoScroll();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Keep only one arrows bar; prefer the one whose anchors already have our data-ts-bound
|
||||||
|
function cleanupDuplicateArrows() {
|
||||||
|
const wrapper = document.getElementById(WRAPPER_ID);
|
||||||
|
if (!wrapper) return;
|
||||||
|
const slider = wrapper.closest('.lte-swiper-slider');
|
||||||
|
if (!slider) return;
|
||||||
|
|
||||||
|
// Arrows can be siblings of slider or children inside slider depending on theme config
|
||||||
|
const candidates = [];
|
||||||
|
const parent = slider.parentElement;
|
||||||
|
if (parent) {
|
||||||
|
Array.from(parent.children).forEach((el) => { if (el.classList && el.classList.contains('lte-arrows')) candidates.push(el); });
|
||||||
|
}
|
||||||
|
Array.from(slider.children).forEach((el) => { if (el.classList && el.classList.contains('lte-arrows')) candidates.push(el); });
|
||||||
|
|
||||||
|
if (candidates.length <= 1) return;
|
||||||
|
|
||||||
|
// Prefer the one that already has data-ts-bound anchors
|
||||||
|
const hasBound = candidates.find(a => a.querySelector('a[data-ts-bound="1"]'));
|
||||||
|
const keep = hasBound || candidates[0];
|
||||||
|
candidates.forEach((a) => { if (a !== keep && a.parentElement) a.parentElement.removeChild(a); });
|
||||||
|
}
|
||||||
|
|
||||||
|
async function switchGender(gender) {
|
||||||
|
currentGender = gender;
|
||||||
|
try {
|
||||||
|
showPreloader();
|
||||||
|
const xml = await loadXML();
|
||||||
|
// Keep the order as in XML so the first visible is the first listed (e.g., Janečka Martin)
|
||||||
|
const list = getMembersByCategory(xml, gender);
|
||||||
|
renderMembers(list);
|
||||||
|
updateActiveButton();
|
||||||
|
markReady();
|
||||||
|
hidePreloader();
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
hidePreloader();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateActiveButton() {
|
||||||
|
const container = document.getElementById(SWITCHER_ID);
|
||||||
|
if (!container) return;
|
||||||
|
qsa('button[data-gender]', container).forEach(btn => {
|
||||||
|
btn.classList.toggle('active', btn.dataset.gender === currentGender);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function bindUI() {
|
||||||
|
const container = document.getElementById(SWITCHER_ID);
|
||||||
|
if (!container) return;
|
||||||
|
container.addEventListener('click', (e) => {
|
||||||
|
const btn = e.target.closest('button[data-gender]');
|
||||||
|
if (!btn) return;
|
||||||
|
const gender = btn.dataset.gender;
|
||||||
|
if (gender && gender !== currentGender) switchGender(gender);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function ensureBasicStyles() {
|
||||||
|
const css = `
|
||||||
|
#${SWITCHER_ID}{display:flex;gap:.5rem;justify-content:center;margin:10px 0}
|
||||||
|
#${SWITCHER_ID} .switch-btn{background:#eee;border:1px solid #ccc;border-radius:20px;padding:.35rem .9rem;font-weight:600;cursor:pointer}
|
||||||
|
#${SWITCHER_ID} .switch-btn.active{background:#111;color:#fff;border-color:#111}
|
||||||
|
#${PRELOADER_ID}{display:none;align-items:center;justify-content:center;gap:.6rem;color:#fff;padding:8px 0}
|
||||||
|
#${PRELOADER_ID}.visible{display:flex}
|
||||||
|
#${PRELOADER_ID} .spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:ts-spin .8s linear infinite}
|
||||||
|
@keyframes ts-spin{to{transform:rotate(360deg)}}
|
||||||
|
#${SECTION_ID}.not-ready .lte-swiper-slider-wrapper{visibility:hidden}
|
||||||
|
`;
|
||||||
|
const style = document.createElement('style');
|
||||||
|
style.textContent = css;
|
||||||
|
document.head.appendChild(style);
|
||||||
|
}
|
||||||
|
|
||||||
|
function getSwiperInstance() {
|
||||||
|
const wrapper = document.getElementById(WRAPPER_ID);
|
||||||
|
const swiperEl = wrapper && wrapper.closest('.swiper-container');
|
||||||
|
return swiperEl && swiperEl.swiper ? { el: swiperEl, api: swiperEl.swiper } : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function setupEndlessNavigation(swiperContainerEl) {
|
||||||
|
const inst = getSwiperInstance();
|
||||||
|
if (!inst) return;
|
||||||
|
const { el, api } = inst;
|
||||||
|
|
||||||
|
// Ensure only one set of arrows remains before binding
|
||||||
|
cleanupDuplicateArrows();
|
||||||
|
|
||||||
|
// Theme uses .lte-arrow-left / .lte-arrow-right (see frontend.js init)
|
||||||
|
let nextBtn = el.parentElement && el.parentElement.querySelector('.lte-arrows .lte-arrow-right');
|
||||||
|
let prevBtn = el.parentElement && el.parentElement.querySelector('.lte-arrows .lte-arrow-left');
|
||||||
|
// Fallback to common Swiper classes if theme structure changes
|
||||||
|
if (!nextBtn) nextBtn = el.querySelector('.swiper-button-next, .lte-swiper-button-next, .lte-next, .lte-arrow-next, .lte-arrow-right');
|
||||||
|
if (!prevBtn) prevBtn = el.querySelector('.swiper-button-prev, .lte-swiper-button-prev, .lte-prev, .lte-arrow-prev, .lte-arrow-left');
|
||||||
|
|
||||||
|
// Do not create fallback arrows; rely on theme arrows only
|
||||||
|
|
||||||
|
function bind(btn, dir) {
|
||||||
|
if (!btn || btn.dataset.tsBound) return;
|
||||||
|
btn.addEventListener('click', (e) => {
|
||||||
|
e.preventDefault();
|
||||||
|
if (!api) return;
|
||||||
|
// User override: pause and schedule resume
|
||||||
|
stopAutoScroll();
|
||||||
|
scheduleAutoResume();
|
||||||
|
if (dir === 'next') {
|
||||||
|
if (typeof api.slideNext === 'function') api.slideNext(400);
|
||||||
|
else api.slideTo((api.activeIndex || 0) + 1, 400, false);
|
||||||
|
} else {
|
||||||
|
if (typeof api.slidePrev === 'function') api.slidePrev(400);
|
||||||
|
else api.slideTo(Math.max((api.activeIndex || 0) - 1, 0), 400, false);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
btn.dataset.tsBound = '1';
|
||||||
|
}
|
||||||
|
|
||||||
|
bind(nextBtn, 'next');
|
||||||
|
bind(prevBtn, 'prev');
|
||||||
|
|
||||||
|
// Hover pause/resume on the whole slider area
|
||||||
|
if (el && !el.__tsHoverBound) {
|
||||||
|
el.addEventListener('mouseenter', () => stopAutoScroll());
|
||||||
|
el.addEventListener('mouseleave', () => startAutoScroll());
|
||||||
|
el.__tsHoverBound = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function setupDragWrap(swiper) {
|
||||||
|
if (!swiper || !swiper.on) return;
|
||||||
|
if (!swiper.__tsWrapBound) {
|
||||||
|
swiper.on('reachEnd', () => { swiper.slideTo(0, 400, false); });
|
||||||
|
swiper.on('reachBeginning', () => {
|
||||||
|
const last = (swiper.slides && swiper.slides.length ? swiper.slides.length - 1 : 0);
|
||||||
|
swiper.slideTo(last, 400, false);
|
||||||
|
});
|
||||||
|
swiper.__tsWrapBound = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Pause autoscroll on user touch/drag and schedule resume on release
|
||||||
|
if (!swiper.__tsAutoBound) {
|
||||||
|
try {
|
||||||
|
swiper.on('touchStart', () => { stopAutoScroll(); });
|
||||||
|
swiper.on('touchEnd', () => { scheduleAutoResume(); });
|
||||||
|
swiper.on('pointerDown', () => { stopAutoScroll(); });
|
||||||
|
swiper.on('pointerUp', () => { scheduleAutoResume(); });
|
||||||
|
} catch (_) {}
|
||||||
|
swiper.__tsAutoBound = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function startAutoScroll() {
|
||||||
|
const inst = getSwiperInstance();
|
||||||
|
if (!inst) return;
|
||||||
|
const { api } = inst;
|
||||||
|
stopAutoScroll();
|
||||||
|
autoTimer = window.setInterval(() => {
|
||||||
|
if (!api) return;
|
||||||
|
try {
|
||||||
|
// If not looping, wrap to first when at end
|
||||||
|
const loop = api.params && api.params.loop;
|
||||||
|
if (!loop && api.isEnd) {
|
||||||
|
api.slideTo(0, 600, false);
|
||||||
|
} else if (typeof api.slideNext === 'function') {
|
||||||
|
api.slideNext(600);
|
||||||
|
}
|
||||||
|
} catch (_) {}
|
||||||
|
}, AUTO_DELAY);
|
||||||
|
}
|
||||||
|
|
||||||
|
function stopAutoScroll() {
|
||||||
|
if (autoTimer) {
|
||||||
|
clearInterval(autoTimer);
|
||||||
|
autoTimer = null;
|
||||||
|
}
|
||||||
|
if (resumeTimer) {
|
||||||
|
clearTimeout(resumeTimer);
|
||||||
|
resumeTimer = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function scheduleAutoResume() {
|
||||||
|
if (resumeTimer) {
|
||||||
|
clearTimeout(resumeTimer);
|
||||||
|
resumeTimer = null;
|
||||||
|
}
|
||||||
|
resumeTimer = window.setTimeout(() => {
|
||||||
|
startAutoScroll();
|
||||||
|
}, RESUME_AFTER);
|
||||||
|
}
|
||||||
|
|
||||||
|
function showPreloader() {
|
||||||
|
const el = document.getElementById(PRELOADER_ID);
|
||||||
|
if (el) el.classList.add('visible');
|
||||||
|
}
|
||||||
|
|
||||||
|
function hidePreloader() {
|
||||||
|
const el = document.getElementById(PRELOADER_ID);
|
||||||
|
if (el) el.classList.remove('visible');
|
||||||
|
}
|
||||||
|
|
||||||
|
function markNotReady() {
|
||||||
|
const sec = document.getElementById(SECTION_ID);
|
||||||
|
if (sec) sec.classList.add('not-ready');
|
||||||
|
}
|
||||||
|
|
||||||
|
function markReady() {
|
||||||
|
const sec = document.getElementById(SECTION_ID);
|
||||||
|
if (sec) sec.classList.remove('not-ready');
|
||||||
|
}
|
||||||
|
|
||||||
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
|
ensureBasicStyles();
|
||||||
|
markNotReady();
|
||||||
|
showPreloader();
|
||||||
|
bindUI();
|
||||||
|
});
|
||||||
|
|
||||||
|
// Defer initial population until all assets and theme scripts (e.g., sliders) are fully initialized
|
||||||
|
window.addEventListener('load', () => {
|
||||||
|
switchGender(currentGender);
|
||||||
|
});
|
||||||
|
})();
|
||||||
Reference in New Issue
Block a user