242 lines
4.6 KiB
SCSS
242 lines
4.6 KiB
SCSS
.is-modalOpened {
|
|
overflow: hidden;
|
|
|
|
.#{$ns}Modal {
|
|
overflow-x: hidden;
|
|
overflow-y: auto;
|
|
}
|
|
}
|
|
|
|
@keyframes modalIn {
|
|
from {
|
|
opacity: 0;
|
|
transform: translate3d(0, -300px, 0) scale(0.2);
|
|
}
|
|
}
|
|
|
|
@keyframes modalOut {
|
|
to {
|
|
opacity: 0;
|
|
transform: translate3d(0, -300px, 0) scale(0.2);
|
|
}
|
|
}
|
|
|
|
.#{$ns}Modal {
|
|
position: fixed;
|
|
top: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
left: 0;
|
|
z-index: $zindex-modal;
|
|
overflow: hidden;
|
|
outline: 0;
|
|
|
|
&-content {
|
|
position: relative;
|
|
display: flex;
|
|
flex-direction: column;
|
|
width: 100%; // Ensure `.modal-content` extends the full width of the parent `.modal-dialog`
|
|
min-height: $Modal-content-minHeight;
|
|
pointer-events: auto;
|
|
background-color: $Modal-bg;
|
|
background-clip: padding-box;
|
|
outline: 0;
|
|
z-index: 2;
|
|
margin-left: auto;
|
|
margin-right: auto;
|
|
margin-top: $Modal-content-startMarginTop;
|
|
margin-bottom: $gap-md;
|
|
border: $Modal-content-borderWidth solid $Modal-content-borderColor;
|
|
border-radius: $Modal-content-borderRadius;
|
|
|
|
// transition: ease-out all 0.3s;
|
|
// transform: translateY(-300px) scale(0.2);
|
|
// opacity: 0;
|
|
|
|
&.in,
|
|
&.out {
|
|
// opacity: 1;
|
|
// transform: translateY(0) scale(1);
|
|
animation-duration: 0.35s;
|
|
animation-fill-mode: both;
|
|
}
|
|
|
|
&.in {
|
|
animation-name: modalIn;
|
|
}
|
|
|
|
&.out {
|
|
animation-name: modalOut;
|
|
}
|
|
}
|
|
|
|
&-overlay {
|
|
transition: ease-in-out opacity 0.5s;
|
|
// transition-delay: 0.2s;
|
|
position: fixed;
|
|
top: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
left: 0;
|
|
z-index: 1;
|
|
background-color: $Modal-overlay-bg;
|
|
pointer-events: none; // 很重要,如果不设置,弹框虽然滚轮可滚,但是鼠标没办法操作滚动条。
|
|
opacity: 0;
|
|
|
|
&.in {
|
|
opacity: 1;
|
|
}
|
|
|
|
&.out {
|
|
opacity: 0;
|
|
}
|
|
}
|
|
|
|
&-header {
|
|
padding: $Modal-header-paddingY $Modal-header-paddingX;
|
|
background-color: $Modal-header-bg;
|
|
@include clearfix();
|
|
border-bottom: $Modal-body-borderTop;
|
|
|
|
@if $Modal-content-borderRadius {
|
|
border-top-left-radius: $Modal-content-borderRadius;
|
|
border-top-right-radius: $Modal-content-borderRadius;
|
|
}
|
|
}
|
|
|
|
&-title {
|
|
font-size: $Modal-title-fontSize;
|
|
color: $Modal-title-color;
|
|
}
|
|
|
|
&-close {
|
|
float: right;
|
|
color: $Modal-close-color;
|
|
line-height: inherit;
|
|
text-decoration: none;
|
|
vertical-align: middle;
|
|
|
|
svg {
|
|
width: $Modal-close-width;
|
|
height: $Modal-close-width;
|
|
fill: $Modal-close-color;
|
|
}
|
|
|
|
&:not(.is-disabled) {
|
|
cursor: pointer;
|
|
|
|
&:hover {
|
|
text-decoration: none;
|
|
color: $Model-close-onHover-color;
|
|
|
|
svg {
|
|
fill: $Model-close-onHover-color;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
&-content > &-close {
|
|
position: absolute;
|
|
right: $gap-md;
|
|
top: $gap-sm;
|
|
z-index: 10;
|
|
}
|
|
|
|
&-body {
|
|
padding: $Modal-body--noHeader-paddingTop $Modal-body-paddingX
|
|
$Modal-body-paddingY;
|
|
flex-basis: 0;
|
|
flex-grow: 1;
|
|
}
|
|
|
|
&-header + &-body {
|
|
padding-top: $Modal-body-paddingY;
|
|
}
|
|
|
|
&-footer {
|
|
// @include clearfix();
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: flex-end;
|
|
padding: $Modal-footer-padding;
|
|
border-top: $Modal-body-borderBottom;
|
|
margin: $Modal-footer-marginY $Modal-footer-marginX;
|
|
|
|
@if $Modal-content-borderRadius {
|
|
border-bottom-left-radius: $Modal-content-borderRadius;
|
|
border-bottom-right-radius: $Modal-content-borderRadius;
|
|
}
|
|
|
|
.#{$ns}Button {
|
|
margin-left: $gap-sm;
|
|
}
|
|
}
|
|
}
|
|
|
|
@for $i from (2) through 10 {
|
|
.#{$ns}Modal--#{$i}th {
|
|
.#{$ns}Modal-content {
|
|
margin-top: $Modal-content-startMarginTop +
|
|
($i - 1) *
|
|
$Modal-content-stepMarginTop;
|
|
}
|
|
}
|
|
}
|
|
|
|
@include media-breakpoint-up(sm) {
|
|
.#{$ns}Modal-content {
|
|
max-width: $Modal-widthBase;
|
|
}
|
|
|
|
.#{$ns}Modal--sm .#{$ns}Modal-content {
|
|
max-width: $Modal-widthSm;
|
|
}
|
|
|
|
.#{$ns}Modal--base .#{$ns}Modal-content {
|
|
max-width: $Modal-widthBase;
|
|
}
|
|
|
|
.#{$ns}Modal--md .#{$ns}Modal-content {
|
|
max-width: $Modal-widthMd;
|
|
}
|
|
|
|
.#{$ns}Modal--lg .#{$ns}Modal-content {
|
|
max-width: $Modal-widthLg;
|
|
}
|
|
|
|
.#{$ns}Modal--xl .#{$ns}Modal-content {
|
|
max-width: $Modal-widthXl;
|
|
}
|
|
}
|
|
|
|
.#{$ns}Dialog-info {
|
|
flex-basis: 0;
|
|
flex-grow: 1;
|
|
text-align: left;
|
|
}
|
|
|
|
.#{$ns}Dialog-error {
|
|
color: $danger;
|
|
}
|
|
|
|
.#{$ns}Modal--full {
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
align-items: center;
|
|
|
|
> .#{$ns}Modal-content {
|
|
flex-basis: 0;
|
|
flex-grow: 1;
|
|
margin: 30px;
|
|
width: calc(100% - 60px);
|
|
max-width: unset;
|
|
|
|
> .#{$ns}Modal-body {
|
|
height: 0;
|
|
overflow: auto;
|
|
}
|
|
}
|
|
}
|