var Summary = require('./modules/summary');
var OverflowInit = require('./modules/overflow-init');
var StickyKitInit = require('./modules/sticky-kit-init');
-var LightSliderInit = require('./modules/lightslider-init');
+var LightSliderPageInit = require('./modules/lightsliderpage-init');
//
// Init all the modules
window[Summary] = new Summary();
window[OverflowInit] = new OverflowInit();
window[StickyKitInit] = new StickyKitInit();
-window[LightSliderInit] = new LightSliderInit();
+window[LightSliderPageInit] = new LightSliderPageInit();
+++ /dev/null
-var LightSliderInit = function() {
-
- //
- // Init
- //
- this.init();
-
-};
-
-LightSliderInit.prototype.init = function() {
-
- var that = this;
-
- $('[data-slider-page]').lightSlider({
- autoWidth: true,
- item: 4,
- pager: false,
- responsive: [
- {
- breakpoint: 752,
- settings: {
- autoWidth: false,
- item: 1
- }
- }
- ]
- });
-
-};
-
-module.exports = LightSliderInit;
--- /dev/null
+var LightSliderPageInit = function() {
+
+ this.elements = [];
+
+ //
+ // Init
+ //
+ this.init();
+
+};
+
+LightSliderPageInit.prototype.init = function() {
+
+ var that = this,
+ element,
+ elements = $('[data-slider-page]');
+
+ elements.each(function(idx) {
+
+ element = {
+ $element: $(this),
+ attached: 1,
+ slider: null,
+ options: {
+ autoWidth: true,
+ item: 4,
+ pager: false,
+ responsive: [
+ {
+ breakpoint: 752,
+ settings: {
+ autoWidth: false,
+ item: 1
+ }
+ }
+ ]
+ }
+ };
+
+ that.elements.push(element);
+
+ });
+
+ elements.imagesLoaded( function() {
+
+ that.windowResize();
+ $(window).resize( $.throttle(1000, that.windowResize.bind(that)) );
+
+ });
+
+};
+
+LightSliderPageInit.prototype.windowResize = function(e) {
+
+ var that = this,
+ windowWidth = $(window).width(),
+ totalWidth, element;
+
+ for(var i=0; i<that.elements.length; i++) {
+
+ element = that.elements[i];
+ totalWidth = 0;
+
+ element.$element.find('li').each(function() {
+ totalWidth += $(this).find('img').get(0).naturalWidth;
+ });
+
+ if(totalWidth > windowWidth) {
+
+ that.attach(that.elements[i]);
+
+ } else {
+
+ that.detach(that.elements[i]);
+
+ }
+
+ }
+
+};
+
+LightSliderPageInit.prototype.attach = function(element) {
+
+ var that = this,
+ windowWidth = $(window).width(),
+ totalWidth = 0;
+
+ element.$element.find('li').each(function() {
+ totalWidth += $(this).find('img').width();
+ });
+
+ if(element.attached !== true) {
+ element.slider = element.$element.lightSlider(element.options);
+ element.$element.removeClass('flexbox');
+ element.attached = true;
+ }
+
+};
+
+LightSliderPageInit.prototype.detach = function(element) {
+
+ var that = this;
+
+ if(element.attached !== false) {
+ if(element.slider) {
+ element.slider.destroy();
+ element.$element.lightSlider = $.fn.lightSlider;
+ }
+ element.slider = null;
+ element.$element.addClass('flexbox');
+ element.attached = false;
+ }
+
+};
+
+module.exports = LightSliderPageInit;
// Page modules
@import 'breadcrumb';
+@import 'page';
@import 'pagination';
// Specific modules
--- /dev/null
+$module: ".page";
+
+#{$module} {
+
+ &__slider {
+
+ background: white;
+
+ @include padding-top(3);
+ @include padding-bottom(3);
+
+ @include mq($until: sm) {
+ @include padding-top(1);
+ }
+
+ }
+
+}
#{$module} {
+ list-style-type: none;
+ margin: 0;
+ padding: 0;
+ height: 520px;
+
//
- // Layout
+ // Not lightslider, lets go with Flexbox W00t W00t
//
-
- &.lightSlider {
-
- @include margin-top(3);
- @include margin-bottom(3);
-
- @include mq($until: sm) {
- @include margin-top(1);
+ &.flexbox {
+ @include mq($from: sm) {
+ display: -ms-flexbox;
+ display: -webkit-flex;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: flex-start;
+ -ms-flex-align: start;
+ align-items: flex-start;
}
-
}
//
//
&__slide {
+ text-align: center;
visibility: hidden;
.lightSlider & {
visibility: visible;
}
+ .flexbox & {
+ visibility: visible;
+ @include mq($from: sm) {
+ -webkit-order: 0;
+ -ms-flex-order: 0;
+ order: 0;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-align-self: auto;
+ -ms-flex-item-align: auto;
+ align-self: auto;
+ }
+ }
+
+ }
+
+ &__wrapper {
+
+ // Nothing ?
+ position: relative;
}
{% load mezzanine_tags %}
-<ul class="slider-page" data-slider-page>
- {% for image in slider_images %}
- <li class="slider-page__slide">
- <img title="{{ image.title }}" alt="{{ image.title }} {{ image.description }} {{ image.credits }}" class="slider-page__img" src="{{ MEDIA_URL}}{% thumbnail image.file 0 520 %}" alt="" /><br />
- <div class="slider-page__caption">
- {{ image.title }}
- {% if image.description %}
- | {{ image.description }}
- {% endif %}
- {% if image.credits %}
- | {{ image.credits }}
- {% endif %}
- </div>
- </li>
- {% endfor %}
-</ul>
+<div class="page__slider">
+ <ul class="slider-page" data-slider-page>
+ {% for image in slider_images %}
+ <li class="slider-page__slide">
+ <div class="slider-page__wrapper">
+ <img title="{{ image.title }}" alt="{{ image.title }} {{ image.description }} {{ image.credits }}" class="slider-page__img" src="{{ MEDIA_URL}}{% thumbnail image.file 0 520 %}" alt="" /><br />
+ <div class="slider-page__caption">
+ {{ image.title }}
+ {% if image.description %}
+ | {{ image.description }}
+ {% endif %}
+ {% if image.credits %}
+ | {{ image.credits }}
+ {% endif %}
+ </div>
+ </div>
+ </li>
+ {% endfor %}
+ </ul>
+</div>
<script src="{% static "vendors/sticky-kit/jquery.sticky-kit.js" %}"></script>
<script src="{% static "vendors/jquery-throttle-debounce/jquery.ba-throttle-debounce.js" %}"></script>
<script src="{% static "vendors/lightslider/dist/js/lightslider.js" %}"></script>
+ <script src="{% static "vendors/imagesloaded/imagesloaded.pkgd.js" %}"></script>
<script src="{% static "js/index.min.js" %}"></script>
{% block extra_js %}{% endblock %}
{% editable_loader %}
{% if article.related_articles.all %}
+ <hr class="mt0 mb0" />
<div class="white-bg pb2">
<div class="container">
<div class="row tac">
<div class="col-xs-12">
- <h2 class="dashed dashed--center">{% trans "Also discover" %}</h2>
+ <h2 class="dashed dashed--center mt2">{% trans "Also discover" %}</h2>
</div>
</div>
<div class="row tac">
"jquery-throttle-debounce": "https://github.com/cowboy/jquery-throttle-debounce.git",
"lightslider": "^1.1.5",
"lightgallery": "^1.2.21",
- "jquery": "https://github.com/components/jquery.git#2.2.4"
+ "jquery": "https://github.com/components/jquery.git#2.2.4",
+ "imagesloaded": "^4.1.1"
}
}