File "code011.html"

Full Path: /home/analogde/www/Projet/liste/code011.html
File size: 6.29 KB
MIME-type: text/html
Charset: utf-8

<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Tree Viewer avec menu contextuel</title>
    <style>
        .context-menu {
            display: none;
            position: absolute;
            background-color: #fff;
            border: 1px solid #ccc;
            box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
            z-index: 1000;
        }
        .context-menu ul {
            list-style: none;
            padding: 0;
            margin: 0;
        }
        .context-menu ul li {
            padding: 10px;
            cursor: pointer;
        }
        .context-menu ul li:hover {
            background-color: #f0f0f0;
        }
        .list-item-span {
            display: inline-block;
            padding: 5px;
            cursor: pointer;
        }
        .list-title {
            font-weight: bold;
            margin-bottom: 10px;
            display: block;
            cursor: pointer;
        }
        .list-content {
            display: none;
            margin-left: 20px;
        }
        .context-menu-link {
            display: block;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
            max-width: 200px; /* Ajustez cette valeur selon vos besoins */
        }
        .context-menu-link a {
           /* display: block;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
            max-width: 200px; /* Ajustez cette valeur selon vos besoins */

            text-decoration: none; 

        }
    </style>
</head>
<body>
    <h1>Tree Viewer avec menu contextuel</h1>

    <div class="list-container">
        <span class="list-title" data-list="list1">Liste 1 (10 éléments)</span>
        <ul id="list1" class="list-content">
            <li><span class="list-item-span">Élément 1</span></li>
            <li><span class="list-item-span">Élément 2</span></li>
            <li><span class="list-item-span">Élément 3</span></li>
            <li><span class="list-item-span">Élément 4</span></li>
            <li><span class="list-item-span">Élément 5</span></li>
            <li><span class="list-item-span">Élément 6</span></li>
            <li><span class="list-item-span">Élément 7</span></li>
            <li><span class="list-item-span">Élément 8</span></li>
            <li><span class="list-item-span">Élément 9</span></li>
            <li><span class="list-item-span">Élément 10</span></li>
        </ul>
    </div>

    <div class="list-container">
        <span class="list-title" data-list="list2">Liste 2 (4 éléments)</span>
        <ul id="list2" class="list-content">
            <li><span class="list-item-span">Élément 1</span></li>
            <li><span class="list-item-span">Élément 2</span></li>
            <li><span class="list-item-span">Élément 3</span></li>
            <li><span class="list-item-span">Élément 4</span></li>
        </ul>
    </div>

    <div class="list-container">
        <span class="list-title" data-list="list3">Liste 3 (7 éléments)</span>
        <ul id="list3" class="list-content">
            <li><span class="list-item-span">Élément 1</span></li>
            <li><span class="list-item-span">Élément 2</span></li>
            <li><span class="list-item-span">Élément 3</span></li>
            <li><span class="list-item-span">Élément 4</span></li>
            <li><span class="list-item-span">Élément 5</span></li>
            <li><span class="list-item-span">Élément 6</span></li>
            <li><span class="list-item-span">Élément 7</span></li>
        </ul>
    </div>

    <div id="contextMenu" class="context-menu">
        <ul>
            <li onclick="handleOption1()">Option 1</li>
            <li onclick="handleOption2()">Option 2</li>
            <li onclick="handleOption3()">Option 3</li>
            <li id="contextMenuLink" class="context-menu-link"><a href="#">Lien vers une autre page</a></li>
        </ul>
    </div>

    <script>
        const contextMenu = document.getElementById('contextMenu');
        const listItemSpans = document.querySelectorAll('.list-item-span');
        const listTitles = document.querySelectorAll('.list-title');
        const contextMenuLink = document.getElementById('contextMenuLink').querySelector('a');

        listTitles.forEach(title => {
            title.addEventListener('click', (event) => {
                const listId = title.getAttribute('data-list');
                const listContent = document.getElementById(listId);
                if (listContent.style.display === 'none' || listContent.style.display === '') {
                    listContent.style.display = 'block';
                } else {
                    listContent.style.display = 'none';
                }
            });
        });

        listItemSpans.forEach(span => {
            span.addEventListener('contextmenu', (event) => {
                event.preventDefault();
                const listTitle = span.closest('.list-container').querySelector('.list-title').textContent;
                const itemText = span.textContent;
                contextMenuLink.href = `otherpage.php?list=${encodeURIComponent(listTitle)}&item=${encodeURIComponent(itemText)}`;
                contextMenu.style.display = 'block';
                contextMenu.style.left = `${event.pageX}px`;
                contextMenu.style.top = `${event.pageY}px`;
            });
        });

        document.addEventListener('click', (event) => {
            if (!contextMenu.contains(event.target) && !event.target.matches('.list-item-span')) {
                contextMenu.style.display = 'none';
            }
        });

        document.addEventListener('keydown', (event) => {
            if (event.key === 'Escape' || event.keyCode === 27) {
                contextMenu.style.display = 'none';
            }
        });

        function handleOption1() {
            alert('Option 1 sélectionnée');
            contextMenu.style.display = 'none';
        }

        function handleOption2() {
            alert('Option 2 sélectionnée');
            contextMenu.style.display = 'none';
        }

        function handleOption3() {
            alert('Option 3 sélectionnée');
            contextMenu.style.display = 'none';
        }
    </script>
</body>
</html>