<?php

declare(strict_types=1);

use Fisharebest\Webtrees\Contracts\TimestampInterface;
use Fisharebest\Webtrees\Contracts\UserInterface;
use Fisharebest\Webtrees\GedcomRecord;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\View;
use Illuminate\Support\Collection;

/**
 * @var int                                                                                    $id
 * @var int                                                                                    $limit_low
 * @var int                                                                                    $limit_high
 * @var Collection<int,object{record:GedcomRecord,time:TimestampInterface,user:UserInterface}> $rows
 * @var bool                                                                                   $show_date
 * @var bool                                                                                   $show_user
 */

?>

<div class="list-group">
<?php foreach ($rows as $n => $row): ?>
    <?php if ($n === $limit_low && $rows->count() > $limit_high): ?>
        <div>
            <button class="btn btn-sm btn-secondary my-3" id="show-more-<?= e($id) ?>">
                <?= view('icons/add') ?>
                <?= /* I18N: button label */ I18N::translate('show more') ?>
            </button>
        </div>
    <?php endif ?>

    <a href="<?= e($row->record->url()) ?>" class="<?= $n >= $limit_low && $rows->count() > $limit_high ? 'd-none' : '' ?> list-group-item list-group-item-action">
        <span class="d-block"><?= $row->record->fullName() ?></span>

        <small class="d-block">
            <?php if ($show_user && $show_date): ?>
                <?= /* I18N: [a record was] Changed on <date/time> by <user> */ I18N::translate('Changed on %1$s by %2$s', view('components/datetime', ['timestamp' => $row->time]), e($row->record->lastChangeUser())) ?>
            <?php elseif ($show_date): ?>
                <?= /* I18N: [a record was] Changed on <date/time> */ I18N::translate('Changed on %1$s', view('components/datetime', ['timestamp' => $row->time])) ?>
            <?php elseif ($show_user): ?>
                <?= /* I18N: [a record was] Changed by <user> */ I18N::translate('Changed by %1$s', e($row->user->userName())) ?>
            <?php endif ?>
            </small>
    </a>
<?php endforeach ?>
</div>

<?php View::push('javascript') ?>
<script>
    document.getElementById("show-more-<?= e($id) ?>").addEventListener("click", function (ev) {
        document.querySelectorAll("#block-<?= e($id) ?> .d-none").forEach(function (el) {
            el.classList.remove("d-none");
        });
        ev.target.parentNode.removeChild(ev.target);
    });
</script>
<?php View::endpush() ?>