app/template/default/CustomComponent/modal.twig line 1

Open in your IDE?
  1. {#
  2. Modal Component - Có thể tái sử dụng cho nhiều mục đích khác nhau
  3. Sử dụng:
  4. {% include 'CustomComponent/modal.twig' with {
  5.     id: 'cart-success-modal',
  6.     title: 'Thêm sản phẩm vào giỏ hàng thành công!',
  7.     message: 'Sản phẩm đã được thêm vào giỏ hàng của bạn.',
  8.     showCancelButton: true,
  9.     cancelText: 'Tiếp tục mua sắm',
  10.     showActionButton: true,
  11.     actionText: 'Xem giỏ hàng',
  12.     actionUrl: url('cart'),
  13.     autoRedirect: true,
  14.     redirectUrl: url('cart'),
  15.     redirectDelay: 3000,
  16.     reloadOnCancel: true
  17. } %}
  18. Options:
  19. - reloadOnCancel: true/false - Nếu true, sẽ reload page khi đóng modal (cancel, close, overlay, ESC)
  20. - reloadOnError: true/false - Nếu true, sẽ reload page khi có lỗi (mặc định false)
  21. #}
  22. <div class="ec-modal" id="{{ id|default('default-modal') }}" 
  23.      {% if reloadOnCancel|default(false) %}data-reload-on-cancel="true"{% endif %}
  24.      {% if reloadOnError|default(false) %}data-reload-on-error="true"{% endif %}>
  25.     <div class="ec-modal-overlay">
  26.         <div class="ec-modal-wrap">
  27.             <span class="ec-modal-close">
  28.                 <span class="ec-icon">
  29.                     <img src="{{ asset('assets/icon/cross-dark.svg') }}" alt=""/>
  30.                 </span>
  31.             </span>
  32.             
  33.             <div id="ec-modal-header" class="text-center">
  34.                 {{ title|default('Thông báo') }}
  35.             </div>
  36.             
  37.             {% if message is defined and message %}
  38.                 <div class="ec-modal-message">
  39.                     {{ message }}
  40.                 </div>
  41.             {% endif %}
  42.             
  43.             <div class="ec-modal-box">
  44.                 <div class="ec-role">
  45.                     {% if showCancelButton|default(true) %}
  46.                         <span class="ec-inlineBtn--cancel" id="modal-cancel-btn">
  47.                             {{ cancelText|default('Hủy') }}
  48.                         </span>
  49.                     {% endif %}
  50.                     
  51.                     {% if showActionButton|default(true) %}
  52.                         <a href="{{ actionUrl|default('#') }}" class="ec-inlineBtn--action" id="modal-action-btn">
  53.                             {{ actionText|default('Xác nhận') }}
  54.                         </a>
  55.                     {% endif %}
  56.                 </div>
  57.             </div>
  58.         </div>
  59.     </div>
  60. </div>
  61. {% if autoRedirect|default(false) and redirectUrl|default('') %}
  62. <script>
  63. document.addEventListener('DOMContentLoaded', function() {
  64.     const modal = document.getElementById('{{ id|default('default-modal') }}');
  65.     const redirectUrl = '{{ redirectUrl }}';
  66.     const redirectDelay = {{ redirectDelay|default(3000) }};
  67.     
  68.     if (modal && redirectUrl) {
  69.         setTimeout(function() {
  70.             window.location.href = redirectUrl;
  71.         }, redirectDelay);
  72.     }
  73. });
  74. </script>
  75. {% endif %}