mirror of
https://github.com/picocss/pico.git
synced 2025-04-21 17:16:14 -04:00
Docs: Modal
This commit is contained in:
parent
0b3f1656f2
commit
31c16b00ca
4 changed files with 34 additions and 6 deletions
|
@ -26,11 +26,9 @@ const isModalOpen = modal => {
|
|||
|
||||
// Open modal
|
||||
const openModal = modal => {
|
||||
setTimeout(() => {
|
||||
visibleModal = modal;
|
||||
}, 100);
|
||||
document.documentElement.classList.add(isOpenClass, openingClass);
|
||||
setTimeout(() => {
|
||||
visibleModal = modal;
|
||||
document.documentElement.classList.remove(openingClass);
|
||||
}, 200);
|
||||
modal.setAttribute('open', true);
|
||||
|
|
2
docs/js/modal.min.js
vendored
2
docs/js/modal.min.js
vendored
|
@ -1 +1 @@
|
|||
"use strict";var isOpenClass="modal-is-open",openingClass="modal-is-opening",closingClass="modal-is-closing",visibleModal=null,toggleModal=function(e){e.preventDefault();e=document.getElementById(e.target.getAttribute("data-target"));(void 0!==e&&null!=e&&isModalOpen(e)?closeModal:openModal)(e)},isModalOpen=function(e){return!(!e.hasAttribute("open")||"false"==e.getAttribute("open"))},openModal=function(e){setTimeout(function(){visibleModal=e},100),document.documentElement.classList.add(isOpenClass,openingClass),setTimeout(function(){document.documentElement.classList.remove(openingClass)},200),e.setAttribute("open",!0)},closeModal=function(e){visibleModal=null,document.documentElement.classList.add(closingClass),setTimeout(function(){document.documentElement.classList.remove(closingClass,isOpenClass),e.removeAttribute("open")},200)};document.addEventListener("click",function(e){null!=visibleModal&&(visibleModal.querySelector("article").contains(e.target)||closeModal(visibleModal))}),document.addEventListener("keydown",function(e){"Escape"===e.key&&null!=visibleModal&&closeModal(visibleModal)});
|
||||
"use strict";var isOpenClass="modal-is-open",openingClass="modal-is-opening",closingClass="modal-is-closing",visibleModal=null,toggleModal=function(e){e.preventDefault();e=document.getElementById(e.target.getAttribute("data-target"));(void 0!==e&&null!=e&&isModalOpen(e)?closeModal:openModal)(e)},isModalOpen=function(e){return!(!e.hasAttribute("open")||"false"==e.getAttribute("open"))},openModal=function(e){document.documentElement.classList.add(isOpenClass,openingClass),setTimeout(function(){visibleModal=e,document.documentElement.classList.remove(openingClass)},200),e.setAttribute("open",!0)},closeModal=function(e){visibleModal=null,document.documentElement.classList.add(closingClass),setTimeout(function(){document.documentElement.classList.remove(closingClass,isOpenClass),e.removeAttribute("open")},200)};document.addEventListener("click",function(e){null!=visibleModal&&(visibleModal.querySelector("article").contains(e.target)||closeModal(visibleModal))}),document.addEventListener("keydown",function(e){"Escape"===e.key&&null!=visibleModal&&closeModal(visibleModal)});
|
|
@ -62,4 +62,11 @@
|
|||
</<b>a</b>>
|
||||
</<b>footer</b>>
|
||||
</<b>article</b>>
|
||||
</<b>dialog</b>></code></pre></footer></article><p>As Pico focuses on CSS styles, we have not integrated any JavaScript in the library.</p></section><footer><hr><p><small>Code licensed <a href="https://github.com/picocss/pico/blob/master/LICENSE.md" class="secondary">MIT</a></small></p></footer></div></main><dialog id="modal-example"><article><a href="#close" aria-label="Close" class="close" data-target="modal-example" onclick="toggleModal(event)"></a><h3>Confirm your action!</h3><p>Cras sit amet maximus risus. Pellentesque sodales odio sit amet augue finibus pellentesque. Nullam finibus risus non semper euismod.</p><footer><a href="#cancel" role="button" class="secondary" data-target="modal-example" onclick="toggleModal(event)">Cancel</a><a href="#confirm" role="button" data-target="modal-example" onclick="toggleModal(event)">Confirm</a></footer></article></dialog><script src="js/commons.min.js"></script><script src="js/modal.min.js"></script></body></html>
|
||||
</<b>dialog</b>></code></pre></footer></article><p>Pico does not include JavaScript code. You will need to implement your JS to interact with modals.</p><p>As a starting point, you can look at the JavaScript used in this documentation: <a href="https://github.com/picocss/pico/blob/dev/docs/js/modal.js">js/modal.js</a>.</p><p>To make a modal appear, add the <code><i>open</i></code> attribute to the <code><<b>dialog</b>></code> container.</p><pre><code><em><!-- Open modal--></em>
|
||||
<<b>dialog</b> <i>open</i>>
|
||||
</<b>dialog</b>>
|
||||
|
||||
<em><!-- Modal closed --></em>
|
||||
<<b>dialog</b>>
|
||||
</<b>dialog</b>>
|
||||
</code></pre><h2>Utilities</h2><p>Modals come with 3 utility classes.</p><p><code><<b>html</b> <i>class</i>=<u>"modal-is-open"</u>></code> blurs the background and blocks any scrolling and interactions below the modal.</p><p><code><<b>html</b> <i>class</i>=<u>"modal-is-opening"</u>></code> brings an opening animation.</p><p><code><<b>html</b> <i>class</i>=<u>"modal-is-closing"</u>></code> brings a closing animation.</p></section><footer><hr><p><small>Code licensed <a href="https://github.com/picocss/pico/blob/master/LICENSE.md" class="secondary">MIT</a></small></p></footer></div></main><dialog id="modal-example"><article><a href="#close" aria-label="Close" class="close" data-target="modal-example" onclick="toggleModal(event)"></a><h3>Confirm your action!</h3><p>Cras sit amet maximus risus. Pellentesque sodales odio sit amet augue finibus pellentesque. Nullam finibus risus non semper euismod.</p><footer><a href="#cancel" role="button" class="secondary" data-target="modal-example" onclick="toggleModal(event)">Cancel</a><a href="#confirm" role="button" data-target="modal-example" onclick="toggleModal(event)">Confirm</a></footer></article></dialog><script src="js/commons.min.js"></script><script src="js/modal.min.js"></script></body></html>
|
|
@ -138,7 +138,30 @@
|
|||
</footer>
|
||||
</article>
|
||||
|
||||
<p>As Pico focuses on CSS styles, we have not integrated any JavaScript in the library.</p>
|
||||
<p>Pico does not include JavaScript code. You will need to implement your JS to interact with modals.</p>
|
||||
|
||||
<p>As a starting point, you can look at the JavaScript used in this documentation: <a href="https://github.com/picocss/pico/blob/dev/docs/js/modal.js">js/modal.js</a>.</p>
|
||||
|
||||
<p>To make a modal appear, add the <code><i>open</i></code> attribute to the <code><<b>dialog</b></u>></code> container.</p>
|
||||
|
||||
<pre><code><em><!-- Open modal--></em>
|
||||
<<b>dialog</b> <i>open</i>>
|
||||
</<b>dialog</b>>
|
||||
|
||||
<em><!-- Modal closed --></em>
|
||||
<<b>dialog</b>>
|
||||
</<b>dialog</b>>
|
||||
</code></pre>
|
||||
|
||||
<h2>Utilities</h2>
|
||||
|
||||
<p>Modals come with 3 utility classes.</p>
|
||||
|
||||
<p><code><<b>html</b> <i>class</i>=<u>"modal-is-open"</u>></code> blurs the background and blocks any scrolling and interactions below the modal.</p>
|
||||
|
||||
<p><code><<b>html</b> <i>class</i>=<u>"modal-is-opening"</u>></code> brings an opening animation.</p>
|
||||
|
||||
<p><code><<b>html</b> <i>class</i>=<u>"modal-is-closing"</u>></code> brings a closing animation.</p>
|
||||
|
||||
</section>
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue