UNPKG

@odyzeo/popup

Version:

Odyzeo popup component with Vue

211 lines (169 loc) 3.4 kB
@import './variables'; @popup-width: 315px; @popup-transition-duration: .3s; .popup { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: @z-popup; display: flex; align-items: center; justify-content: center; background: rgba(0, 0, 0, 0.6); opacity: 0; visibility: hidden; } .popup__inner { position: relative; min-width: @popup-width; max-width: 90%; max-height: 90%; min-height: 50px; border-radius: 5px; box-shadow: 0 0 5px 0 rgba(75, 75, 75, 0.4); background: #fff; overflow-x: hidden; transition: all .2s ease; @media (max-width: @break-m-max) { position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: 1; max-width: 100%; max-height: none; border-radius: 0; } } .popup__close { position: absolute; top: 0; right: 0; z-index: 1; padding: 10px; font-size: 12px; cursor: pointer; color: #000; } .popup__icon-close { width: 10px; height: 10px; display: block; } /** * Menus */ .popup-menu { .popup__inner { height: 100%; width: 320px; max-height: 100%; min-width: auto; border-radius: 0; @media (max-width: @break-m-max) { position: relative; max-width: 100%; } } &.popup-menu--left { justify-content: flex-start; } &.popup-menu--right { justify-content: flex-end; } &.popup-menu--bottom, &.popup-menu--top { .popup__inner { height: auto; width: 100%; max-height: 100%; max-width: none; min-width: auto; } } &.popup-menu--top { align-items: flex-start; justify-content: stretch; } &.popup-menu--bottom { align-items: flex-end; justify-content: stretch; } } /** * Transitions */ .popup-transition-fade, .popup-transition-slide-bottom, .popup-transition-slide-left, .popup-transition-slide-right, .popup-transition-slide-top { transition: opacity @popup-transition-duration, visibility @popup-transition-duration; } .popup-transition-fade { .popup__inner { transform: none; } } .popup-transition-slide-left { .popup__inner { transform: translateX(-100%); } .popup--open { .popup__inner { transform: translateX(0); } } } .popup-transition-slide-right { .popup__inner { transform: translateX(100%); } .popup--open { .popup__inner { transform: translateX(0); } } } .popup-transition-slide-top { .popup__inner { transform: translateY(-100%); } .popup--open { .popup__inner { transform: translateY(0); } } } .popup-transition-slide-bottom { .popup__inner { transform: translateY(100%); } .popup--open { .popup__inner { transform: translateY(0); } } } /** * Modifiers */ .popup--open { opacity: 1; visibility: visible; transition-delay: 0s; .popup__inner { transform: translateY(0); } } /** * Helpers */ body.open-popup { // position: fixed; // When enabled, scrolls you to top overflow: hidden; }