<?php
/**
 * Hyvä Themes - https://hyva.io
 * Copyright © Hyvä Themes. All rights reserved.
 * See COPYING.txt for license details.
 */

declare(strict_types=1);

use Hyva\Theme\Model\Modal\ModalInterface;
use Hyva\Theme\Model\ViewModelRegistry;
use Hyva\Theme\ViewModel\HyvaCsp;
use Magento\Framework\Escaper;
use Magento\Framework\View\Element\Template;

/** @var Template $block */
/** @var Escaper $escaper */
/** @var HyvaCsp $hyvaCsp */
/** @var ViewModelRegistry $viewModels */
/** @var ModalInterface $modal */

/**
 * This is the default modal container template
 * @see \Hyva\Theme\Model\Modal\ModalBuilderInterface
 */

/**
 * The following list of classes is used by default for modal dialogs. They are included here so they are not purged.
 *
 * bg-black/50 bg-white bottom-0 fixed flex inline-block inset-0 inset-x-0 inset-y-0 items-center justify-center
 * left-0 max-h-screen max-h-svh overflow-auto p-10 pb-1 pl-1 pr-1 pt-1 right-0 rounded-lg shadow-xl text-left top-0 z-10 z-50
 */
?>
<div <?= $modal->isInitiallyHidden() ? 'x-cloak' : '' ?>
    data-dialog-ref-name="<?= $escaper->escapeHtmlAttr($modal->getDialogRefName()) ?>"
    x-bind="overlay"
    class="<?= /** @noEscape  */ $modal->getOverlayClasses() ?>">
    <div class="<?= /** @noEscape  */ $modal->getContainerClasses() ?>">
        <div x-ref="<?= $escaper->escapeHtmlAttr($modal->getDialogRefName()) ?>" role="dialog" aria-modal="true"
             <?php if ($modal->isOverlayDisabled()): ?>x-no-overlay<?php endif; ?>
            <?php if ($modal->getAriaLabel()): ?>
                aria-label="<?= $escaper->escapeHtmlAttr($modal->getAriaLabel()) ?>"
            <?php endif; ?>
            <?php if ($modal->getAriaLabelledby()): ?>
                aria-labelledby="<?= $escaper->escapeHtmlAttr($modal->getAriaLabelledby()) ?>"
            <?php endif; ?>
             class="<?= /** @noEscape  */ $modal->getDialogClasses() ?>">
            <?= $modal->getContentHtml() ?>
        </div>
    </div>
    <?php if (! $modal->isInitiallyHidden()): ?>
    <div x-data x-cloak x-init="showDialogOnInit"></div>
    <?php endif; ?>
</div>
<?php if ($selectors = $modal->getFocusTrapExcludeSelectors()): ?>
<script>
    window.addEventListener('DOMContentLoaded', () => {
        hyva.modal.excludeSelectorsFromFocusTrap(<?= /** @noEscape */ json_encode($selectors) ?>);
    });
</script>
    <?php $hyvaCsp->registerInlineScript() ?>
<?php endif; ?>
