modals.mdx 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297
  1. ---
  2. title: Modals
  3. summary: Use Bootstrap’s JavaScript modal plugin to add dialogs to your site for lightboxes, user notifications, or completely custom content.
  4. description: Dialogs for notifications and content.
  5. ---
  6. Modals are built with HTML, CSS, and JavaScript. They’re positioned over everything else in the document and remove scroll from the `<body>` so that modal content scrolls instead.
  7. ## Default markup
  8. To create a modal, you need to add a `.modal` element to the document. Inside the `.modal`, you need to add a `.modal-dialog` element, which contains a `.modal-content` element. The `.modal-content` element contains the modal’s header, body, and footer.
  9. ```html
  10. <div class="modal" tabindex="-1">
  11. <div class="modal-dialog" role="document">
  12. <div class="modal-content">
  13. <div class="modal-header">...</div>
  14. <div class="modal-body">...</div>
  15. <div class="modal-footer">...</div>
  16. </div>
  17. </div>
  18. </div>
  19. ```
  20. Look at the example below to see how the modal looks.
  21. ```html example centered height="30rem"
  22. <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModal">
  23. Launch demo modal
  24. </button>
  25. <div class="modal" id="exampleModal" tabindex="-1">
  26. <div class="modal-dialog" role="document">
  27. <div class="modal-content">
  28. <div class="modal-header">
  29. <h5 class="modal-title">Modal title</h5>
  30. <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
  31. </div>
  32. <div class="modal-body">
  33. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Adipisci animi beatae delectus
  34. deleniti dolorem eveniet facere fuga iste nemo nesciunt nihil odio perspiciatis, quia quis
  35. reprehenderit sit tempora totam unde.
  36. </div>
  37. <div class="modal-footer">
  38. <button type="button" class="btn me-auto" data-bs-dismiss="modal">Close</button>
  39. <button type="button" class="btn btn-primary" data-bs-dismiss="modal">Save changes</button>
  40. </div>
  41. </div>
  42. </div>
  43. </div>
  44. ```
  45. ## Prompt and alert
  46. You can use the modal to create a prompt or alert. Look at the example below to see how the prompt and alert look.
  47. ```html example centered height="30rem"
  48. <div class="modal" id="exampleModal" tabindex="-1">
  49. <div class="modal-dialog modal-sm" role="document">
  50. <div class="modal-content">
  51. <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
  52. <div class="modal-status bg-danger"></div>
  53. <div class="modal-body text-center py-4">
  54. <svg
  55. xmlns="http://www.w3.org/2000/svg"
  56. class="icon mb-2 text-danger icon-lg"
  57. width="24"
  58. height="24"
  59. viewBox="0 0 24 24"
  60. stroke-width="2"
  61. stroke="currentColor"
  62. fill="none"
  63. stroke-linecap="round"
  64. stroke-linejoin="round"
  65. >
  66. <path stroke="none" d="M0 0h24v24H0z" fill="none" />
  67. <path d="M12 9v2m0 4v.01" />
  68. <path
  69. d="M5 19h14a2 2 0 0 0 1.84 -2.75l-7.1 -12.25a2 2 0 0 0 -3.5 0l-7.1 12.25a2 2 0 0 0 1.75 2.75"
  70. />
  71. </svg>
  72. <h3>Are you sure?</h3>
  73. <div class="text-secondary">
  74. Do you really want to remove 84 files? What you've done cannot be undone.
  75. </div>
  76. </div>
  77. <div class="modal-footer">
  78. <div class="w-100">
  79. <div class="row">
  80. <div class="col">
  81. <a href="#" class="btn w-100" data-bs-dismiss="modal"> Cancel </a>
  82. </div>
  83. <div class="col">
  84. <a href="#" class="btn btn-danger w-100" data-bs-dismiss="modal"> Delete 84 items </a>
  85. </div>
  86. </div>
  87. </div>
  88. </div>
  89. </div>
  90. </div>
  91. </div>
  92. <script>
  93. document.addEventListener("DOMContentLoaded", function () {
  94. var myModal = new bootstrap.Modal(document.getElementById("exampleModal"));
  95. myModal.show();
  96. });
  97. </script>
  98. ```
  99. ```html example centered height="30rem"
  100. <div class="modal" id="exampleModal" tabindex="-1">
  101. <div class="modal-dialog modal-sm" role="document">
  102. <div class="modal-content">
  103. <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
  104. <div class="modal-status bg-success"></div>
  105. <div class="modal-body text-center py-4">
  106. <svg
  107. xmlns="http://www.w3.org/2000/svg"
  108. class="icon mb-2 text-green icon-lg"
  109. width="24"
  110. height="24"
  111. viewBox="0 0 24 24"
  112. stroke-width="2"
  113. stroke="currentColor"
  114. fill="none"
  115. stroke-linecap="round"
  116. stroke-linejoin="round"
  117. >
  118. <path stroke="none" d="M0 0h24v24H0z" fill="none" />
  119. <circle cx="12" cy="12" r="9" />
  120. <path d="M9 12l2 2l4 -4" />
  121. </svg>
  122. <h3>Payment succeeded</h3>
  123. <div class="text-secondary">
  124. Your payment of $290 has been successfully submitted. Your invoice has been sent to
  125. support@tabler.io.
  126. </div>
  127. </div>
  128. <div class="modal-footer">
  129. <div class="w-100">
  130. <div class="row">
  131. <div class="col">
  132. <a href="#" class="btn w-100" data-bs-dismiss="modal"> Go to dashboard </a>
  133. </div>
  134. <div class="col">
  135. <a href="#" class="btn btn-success w-100" data-bs-dismiss="modal"> View invoice </a>
  136. </div>
  137. </div>
  138. </div>
  139. </div>
  140. </div>
  141. </div>
  142. </div>
  143. <script>
  144. document.addEventListener("DOMContentLoaded", function () {
  145. var myModal = new bootstrap.Modal(document.getElementById("exampleModal"));
  146. myModal.show();
  147. });
  148. </script>
  149. ```
  150. ## Modal with form
  151. You can use the modal to create a form. Look at the example below to see how the form looks.
  152. ```html example centered height="30rem"
  153. <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModal">
  154. Launch modal with form
  155. </button>
  156. <div class="modal" id="exampleModal" tabindex="-1">
  157. <div class="modal-dialog modal-lg" role="document">
  158. <div class="modal-content">
  159. <div class="modal-header">
  160. <h5 class="modal-title">New report</h5>
  161. <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
  162. </div>
  163. <div class="modal-body">
  164. <div class="mb-3">
  165. <label class="form-label">Name</label>
  166. <input
  167. type="text"
  168. class="form-control"
  169. name="example-text-input"
  170. placeholder="Your report name"
  171. />
  172. </div>
  173. <label class="form-label">Report type</label>
  174. <div class="form-selectgroup-boxes row mb-3">
  175. <div class="col-md-6">
  176. <label class="form-selectgroup-item">
  177. <input
  178. type="radio"
  179. name="report-type"
  180. value="1"
  181. class="form-selectgroup-input"
  182. checked
  183. />
  184. <span class="form-selectgroup-label d-flex align-items-center p-3">
  185. <span class="me-3">
  186. <span class="form-selectgroup-check"></span>
  187. </span>
  188. <span class="form-selectgroup-label-content">
  189. <span class="form-selectgroup-title strong mb-1">Simple</span>
  190. <span class="d-block text-secondary"
  191. >Provide only basic data needed for the report</span
  192. >
  193. </span>
  194. </span>
  195. </label>
  196. </div>
  197. <div class="col-md-6">
  198. <label class="form-selectgroup-item">
  199. <input type="radio" name="report-type" value="1" class="form-selectgroup-input" />
  200. <span class="form-selectgroup-label d-flex align-items-center p-3">
  201. <span class="me-3">
  202. <span class="form-selectgroup-check"></span>
  203. </span>
  204. <span class="form-selectgroup-label-content">
  205. <span class="form-selectgroup-title strong mb-1">Advanced</span>
  206. <span class="d-block text-secondary"
  207. >Insert charts and additional advanced analyses to be inserted in the
  208. report</span
  209. >
  210. </span>
  211. </span>
  212. </label>
  213. </div>
  214. </div>
  215. <div class="row">
  216. <div class="col-lg-8">
  217. <div class="mb-3">
  218. <label class="form-label">Report url</label>
  219. <div class="input-group input-group-flat">
  220. <span class="input-group-text"> https://tabler.io/reports/ </span>
  221. <input type="text" class="form-control ps-0" value="report-01" autocomplete="off" />
  222. </div>
  223. </div>
  224. </div>
  225. <div class="col-lg-4">
  226. <div class="mb-3">
  227. <label class="form-label">Visibility</label>
  228. <select class="form-select">
  229. <option value="1" selected>Private</option>
  230. <option value="2">Public</option>
  231. <option value="3">Hidden</option>
  232. </select>
  233. </div>
  234. </div>
  235. </div>
  236. </div>
  237. <div class="modal-body">
  238. <div class="row">
  239. <div class="col-lg-6">
  240. <div class="mb-3">
  241. <label class="form-label">Client name</label>
  242. <input type="text" class="form-control" />
  243. </div>
  244. </div>
  245. <div class="col-lg-6">
  246. <div class="mb-3">
  247. <label class="form-label">Reporting period</label>
  248. <input type="date" class="form-control" />
  249. </div>
  250. </div>
  251. <div class="col-lg-12">
  252. <div>
  253. <label class="form-label">Additional information</label>
  254. <textarea class="form-control" rows="3"></textarea>
  255. </div>
  256. </div>
  257. </div>
  258. </div>
  259. <div class="modal-footer">
  260. <a href="#" class="btn btn-link link-secondary" data-bs-dismiss="modal"> Cancel </a>
  261. <a href="#" class="btn btn-primary ms-auto" data-bs-dismiss="modal">
  262. <svg
  263. xmlns="http://www.w3.org/2000/svg"
  264. class="icon icon-tabler icon-tabler-plus"
  265. width="24"
  266. height="24"
  267. viewBox="0 0 24 24"
  268. stroke-width="2"
  269. stroke="currentColor"
  270. fill="none"
  271. stroke-linecap="round"
  272. stroke-linejoin="round"
  273. >
  274. <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
  275. <path d="M12 5l0 14"></path>
  276. <path d="M5 12l14 0"></path>
  277. </svg>
  278. Create new report
  279. </a>
  280. </div>
  281. </div>
  282. </div>
  283. </div>
  284. ```