Aucune description
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

_modal.scss 7.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336
  1. /* Modals
  2. ******************************************************************************* */
  3. /* Modal Shadow */
  4. .modal-content {
  5. box-shadow: var(--#{$prefix}modal-box-shadow);
  6. }
  7. .modal {
  8. .btn-close {
  9. padding: .563rem;
  10. background-color: var(--#{$prefix}paper-bg);
  11. background-image: none;
  12. box-shadow: var(--#{$prefix}box-shadow-xs);
  13. filter: none;
  14. opacity: 1;
  15. transform: translate(23px, -25px);
  16. @include border-radius($border-radius-sm);
  17. @include transition(all .23s ease .1s);
  18. /* For hover effect of close btn */
  19. &:hover,
  20. &:focus,
  21. &:active {
  22. opacity: 1;
  23. outline: 0;
  24. transform: translate(20px, -20px);
  25. :dir(rtl) & {
  26. transform: translate(26px, -20px);
  27. }
  28. }
  29. &::before{
  30. display: block;
  31. background-color: var(--#{$prefix}secondary-color);
  32. block-size: .6875rem;
  33. content: "";
  34. inline-size: .6875rem;
  35. mask-image: str-replace(str-replace($btn-close-bg, "#{$btn-close-color}", currentColor), "#", "%23");
  36. mask-repeat: no-repeat;
  37. mask-size: 100% 100%;
  38. }
  39. }
  40. .modal-header {
  41. position: relative;
  42. .btn-close {
  43. position: absolute;
  44. inset-block-start: $modal-dialog-margin;
  45. inset-inline-end: $modal-dialog-margin - .6875rem;
  46. :dir(rtl) & {
  47. inset-inline-end: $modal-dialog-margin - 3.55rem;
  48. }
  49. }
  50. }
  51. /* modal footer */
  52. .modal-footer {
  53. padding: $modal-footer-padding;
  54. > * {
  55. margin-block: 0;
  56. &:last-child {
  57. margin-inline-end: 0;
  58. }
  59. &:first-child {
  60. margin-inline-start: 0;
  61. }
  62. }
  63. }
  64. /*
  65. ! remove close button animation & shadow for .modal-dialog-scrollable, .modal-fullscreen, .modal-top modal */
  66. .modal-dialog-scrollable,
  67. .modal-fullscreen,
  68. &.modal-top {
  69. .btn-close {
  70. box-shadow: none;
  71. transform: translate(0, 0);
  72. &:hover {
  73. transform: translate(0, 0);
  74. }
  75. }
  76. }
  77. }
  78. .carousel-control-prev,
  79. .carousel-control-next {
  80. color: var(--#{$prefix}primary);
  81. &:hover,
  82. &:focus {
  83. color: var(--#{$prefix}primary);
  84. }
  85. }
  86. /* Onboarding Modals
  87. ******************************************************************************* */
  88. .modal-onboarding {
  89. .close-label {
  90. position: absolute;
  91. font-size: .8rem;
  92. inset-block-start: .85rem;
  93. opacity: $btn-close-opacity;
  94. &:hover {
  95. opacity: $btn-close-hover-opacity;
  96. }
  97. }
  98. .onboarding-content {
  99. margin: 2rem;
  100. }
  101. form {
  102. margin-block-start: 2rem;
  103. text-align: start;
  104. }
  105. // Carousel Inside Modal
  106. .carousel .carousel-indicators {
  107. inset-block-end: -10px;
  108. [data-bs-target] {
  109. background-color: var(--#{$prefix}primary);
  110. }
  111. }
  112. .carousel-control-prev,
  113. .carousel-control-next {
  114. inset-block: auto .75rem;
  115. opacity: 1;
  116. :dir(rtl) & {
  117. flex-direction: row-reverse;
  118. }
  119. }
  120. .carousel-control-prev {
  121. inset-inline-start: 1rem;
  122. :dir(rtl) & {
  123. inset-inline-end: 1rem;
  124. inset-inline-start: auto;
  125. }
  126. }
  127. .carousel-control-next {
  128. inset-inline-end: 0;
  129. :dir(rtl) & {
  130. inset-inline-end: auto;
  131. inset-inline-start: 0;
  132. }
  133. }
  134. .onboarding-horizontal {
  135. display: flex;
  136. align-items: center;
  137. justify-content: space-between;
  138. .onboarding-media {
  139. margin: 2rem;
  140. margin-block-start: 0;
  141. }
  142. }
  143. }
  144. /* Top modals
  145. ******************************************************************************* */
  146. .modal-top {
  147. .modal-dialog {
  148. margin-block-start: 0;
  149. }
  150. .modal-content {
  151. @include border-top-radius(0);
  152. }
  153. }
  154. /* Transparent modals
  155. ****************************************************************************** */
  156. .modal-transparent {
  157. .modal-dialog {
  158. display: flex;
  159. margin-block: 0;
  160. margin-inline: auto;
  161. min-block-size: 100vh;
  162. }
  163. .modal-content {
  164. border: 0;
  165. margin: auto;
  166. background: transparent;
  167. box-shadow: none;
  168. inline-size: 100%;
  169. }
  170. .btn-close {
  171. position: absolute;
  172. background-color: transparent;
  173. background-image:
  174. str-replace(
  175. str-replace(str-replace($btn-close-bg, "#{$btn-close-color}", $white), "#", "%23"),
  176. "fill-opacity='0.5'",
  177. "fill-opacity='1'"
  178. );
  179. box-shadow: none;
  180. inset-block-start: 0;
  181. inset-inline-end: $modal-inner-padding;
  182. :dir(rtl) & {
  183. inset-inline-end: calc($modal-inner-padding * -2);
  184. }
  185. opacity: 1;
  186. padding-block: $btn-close-padding-y;
  187. padding-inline: $btn-close-padding-x;
  188. &::before {
  189. content: none;
  190. }
  191. }
  192. }
  193. /* Modal Simple (Modal Examples)
  194. ****************************************************************************** */
  195. .modal-simple {
  196. .modal-content {
  197. padding: $modal-simple-padding;
  198. @include media-breakpoint-down(md) {
  199. padding: calc($modal-simple-padding * .5);
  200. }
  201. }
  202. .btn-close {
  203. position: absolute;
  204. inset-block-start: -($modal-simple-padding - $modal-simple-close-position);
  205. inset-inline-end: -($modal-simple-padding - $modal-simple-close-position);
  206. :dir(rtl) & {
  207. inset-inline-end: -($modal-simple-padding + $modal-simple-close-position * 2);
  208. }
  209. // For small screen set top, left/right 0 p-3, p-md-5
  210. @include media-breakpoint-down(md) {
  211. inset-block-start: 0;
  212. inset-inline-end: 0;
  213. :dir(rtl) &{
  214. inset-inline-end: -($modal-simple-padding + $modal-simple-close-position);
  215. }
  216. }
  217. }
  218. }
  219. /* Refer & Earn Modal Example */
  220. .modal-refer-and-earn {
  221. .modal-refer-and-earn-step {
  222. display: flex;
  223. align-items: center;
  224. justify-content: center;
  225. @include border-radius($card-border-radius);
  226. block-size: 88px;
  227. inline-size: 88px;
  228. .icon-base {
  229. @include icon-base(2.5rem);
  230. }
  231. }
  232. }
  233. /* Modal Animations
  234. ****************************************************************************** */
  235. /* Slide from Top */
  236. .modal-top.fade .modal-dialog,
  237. .modal-top .modal.fade .modal-dialog {
  238. transform: translateY(-100%);
  239. }
  240. .modal-top.show .modal-dialog,
  241. .modal-top .modal.show .modal-dialog {
  242. transform: translateY(0);
  243. }
  244. /* Transparent */
  245. .modal-transparent.fade .modal-dialog,
  246. .modal-transparent .modal.fade .modal-dialog {
  247. transform: scale(.5, .5);
  248. }
  249. .modal-transparent.show .modal-dialog,
  250. .modal-transparent .modal.show .modal-dialog {
  251. transform: scale(1, 1);
  252. }
  253. /* Responsive
  254. ******************************************************************************* */
  255. @include media-breakpoint-down(lg) {
  256. .modal-onboarding .onboarding-horizontal {
  257. flex-direction: column;
  258. }
  259. }
  260. @include media-breakpoint-down(md) {
  261. .modal {
  262. .modal-dialog:not(.modal-fullscreen) {
  263. padding-block: 0;
  264. padding-inline: .75rem;
  265. }
  266. .carousel-control-prev,
  267. .carousel-control-next {
  268. display: none;
  269. }
  270. }
  271. }
  272. @include media-breakpoint-up(sm) {
  273. .modal-content {
  274. box-shadow: var(--#{$prefix}modal-box-shadow);
  275. }
  276. .modal-dialog.modal-sm {
  277. max-inline-size: $modal-sm;
  278. }
  279. }
  280. @include media-breakpoint-up(xl) {
  281. .modal-xl .modal-dialog {
  282. max-inline-size: $modal-xl;
  283. }
  284. }
  285. /* Dark theme
  286. ******************************************************************************* */
  287. @if $enable-dark-mode {
  288. @include color-mode(dark) {
  289. .modal-backdrop {
  290. --bs-backdrop-bg: #{$modal-backdrop-bg-dark};
  291. --bs-backdrop-opacity: #{$modal-backdrop-opacity-dark};
  292. }
  293. }
  294. }