{#
Modal Component - Có thể tái sử dụng cho nhiều mục đích khác nhau
Sử dụng:
{% include 'CustomComponent/modal.twig' with {
id: 'cart-success-modal',
title: 'Thêm sản phẩm vào giỏ hàng thành công!',
message: 'Sản phẩm đã được thêm vào giỏ hàng của bạn.',
showCancelButton: true,
cancelText: 'Tiếp tục mua sắm',
showActionButton: true,
actionText: 'Xem giỏ hàng',
actionUrl: url('cart'),
autoRedirect: true,
redirectUrl: url('cart'),
redirectDelay: 3000,
reloadOnCancel: true
} %}
Options:
- reloadOnCancel: true/false - Nếu true, sẽ reload page khi đóng modal (cancel, close, overlay, ESC)
- reloadOnError: true/false - Nếu true, sẽ reload page khi có lỗi (mặc định false)
#}
<div class="ec-modal" id="{{ id|default('default-modal') }}"
{% if reloadOnCancel|default(false) %}data-reload-on-cancel="true"{% endif %}
{% if reloadOnError|default(false) %}data-reload-on-error="true"{% endif %}>
<div class="ec-modal-overlay">
<div class="ec-modal-wrap">
<span class="ec-modal-close">
<span class="ec-icon">
<img src="{{ asset('assets/icon/cross-dark.svg') }}" alt=""/>
</span>
</span>
<div id="ec-modal-header" class="text-center">
{{ title|default('Thông báo') }}
</div>
{% if message is defined and message %}
<div class="ec-modal-message">
{{ message }}
</div>
{% endif %}
<div class="ec-modal-box">
<div class="ec-role">
{% if showCancelButton|default(true) %}
<span class="ec-inlineBtn--cancel" id="modal-cancel-btn">
{{ cancelText|default('Hủy') }}
</span>
{% endif %}
{% if showActionButton|default(true) %}
<a href="{{ actionUrl|default('#') }}" class="ec-inlineBtn--action" id="modal-action-btn">
{{ actionText|default('Xác nhận') }}
</a>
{% endif %}
</div>
</div>
</div>
</div>
</div>
{% if autoRedirect|default(false) and redirectUrl|default('') %}
<script>
document.addEventListener('DOMContentLoaded', function() {
const modal = document.getElementById('{{ id|default('default-modal') }}');
const redirectUrl = '{{ redirectUrl }}';
const redirectDelay = {{ redirectDelay|default(3000) }};
if (modal && redirectUrl) {
setTimeout(function() {
window.location.href = redirectUrl;
}, redirectDelay);
}
});
</script>
{% endif %}