{% extends 'base0.html' %}
{% load markup %}

{% block page-content %}

{% filter restructuredtext %}
w3schools.com supplies an example; here is the full code:

https://www.w3schools.com/howto/tryit.asp?filename=tryhow_css_modal2

Isn't this too much fuss for such a simple task ?


.. figure:: /static/images/w3schools_example.png
   :alt: w3school modal example
   :scale: 80 %

   w3school modal example

Well, actually it's not that bad.

Here is how it works:

- a semi-transparent and initially hidden "modal" element covers the whole html page,
  thus providing a backdrop

- a nested "modal content" element has been given the style to look as a popup window

- you can show or hide the modal by playing with it's display CSS attribute


.. code:: javascript

    <script language="javascript">

        $(document).ready(function() {

            // Get the modal
            var modal = $('#my-modal');

            // Open the modal
            var button = $('#button-open-modal');
            button.on('click', function(event) {
                modal.css('display', 'block');
            })

            // Close the modal
            var close_button = $('.close');
            close_button.on('click', function(event) {
                modal.css('display', 'none');
            })

            // When the user clicks anywhere outside of the modal, close it
            $(window).on('click', function(event) {
                if (event.target.id == modal.attr('id')) {
                    modal.css('display', 'none');
                }
            });

        });

    </script>

{% endfilter %}

    <h2 class="code-sample">Code sample</h2>

    <div>A basic modal box with pure Javascript ...</div>

    <button id="button-open-modal" class="btn btn-primary">Open Modal</button>

    <div id="my-modal" class="my-modal">
        <div class="my-modal-content">
            <div class="my-modal-header">
                <span class="close">&times;</span>
                <h2>Modal Header</h2>
            </div>
            <div class="my-modal-body">
                <p>Some text in the Modal Body</p>
                <p>Some other text...</p>
            </div>
            <div class="my-modal-footer">
                <h3>Modal Footer</h3>
            </div>
        </div>
    </div>

{% endblock page-content %}


{% block extrastyle %}
    <style>

        .my-modal {
            display: none; /* Hidden by default */
            position: fixed; /* Stay in place */
            z-index: 1; /* Sit on top */
            padding-top: 200px; /* Location of the box */
            left: 0;
            top: 0;
            width: 100%; /* Full width */
            height: 100%; /* Full height */
            overflow: auto; /* Enable scroll if needed */
            background-color: rgb(0,0,0); /* Fallback color */
            background-color: rgba(0,0,0,0.4); /* Black w/ opacity */
        }

        .my-modal-content {
            position: relative;
            background-color: #fefefe;
            margin: auto;
            padding: 0;
            border: 1px solid #888;
            box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19);
            -webkit-animation-name: animatetop;
            -webkit-animation-duration: 0.4s;
            animation-name: animatetop;
            animation-duration: 0.4s;
            max-width: 400px;
        }

        .my-modal-header {
            padding: 2px 16px;
            background-color: #5cb85c;
            color: white;
        }

        .my-modal-body {
            padding: 40px;
        }

        .my-modal-footer {
            padding: 2px 16px;
            background-color: #5cb85c;
            color: white;
        }

        /* The Close Button */
        .close {
            color: white;
            float: right;
            font-size: 28px;
            font-weight: bold;
        }

        .close:hover,
        .close:focus {
            color: #000;
            text-decoration: none;
            cursor: pointer;
        }

    </style>
{% endblock extrastyle %}


{% block extrajs %}
    <script type="text/javascript">

        'use strict';

        $(document).ready(function() {

            // Get the modal
            var modal = $('#my-modal');

            // Open the modal
            var button = $('#button-open-modal');
            button.on('click', function(event) {
                modal.css('display', 'block');
            })

            // Close the modal
            var close_button = $('.close');
            close_button.on('click', function(event) {
                modal.css('display', 'none');
            })

            // When the user clicks anywhere outside of the modal, close it
            $(window).on('click', function(event) {
                if (event.target.id == modal.attr('id')) {
                    modal.css('display', 'none');
                }
            });

        });

    </script>
{% endblock %}