react-modal-jkf
v1.0.5
Published
A react modal component
Downloads
1
Readme
react-modal-jkf
Un composant modal React
Installation
npm install --save react-modal-jkfUtilisation
import React from 'react'
import { Modal, useModal } from 'react-modal-jkf'
import 'react-modal-jkf/dist/index.css'
function Example() {
const { isShowing, toggle, openModal, closeModal } = useModal()
return (
<div>
<button onClick={toggle}>Ouvrir la fenêtre modale</button>
<Modal
isShowing={isShowing}
toggle={toggle}
closeModal={closeModal}
btnChildren={btnChildren}
overlayClass='your-overlay-class'
modalClass='your-modal-class'
bodyClass='your-modal-body-class'
btnClass='your-modal-btn-class'
>
Contenu de la fenêtre modale
</Modal>
</div>
)
}Modal
Modal est un composant React qui affiche une fenêtre modale.
Props
overlayClass: La classe CSS à appliquer à l'overlay de la fenêtre modale. Par défaut, c'est la classe.modalOverlaydansstyles.module.css.modalClass: La classe CSS à appliquer à la fenêtre modale. Par défaut, c'est la classe.modaldansstyles.module.css.btnClass: La classe CSS à appliquer au bouton de l'en-tête. Par défaut, c'est la classe.modalBtndansstyles.module.css.bodyClass: La classe CSS à appliquer au corps de la fenêtre modale. Par défaut, c'est la classe.modalBodydansstyles.module.css.
useModal
useModal est un hook personnalisé pour gérer l'état d'affichage d'une fenêtre modale.
Retour
isShowing: Un booléen indiquant si la fenêtre modale est actuellement affichée.toggle: Une fonction qui permet de basculer l'affichage de la fenêtre modale.openModal: Une fonction qui permet d'activer l'affichage la fenêtre modale.closeModal: Une fonction qui permet de désactiver l'affichage de la fenêtre modale.
styles.module.css
Ce fichier contient les styles par défaut pour le composant Modal. Vous pouvez les surcharger en passant vos propres classes CSS (string) aux props correspondantes du composant Modal.
Classes par défaut CSS du fichier styles.module.css:
.modalOverlay {
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
z-index: 10;
box-sizing: border-box;
background-color: rgba(0, 0, 0, 0.75);
}
.modal {
position: relative;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
z-index: 20;
max-width: 500px;
box-sizing: border-box;
width: 90%;
background: #fff;
padding: 15px 30px;
text-align: left;
scrollbar-width: none;
border-radius: 5px;
max-height: 300px;
}
.modalBody {
overflow-y: auto;
max-height: 300px;
}
.modalBtn {
position: absolute;
top: -12.5px;
right: -12.5px;
display: block;
width: 30px;
height: 30px;
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAAAXNSR0IArs4c6QAAA3hJREFUaAXlm8+K00Acx7MiCIJH/yw+gA9g25O49SL4AO3Bp1jw5NvktC+wF88qevK4BU97EmzxUBCEolK/n5gp3W6TTJPfpNPNF37MNsl85/vN/DaTmU6PknC4K+pniqeKJ3k8UnkvDxXJzzy+q/yaxxeVHxW/FNHjgRSeKt4rFoplzaAuHHDBGR2eS9G54reirsmienDCTRt7xwsp+KAoEmt9nLaGitZxrBbPFNaGfPloGw2t4JVamSt8xYW6Dg1oCYo3Yv+rCGViV160oMkcd8SYKnYV1Nb1aEOjCe6L5ZOiLfF120EjWhuBu3YIZt1NQmujnk5F4MgOpURzLfAwOBSTmzp3fpDxuI/pabxpqOoz2r2HLAb0GMbZKlNV5/Hg9XJypguryA7lPF5KMdTZQzHjqxNPhWhzIuAruOl1eNqKEx1tSh5rfbxdw7mOxCq4qS68ZTjKS1YVvilu559vWvFHhh4rZrdyZ69Vmpgdj8fJbDZLJpNJ0uv1cnr/gjrUhQMuI+ANjyuwftQ0bbL6Erp0mM/ny8Fg4M3LtdRxgMtKl3jwmIHVxYXChFy94/Rmpa/pTbNUhstKV+4Rr8lLQ9KlUvJKLyG8yvQ2s9SBy1Jb7jV5a0yapfF6apaZLjLLcWtd4sNrmJUMHyM+1xibTjH82Zh01TNlhsrOhdKTe00uAzZQmN6+KW+sDa/JD2PSVQ873m29yf+1Q9VDzfEYlHi1G5LKBBWZbtEsHbFwb1oYDwr1ZiF/2bnCSg1OBE/pfr9/bWx26UxJL3ONPISOLKUvQza0LZUxSKyjpdTGa/vDEr25rddbMM0Q3O6Lx3rqFvU+x6UrRKQY7tyrZecmD9FODy8uLizTmilwNj0kraNcAJhOp5aGVwsAGD5VmJBrWWbJSgWT9zrzWepQF47RaGSiKfeGx6Szi3gzmX/HHbihwBser4B9UJYpFBNX4R6vTn3VQnez0SymnrHQMsRYGTr1dSk34ljRqS/EMd2pLQ8YBp3a1PLfcqCpo8gtHkZFHKkTX6fs3MY0blKnth66rKCnU0VRGu37ONrQaA4eZDFtWAu2fXj9zjFkxTBOo8F7t926gTp/83Kyzzcy2kZD6xiqxTYnHLRFm3vHiRSwNSjkz3hoIzo8lCKWUlg/YtGs7tObunDAZfpDLbfEI15zsEIY3U/x/gHHc/G1zltnAgAAAABJRU5ErkJggg==');
background-size: contain;
background-repeat: no-repeat;
background-position: center center;
color: #fff;
background-color: black;
border: 1px solid #000;
border-radius: 50%;
font-size: 16px;
padding: 10px;
}
.modalBtn:hover {
cursor: pointer;
}
.modalBody::-webkit-scrollbar {
display: none;
}License
MIT © ThomasJSimpson
