203 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			SCSS
		
	
	
	
	
	
			
		
		
	
	
			203 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			SCSS
		
	
	
	
	
	
| @use 'sass:map';
 | |
| 
 | |
| @use 'mixins/mixins' as *;
 | |
| @use 'mixins/utils' as *;
 | |
| @use 'mixins/var' as *;
 | |
| @use 'common/var' as *;
 | |
| @use 'common/popup' as *;
 | |
| 
 | |
| @include b(dialog) {
 | |
|   @include set-component-css-var('dialog', $dialog);
 | |
| 
 | |
|   position: relative;
 | |
|   margin: var(#{getCssVarName('dialog-margin-top')}, 15vh) auto 50px;
 | |
|   background: getCssVar('dialog', 'bg-color');
 | |
|   border-radius: getCssVar('dialog', 'border-radius');
 | |
|   box-shadow: getCssVar('dialog', 'box-shadow');
 | |
|   box-sizing: border-box;
 | |
|   padding: getCssVar('dialog', 'padding-primary');
 | |
|   width: var(#{getCssVarName('dialog-width')}, 50%);
 | |
|   overflow-wrap: break-word;
 | |
| 
 | |
|   &:focus {
 | |
|     outline: none !important;
 | |
|   }
 | |
| 
 | |
|   @include when(align-center) {
 | |
|     margin: auto;
 | |
|   }
 | |
| 
 | |
|   @include when(fullscreen) {
 | |
|     @include set-css-var-value('dialog-width', 100%);
 | |
|     @include set-css-var-value('dialog-margin-top', 0);
 | |
| 
 | |
|     margin-bottom: 0;
 | |
|     height: 100%;
 | |
|     overflow: auto;
 | |
|     border-radius: 0px;
 | |
|   }
 | |
| 
 | |
|   @include e(wrapper) {
 | |
|     position: fixed;
 | |
|     top: 0;
 | |
|     right: 0;
 | |
|     bottom: 0;
 | |
|     left: 0;
 | |
|     overflow: auto;
 | |
|     margin: 0;
 | |
|   }
 | |
| 
 | |
|   @include when(draggable) {
 | |
|     @include e(header) {
 | |
|       cursor: move;
 | |
|       user-select: none;
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   @include e(header) {
 | |
|     padding-bottom: getCssVar('dialog', 'padding-primary');
 | |
| 
 | |
|     &.show-close {
 | |
|       padding-right: calc(
 | |
|         getCssVar('dialog', 'padding-primary') +
 | |
|           var(
 | |
|             #{getCssVarName('message-close-size')},
 | |
|             map.get($message, 'close-size')
 | |
|           )
 | |
|       );
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   @include e(headerbtn) {
 | |
|     position: absolute;
 | |
|     top: 0;
 | |
|     right: 0;
 | |
|     padding: 0;
 | |
|     width: 48px;
 | |
|     height: 48px;
 | |
|     background: transparent;
 | |
|     border: none;
 | |
|     outline: none;
 | |
|     cursor: pointer;
 | |
|     font-size: var(
 | |
|       #{getCssVarName('message-close-size')},
 | |
|       map.get($message, 'close-size')
 | |
|     );
 | |
| 
 | |
|     .#{$namespace}-dialog__close {
 | |
|       color: getCssVar('color', 'info');
 | |
|       font-size: inherit;
 | |
|     }
 | |
| 
 | |
|     &:focus,
 | |
|     &:hover {
 | |
|       .#{$namespace}-dialog__close {
 | |
|         color: getCssVar('color', 'primary');
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   @include e(title) {
 | |
|     line-height: getCssVar('dialog-font-line-height');
 | |
|     font-size: getCssVar('dialog-title-font-size');
 | |
|     color: getCssVar('text-color', 'primary');
 | |
|   }
 | |
| 
 | |
|   @include e(body) {
 | |
|     color: getCssVar('text-color', 'regular');
 | |
|     font-size: getCssVar('dialog-content-font-size');
 | |
|   }
 | |
| 
 | |
|   @include e(footer) {
 | |
|     padding-top: getCssVar('dialog', 'padding-primary');
 | |
|     text-align: right;
 | |
|     box-sizing: border-box;
 | |
|   }
 | |
| 
 | |
|   // 内容居中布局
 | |
|   @include m(center) {
 | |
|     text-align: center;
 | |
| 
 | |
|     @include e(body) {
 | |
|       text-align: initial;
 | |
|     }
 | |
| 
 | |
|     @include e(footer) {
 | |
|       text-align: inherit;
 | |
|     }
 | |
|   }
 | |
| }
 | |
| 
 | |
| .#{$namespace}-modal-dialog {
 | |
|   &.is-penetrable {
 | |
|     pointer-events: none;
 | |
| 
 | |
|     .#{$namespace}-dialog {
 | |
|       pointer-events: auto;
 | |
|     }
 | |
|   }
 | |
| }
 | |
| 
 | |
| .#{$namespace}-overlay-dialog {
 | |
|   position: fixed;
 | |
|   top: 0;
 | |
|   right: 0;
 | |
|   bottom: 0;
 | |
|   left: 0;
 | |
|   overflow: auto;
 | |
| }
 | |
| 
 | |
| .dialog-fade-enter-active {
 | |
|   animation: modal-fade-in getCssVar('transition-duration');
 | |
|   .#{$namespace}-overlay-dialog {
 | |
|     animation: dialog-fade-in getCssVar('transition-duration');
 | |
|   }
 | |
| }
 | |
| 
 | |
| .dialog-fade-leave-active {
 | |
|   animation: modal-fade-out getCssVar('transition-duration');
 | |
|   .#{$namespace}-overlay-dialog {
 | |
|     animation: dialog-fade-out getCssVar('transition-duration');
 | |
|   }
 | |
| }
 | |
| 
 | |
| @keyframes dialog-fade-in {
 | |
|   0% {
 | |
|     transform: translate3d(0, -20px, 0);
 | |
|     opacity: 0;
 | |
|   }
 | |
|   100% {
 | |
|     transform: translate3d(0, 0, 0);
 | |
|     opacity: 1;
 | |
|   }
 | |
| }
 | |
| 
 | |
| @keyframes dialog-fade-out {
 | |
|   0% {
 | |
|     transform: translate3d(0, 0, 0);
 | |
|     opacity: 1;
 | |
|   }
 | |
|   100% {
 | |
|     transform: translate3d(0, -20px, 0);
 | |
|     opacity: 0;
 | |
|   }
 | |
| }
 | |
| 
 | |
| @keyframes modal-fade-in {
 | |
|   0% {
 | |
|     opacity: 0;
 | |
|   }
 | |
|   100% {
 | |
|     opacity: 1;
 | |
|   }
 | |
| }
 | |
| 
 | |
| @keyframes modal-fade-out {
 | |
|   0% {
 | |
|     opacity: 1;
 | |
|   }
 | |
|   100% {
 | |
|     opacity: 0;
 | |
|   }
 | |
| }
 |