templates/pages/_includes/details/_cabin-modal-instance.html.twig line 1

Open in your IDE?
  1. {# Instance de modale cabine (un sous-type) #}
  2. <div class="cabin-modal-overlay cabin-modal-instance"
  3. data-cabin-id="{{ cabinTypeId }}"
  4. data-subtype-id="{{ subTypeId }}">
  5. <div class="cabin-modal" id="cabin-modal-{{ cabinTypeId }}-{{ subTypeId }}">
  6. <nav>
  7. <div class="modale-title text-lg-sbd color-secondary-dark">
  8. <div>
  9. {{ getLucidIcon('bed') }}
  10. <span>{{ subTypeName }} - {{ cabinTypeName }}</span>
  11. </div>
  12. <div class="cabin-modal-close" id="close-cabin-modal" aria-label="{{ 'ddd.cabin_modal.close_modal'|trans }}">
  13. {{ getLucidIcon('x') }}
  14. </div>
  15. </div>
  16. </nav>
  17. <div class="box">
  18. <div class="carousel-wrapper" id="cabin-carousel-wrapper">
  19. <div class="carousel-container">
  20. <div class="carousel" id="cabin-carousel-{{ cabinTypeId }}-{{ subTypeId }}">
  21. {% if allPhotos|length > 0 %}
  22. {% for photo in allPhotos %}
  23. {% set finalUrl = photo.url ? photo.url : placeholderImage %}
  24. <div class="carousel-slide">
  25. <img src="{{ finalUrl }}"
  26. alt="{{ subTypeName }}"
  27. class="carousel-media"
  28. onerror="this.onerror=null; this.src='{{ placeholderImage }}';" />
  29. <div class="carousel-label">{{ subTypeName }}</div>
  30. </div>
  31. {% endfor %}
  32. {% else %}
  33. <div class="carousel-slide">
  34. <img src="{{ placeholderImage }}"
  35. alt="{{ 'common.default_image'|trans }}"
  36. class="carousel-media" />
  37. <div class="carousel-label">{{ 'common.default_image'|trans }}</div>
  38. </div>
  39. {% endif %}
  40. </div>
  41. </div>
  42. <button class="carousel-arrow left" aria-label="{{ 'common.previous'|trans }}">{{ getLucidIcon('circle-chevron-left') }}</button>
  43. <button class="carousel-arrow right" aria-label="{{ 'common.next'|trans }}">{{ getLucidIcon('circle-chevron-right') }}</button>
  44. </div>
  45. {% if allPhotos|length > 1 %}
  46. <div class="carousel-thumbnails" id="cabin-thumbnails-{{ cabinTypeId }}-{{ subTypeId }}">
  47. {% for photo in allPhotos %}
  48. {% set finalUrl = photo.url ? photo.url : placeholderImage %}
  49. <div class="thumbnail">
  50. <img src="{{ finalUrl }}"
  51. alt="{{ subTypeName }}"
  52. onerror="this.onerror=null; this.src='{{ placeholderImage }}';" />
  53. </div>
  54. {% endfor %}
  55. </div>
  56. {% elseif allPhotos|length == 0 %}
  57. <div class="carousel-thumbnails" id="cabin-thumbnails-{{ cabinTypeId }}-{{ subTypeId }}">
  58. <div class="thumbnail">
  59. <img src="{{ placeholderImage }}" alt="{{ 'common.default_image'|trans }}" />
  60. </div>
  61. </div>
  62. {% endif %}
  63. <div class="cabin-modal-content-grid">
  64. <div class="cabin-info-column">
  65. <div class="cabin-info">
  66. <div class="cabin-section-title text-sm-md color-secondary-dark">{{ 'ddd.summary.your_cabin'|trans }}</div>
  67. <div class="cabin-description text-xs-md color-secondary-dark cabin-section-content">
  68. {% if subTypeDescription %}
  69. "{{ subTypeDescription|striptags|raw }}"
  70. {% else %}
  71. {{ 'ddd.cabin_modal.default_description'|trans }}
  72. {% endif %}
  73. </div>
  74. <div class="cabin-info-details warning cabin-section-content text-xs-rg color-secondary-dark">
  75. {{ 'details.cabin_modal.warning'|trans }}
  76. </div>
  77. </div>
  78. </div>
  79. <div class="cabin-atmosphere-column">
  80. {% if entityAtmospheres|default([])|length > 0 %}
  81. <div class="cabin-atmospheres-list">
  82. <div class="cabin-section-title text-sm-md color-secondary-dark">{{ 'details.cabin_modal.available_in_atmospheres'|trans({'%count%': entityAtmospheres|length, '%plural%': entityAtmospheres|length > 1 ? 's' : ''}) }}</div>
  83. <div class="atmospheres-container cabin-section-content">
  84. {% for atmosphere in entityAtmospheres %}
  85. <div class="cabin-atmosphere-info">
  86. <div class="atmosphere-desc shimmered">
  87. <div class="title">
  88. <h3 class="atmosphere-name text-sm-bd color-card-background">{{ atmosphere.name|default('') }}</h3>
  89. <div class="atmosphere-marketing-name text-xs-md color-secondary-dark">{{ atmosphere.marketingName|default('')|striptags|raw }}</div>
  90. </div>
  91. <div class="atmosphere-description text-2xs-md color-grey-text">{{ atmosphere.shortDescription|default('')|striptags|raw }}</div>
  92. </div>
  93. </div>
  94. {% endfor %}
  95. </div>
  96. </div>
  97. {% endif %}
  98. </div>
  99. </div>
  100. </div>
  101. <div class="cabin-modal-footer">
  102. <div class="cabin-modal-price">
  103. <span class="price-label text-xl-md color-primary-dark">{{ 'common.from'|trans }}</span>
  104. <span class="price-value text-4xl-bd color-primary-dark" data-default-price="{{ (minPrice ?? 0)|round(0, 'ceil') }}">
  105. {{ (minPrice ?? 0)|number_format(0, ',', ' ') }}€
  106. </span>
  107. <span class="price-per-person text-md-lt color-primary-dark">{{ 'common.per_person_short'|trans }}</span>
  108. </div>
  109. <div class="cabin-modal-actions">
  110. <button class="btn medium cabin-modal-back">
  111. <span>{{ 'common.back'|trans }}</span>
  112. </button>
  113. </div>
  114. </div>
  115. </div>
  116. </div>