Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 
 
 

264 строки
6.3 KiB

  1. // /**
  2. // * Copyright © Magento, Inc. All rights reserved.
  3. // * See COPYING.txt for license details.
  4. // */
  5. //
  6. // Lib -> Components -> Modals
  7. // _____________________________________________
  8. //
  9. // Variables
  10. // ---------------------------------------------
  11. @import '../../source/_variables.less';
  12. @modal__background-color: @color-white;
  13. @modal__box-shadow: 0 0 12px 2px rgba(0, 0, 0, .35);
  14. @modal-popup__indent-vertical: 5rem;
  15. @modal-popup__padding: 3rem;
  16. @modal-popup__width: 75%;
  17. @modal-popup__z-index: @modal__z-index;
  18. @modal-slide__first__indent-left: 14.8rem;
  19. @modal-slide__indent-left: 4.5rem;
  20. @modal-slide__padding: 2.6rem;
  21. @modal-slide__z-index: @modal__z-index;
  22. @modal-slide-header__padding-vertical: 2.1rem;
  23. @modal-popup-confirm__width: 50rem;
  24. @modal-popup-image-box__border-color: @color-gray80;
  25. @modal-popup-image-box__max-width: 78rem;
  26. @modal-popup-image-box-preview__max-width: @modal-popup-image-box-preview-image__max-height + (2 * @indent__base);
  27. @modal-popup-image-box-preview-image__max-height: 54rem;
  28. //
  29. // Utilities
  30. // ---------------------------------------------
  31. .lib-modal() {
  32. bottom: 0;
  33. left: 0;
  34. min-width: 0;
  35. position: fixed;
  36. right: 0;
  37. top: 0;
  38. visibility: hidden;
  39. opacity: 0;
  40. -webkit-transition: visibility 0s .3s, opacity .3s ease;
  41. transition: visibility 0s .3s, opacity .3s ease;
  42. &._show {
  43. visibility: visible;
  44. opacity: 1;
  45. -webkit-transition: opacity .3s ease;
  46. transition: opacity .3s ease;
  47. .modal-inner-wrap {
  48. -webkit-transform: translate(0, 0);
  49. transform: translate(0, 0);
  50. }
  51. }
  52. .modal-inner-wrap {
  53. .lib-css(background-color, @modal__background-color);
  54. .lib-css(box-shadow, @modal__box-shadow);
  55. opacity: 1;
  56. pointer-events: auto;
  57. }
  58. }
  59. .lib-modal-slide() {
  60. .lib-css(left, @modal-slide__first__indent-left);
  61. .lib-css(z-index, @modal-slide__z-index);
  62. &._show {
  63. .modal-inner-wrap {
  64. -webkit-transform: translateX(0);
  65. transform: translateX(0);
  66. }
  67. }
  68. .modal-inner-wrap {
  69. height: 100%;
  70. overflow-y: auto;
  71. position: static;
  72. -webkit-transform: translateX(100%);
  73. transform: translateX(100%);
  74. -webkit-transition: -webkit-transform .3s ease-in-out;
  75. transition: transform .3s ease-in-out;
  76. width: auto;
  77. }
  78. }
  79. .lib-modal-popup() {
  80. .lib-css(z-index, @modal-popup__z-index);
  81. left: 0;
  82. overflow-y: auto;
  83. &.confirm {
  84. .modal-inner-wrap {
  85. .lib-css(max-width, @modal-popup-confirm__width);
  86. }
  87. }
  88. &._show {
  89. .modal-inner-wrap {
  90. -webkit-transform: translateY(0);
  91. transform: translateY(0);
  92. }
  93. }
  94. .modal-inner-wrap {
  95. .lib-css(margin, @modal-popup__indent-vertical auto);
  96. .lib-css(width, @modal-popup__width);
  97. .lib-vendor-prefix-display(flex);
  98. .lib-vendor-prefix-flex-direction(column);
  99. box-sizing: border-box;
  100. height: auto;
  101. left: 0;
  102. position: absolute;
  103. right: 0;
  104. -webkit-transform: translateY(-200%);
  105. transform: translateY(-200%);
  106. -webkit-transition: -webkit-transform .2s ease;
  107. transition: transform .2s ease;
  108. }
  109. }
  110. //
  111. // Common
  112. // _____________________________________________
  113. & when (@media-common = true) {
  114. body {
  115. &._has-modal {
  116. height: 100%;
  117. overflow: hidden;
  118. width: 100%;
  119. }
  120. }
  121. // Modals overlay
  122. .modals-overlay {
  123. .lib-css(z-index, @overlay__z-index);
  124. }
  125. .modal-slide,
  126. .modal-popup {
  127. .lib-modal();
  128. }
  129. .modal-slide {
  130. .lib-modal-slide();
  131. &._inner-scroll {
  132. .modal-inner-wrap {
  133. overflow-y: visible;
  134. .lib-vendor-prefix-display(flex);
  135. .lib-vendor-prefix-flex-direction(column);
  136. }
  137. .modal-header,
  138. .modal-footer {
  139. .lib-vendor-prefix-flex-grow(0);
  140. .lib-vendor-prefix-flex-shrink(0);
  141. }
  142. .modal-content {
  143. overflow-y: auto;
  144. }
  145. .modal-footer {
  146. margin-top: auto;
  147. }
  148. }
  149. .modal-header,
  150. .modal-content,
  151. .modal-footer {
  152. .lib-css(padding, 0 @modal-slide__padding @modal-slide__padding);
  153. }
  154. .modal-header {
  155. .lib-css(padding-bottom, @modal-slide-header__padding-vertical);
  156. .lib-css(padding-top, @modal-slide-header__padding-vertical);
  157. }
  158. }
  159. .modal-popup {
  160. .lib-modal-popup();
  161. // If applied, switching outer popup scroll to inner
  162. &._inner-scroll {
  163. overflow-y: visible;
  164. .ie11 & {
  165. overflow-y: auto;
  166. }
  167. .modal-inner-wrap {
  168. max-height: 90%;
  169. .ie11 & {
  170. max-height: none;
  171. }
  172. }
  173. .modal-content {
  174. overflow-y: auto;
  175. }
  176. }
  177. .modal-header,
  178. .modal-content,
  179. .modal-footer {
  180. .lib-css(padding-left, @modal-popup__padding);
  181. .lib-css(padding-right, @modal-popup__padding);
  182. }
  183. .modal-header,
  184. .modal-footer {
  185. .lib-vendor-prefix-flex-grow(0);
  186. .lib-vendor-prefix-flex-shrink(0);
  187. }
  188. .modal-header {
  189. .lib-css(padding-bottom, @modal-popup__padding / 2.5);
  190. .lib-css(padding-top, @modal-popup__padding);
  191. }
  192. .modal-footer {
  193. margin-top: auto;
  194. .lib-css(padding-bottom, @modal-popup__padding);
  195. .lib-css(padding-top, @modal-popup__padding);
  196. }
  197. .modal-footer-actions {
  198. text-align: right;
  199. }
  200. }
  201. }
  202. //
  203. // Mobile
  204. // _____________________________________________
  205. // Mobile transform to modal-slide
  206. .media-width(@extremum, @break) when (@extremum = 'max') and (@break = @screen__m) {
  207. .modal-popup {
  208. &.modal-slide {
  209. .lib-modal-slide();
  210. .modal-inner-wrap {
  211. margin: 0;
  212. max-height: 90vh; /** iOS webkit fix height problem when added long content **/
  213. }
  214. }
  215. }
  216. }