_modals.scss 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. $zindex-modal-background: 500;
  2. .fade {
  3. @include transition(opacity 0.15s linear);
  4. opacity: 0;
  5. &.in {
  6. opacity: 1;
  7. }
  8. }
  9. // Kill the scroll on the body
  10. .modal-open {
  11. overflow: hidden;
  12. .content-wrapper {
  13. transform: none;
  14. }
  15. }
  16. // Container that the modal scrolls within
  17. .modal {
  18. box-sizing: border-box;
  19. display: none;
  20. overflow: auto;
  21. overflow-y: scroll;
  22. position: fixed;
  23. top: 0;
  24. // Remove once we drop support for Safari 13.
  25. // stylelint-disable-next-line property-disallowed-list
  26. right: 0;
  27. inset-inline-end: 0;
  28. bottom: 0;
  29. // Remove once we drop support for Safari 13.
  30. // stylelint-disable-next-line property-disallowed-list
  31. left: 0;
  32. inset-inline-start: 0;
  33. z-index: $zindex-modal-background;
  34. }
  35. // Shell div to position the modal with bottom padding
  36. .modal-dialog {
  37. box-sizing: border-box;
  38. margin-inline-start: auto;
  39. margin-inline-end: auto;
  40. padding: 0;
  41. z-index: ($zindex-modal-background + 10);
  42. height: 90%;
  43. width: 85%;
  44. &:before {
  45. content: '';
  46. display: inline-block;
  47. height: 100%;
  48. vertical-align: middle;
  49. margin-inline-end: -0.25em;
  50. }
  51. }
  52. // Actual modal
  53. .modal-content {
  54. box-sizing: border-box;
  55. border-radius: 3px;
  56. width: 98.7%;
  57. position: relative;
  58. background-color: $color-white;
  59. margin-top: 2em;
  60. padding-bottom: 3em;
  61. display: inline-block;
  62. vertical-align: middle;
  63. overflow: hidden;
  64. }
  65. // Modal background
  66. .modal-backdrop {
  67. position: fixed;
  68. top: 0;
  69. // Remove once we drop support for Safari 13.
  70. // stylelint-disable-next-line property-disallowed-list
  71. right: 0;
  72. inset-inline-end: 0;
  73. bottom: 0;
  74. // Remove once we drop support for Safari 13.
  75. // stylelint-disable-next-line property-disallowed-list
  76. left: 0;
  77. inset-inline-start: 0;
  78. z-index: ($zindex-modal-background - 10);
  79. background-color: $color-black;
  80. // Fade for backdrop
  81. &.fade {
  82. opacity: 0;
  83. }
  84. &.in {
  85. opacity: 0.5;
  86. }
  87. }
  88. .modal .close {
  89. @apply w-bg-primary-200 hover:w-bg-black w-border-primary;
  90. padding: 0;
  91. position: absolute;
  92. width: 50px;
  93. height: 50px;
  94. top: 10px;
  95. // Remove once we drop support for Safari 13.
  96. // stylelint-disable-next-line property-disallowed-list
  97. right: 10px;
  98. inset-inline-end: 10px;
  99. z-index: 1;
  100. }
  101. // Where all modal content resides
  102. .modal-body {
  103. position: relative;
  104. padding-bottom: 2em;
  105. header {
  106. @apply w-bg-primary w-text-white;
  107. padding-inline-start: 2em;
  108. padding-inline-end: 100px;
  109. h1 {
  110. @apply w-text-white;
  111. }
  112. }
  113. .header-title {
  114. // stylelint-disable-next-line declaration-no-important
  115. padding-inline-start: 0 !important;
  116. margin-inline-start: -36px;
  117. }
  118. }
  119. @include media-breakpoint-up(sm) {
  120. .modal-dialog {
  121. padding: 0 0 2em $menu-width;
  122. }
  123. }
  124. @include media-breakpoint-up(xl) {
  125. .modal-dialog {
  126. max-width: 100em;
  127. padding: 0 0 2em;
  128. }
  129. }