{% extends 'base.html.twig' %}
{% block page_class %}
page list
{% endblock %}
{% set url = app.request.server.get('REQUEST_SCHEME') ~ '://' ~ app.request.server.get('SERVER_NAME') ~ app.request.server.get('REQUEST_URI') %}
{% block stylesheets %}
{{parent()}}
{{ encore_entry_link_tags('list_styles') }}
{# Leaflet chargé à la demande à l'ouverture de la modale carte (initModalLeaflet)
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" crossorigin=""/>
#}
{% endblock %}
{# Simulation de pagination #}
{# {% set cruisesPerPage = 8 %}
{% set totalCruises = croisieres|length %}
{% set totalPages = (totalCruises / cruisesPerPage)|round(0, 'ceil') %}
{% set currentPage = 1 %}
{% set pageRange = 3 %} #}{% block header_search %}
{# Page liste : pas de barre de recherche #}
{% endblock %}
{% block header_search_mobile %}
{# Page liste : pas de barre de recherche #}
{% endblock %}
{% block content %}
{# Tri des navires #}
{# {% set navires_top = navires|filter(n => n.top == 1) %}
{% set navires_rest = navires|filter(n => n.top != 1) %}
{% set sorted_navires = navires_top|merge(navires_rest) %} #}
{# {% set cruises_number = companiesDatas|reduce((carry, company) => carry + (company.cruises|length), 0) %} #}
{% set cruises_number = cruiseSearchResult.pagination.total_count|default(0) %}
{# Fil d'Ariane #}
<div class="container-fluid">
<div class="row">
<div class="col-lg-1 col-md-1 col-sm-12 list-page-gutter" aria-hidden="true"></div>
<div class="col-lg-10 col-md-10 col-sm-12 list-page-main">
{% set destinationData = null %}
{% set companyData = null %}
{% set destinationId = app.request.query.get('destination') %}
{% set companyId = app.request.query.get('company') %}
{% if destinationId is not null and destinationId is not empty %}
{% set destination = getDestinationById(destinationId + 0) %}
{% if destination %}
{% set destinationData = { name: destination.name, url: '/croisieres?destination=' ~ destinationId } %}
{% endif %}
{% endif %}
{% if companyId is not null and companyId is not empty %}
{% set company = getCompanyById(companyId + 0) %}
{% if company %}
{% set companyData = { name: company.name, url: '/croisieres?company=' ~ companyId } %}
{% endif %}
{% endif %}
{% include 'pages/_includes/_breadcrumb.html.twig' with {
destination: destinationData,
company: companyData
} %}
</div>
<div class="col-lg-1 col-md-1 col-sm-12 list-page-gutter" aria-hidden="true"></div>
</div>
</div>
<div class="container-fluid mb-5">
<div class="row">
<div class="col-lg-1 col-md-1 col-sm-12 list-page-gutter" aria-hidden="true"></div>
<div class="col-lg-10 col-md-10 col-sm-12 list-page-main">
<div id="title">
{% block seo %}
{% if searchMainSubjectInfos.subject is defined and searchMainSubjectInfos.subject is not empty %}
{% include 'pages/_includes/list/seo_templates/_' ~ searchMainSubjectInfos.template ~ '.html.twig' with { content: searchMainSubjectInfos.subject } %}
{% else%}
{% include 'pages/_includes/list/seo_templates/_seo_default.html.twig' %}
{% endif %}
{% endblock %}
</div>
<div class="content layout container-fluid px-0">
{% set filters = {
'ships' : [],
'companies' : [],
'destinations' : [],
'ports' : [],
'durations' : [],
'sort' : null,
'number_of_cruises' : 0
}%}
<div class="row">
<div id="filters" class="col-lg-3 col-md-4 col-sm-12" data-search-url="{{ searchUrl|default(app.request.uri) }}">
{% include 'pages/_includes/list/_filters.html.twig' %}
</div>
<div id="list" class="col-lg-9 col-md-8 col-sm-12">
{% block tags %}
{% include 'pages/_includes/list/_super-tags.html.twig' %}
{% endblock %}
<div class="tag_by_mobile mobile">
<div class="tag_by accordion">
<button class="tagBy accordion-trigger">
<span>{{ 'list.sort.label'|trans }}</span>
<div class="icon">{{ getLucidIcon('arrow-down-wide-narrow') }}</div>
</button>
<ul
class=" br1 accordion-content"
data-sort-label-date-desc="{{ 'list.sort.date_desc'|trans|e('html_attr') }}"
data-sort-label-date-asc="{{ 'list.sort.date_asc'|trans|e('html_attr') }}"
data-sort-label-price-asc="{{ 'list.sort.price_asc'|trans|e('html_attr') }}"
data-sort-label-price-desc="{{ 'list.sort.price_desc'|trans|e('html_attr') }}"
data-sort-label-duration-asc="{{ 'list.sort.duration_asc'|trans|e('html_attr') }}"
data-sort-label-duration-desc="{{ 'list.sort.duration_desc'|trans|e('html_attr') }}"
></ul>
</div>
</div>
{#
{% block cruises %}
{% include '_snippets/mocks/card_list.html.twig' %}
{% endblock %} #}
{# Zone AJAX (cf. _cruise_search_ajax.js) : au filtre / pagination,
seuls #cruise_results, le scroll infini et la pagination sont mis à jour. #}
{% set cruise_list = cruiseSearchResult.paginated_result|default([]) %}
<div class="cruise-search-zone" data-cruise-search-zone>
<div
id="cruise_results"
class="cruises-container"
{% if cruiseSearchResult.pagination is defined %}
data-cruise-per-page="{{ cruiseSearchResult.pagination.per_page|default(5) }}"
data-cruise-total-count="{{ cruiseSearchResult.pagination.total_count|default(0) }}"
data-cruise-total-pages="{{ cruiseSearchResult.pagination.total_pages|default(1) }}"
data-cruise-current-page="{{ cruiseSearchResult.pagination.current_page|default(1) }}"
{% endif %}
>
{% if cruise_list is not empty %}
{% for cruise in cruise_list %}
{% set content = { isFloa: true } %}
{% include '_snippets/components/cards/list_card.html.twig' with {
cruise: cruise,
content: content
} %}
{% endfor %}
{% else %}
{% include 'pages/_includes/list/_no_results_card.html.twig' %}
{% endif %}
</div>
{% if cruise_list is not empty %}
<div class="cruise-infinite-scroll" data-cruise-infinite-scroll aria-live="polite">
<div class="cruise-infinite-scroll__sentinel" data-cruise-infinite-sentinel></div>
<div class="cruise-infinite-scroll__loading" data-cruise-infinite-loading hidden>
<p class="cruise-infinite-scroll__status">Chargement des croisières…</p>
{% for skeletonIndex in 1..3 %}
<div class="cruise-skeleton" aria-hidden="true">
<div class="cruise-skeleton__media"></div>
<div class="cruise-skeleton__main">
<div class="cruise-skeleton__line cruise-skeleton__line--xs"></div>
<div class="cruise-skeleton__line cruise-skeleton__line--title"></div>
<div class="cruise-skeleton__line"></div>
<div class="cruise-skeleton__line cruise-skeleton__line--md"></div>
<div class="cruise-skeleton__line cruise-skeleton__line--sm"></div>
</div>
<div class="cruise-skeleton__aside">
<div class="cruise-skeleton__price"></div>
<div class="cruise-skeleton__cta"></div>
</div>
</div>
{% endfor %}
</div>
<p class="cruise-infinite-scroll__end" data-cruise-infinite-end hidden>Toutes les croisières sont affichées.</p>
<p class="cruise-infinite-scroll__error" data-cruise-infinite-error hidden>Impossible de charger la page suivante.</p>
</div>
<div class="cruise-search-paging is-visually-hidden" data-cruise-search-paging aria-hidden="true">
{% include '@CroisilandCommon/pagination/_pagination.html.twig' with {
'pagination': cruiseSearchResult.pagination
} %}
</div>
{% endif %}
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-1 col-md-1 col-sm-12 list-page-gutter" aria-hidden="true"></div>
</div>
<div class="list-footer-stack" data-list-footer-stack hidden>
<div class="list-page-dock" data-list-page-dock>
<button type="button" class="list-page-dock__footer" data-list-dock-footer aria-expanded="false" data-label-show="{{ 'list.dock.show_footer'|trans|e('html_attr') }}" data-label-hide="{{ 'list.dock.hide_footer'|trans|e('html_attr') }}">
{{ 'list.dock.show_footer'|trans }}
</button>
</div>
<div class="list-footer-panel" data-list-footer-panel inert>
<footer class="footer list-footer-panel__footer">
{% include 'pages/_includes/base/_footer.html.twig' with { showFloatingActions: false } %}
</footer>
</div>
</div>
<div
id="cruise-search-loader-modal"
class="cruise-search-loader-modal"
hidden
aria-hidden="true"
role="alertdialog"
aria-modal="true"
aria-labelledby="cruise-search-loader-title"
>
<div class="cruise-search-loader-modal__panel" tabindex="-1">
<div class="cruise-search-loader-modal__spinner" aria-hidden="true"></div>
<p id="cruise-search-loader-title" class="cruise-search-loader-modal__text">
{{ 'list.search.updating'|trans }}
</p>
</div>
</div>
{% endblock %}
{% block javascripts %}
{{ parent() }}
{{ encore_entry_script_tags('list_page') }}
{# Leaflet chargé à la demande — voir initModalLeaflet (map-bundle)
<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js" crossorigin=""></script>
#}
{% endblock %}