@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; width: var(#{getCssVarName('dialog-width')}, 50%); &: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; } @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: getCssVar('dialog', 'padding-primary'); padding-bottom: 10px; margin-right: 16px; } @include e(headerbtn) { position: absolute; top: 6px; right: 0; padding: 0; width: 54px; height: 54px; 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) { padding: calc(#{getCssVar('dialog-padding-primary')} + 10px) getCssVar('dialog-padding-primary'); color: getCssVar('text-color', 'regular'); font-size: getCssVar('dialog-content-font-size'); } @include e(footer) { padding: getCssVar('dialog-padding-primary'); padding-top: 10px; text-align: right; box-sizing: border-box; } // 内容居中布局 @include m(center) { text-align: center; @include e(body) { text-align: initial; padding: 25px calc(#{getCssVar('dialog-padding-primary')} + 5px) 30px; } @include e(footer) { text-align: inherit; } } } .#{$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; } }