Skip to content

Commit 3eb34e2

Browse files
author
hastom
committed
Changed dialog positioning to flex
1 parent 4fa84a4 commit 3eb34e2

File tree

3 files changed

+47
-37
lines changed

3 files changed

+47
-37
lines changed

docs/app/pages/Components/Dialog/examples/DialogCustom.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
</script>
4545

4646
<style lang="scss" scoped>
47-
.md-dialog {
47+
.md-dialog /deep/.md-dialog-container {
4848
max-width: 768px;
4949
}
5050
</style>

src/components/MdDialog/MdDialog.vue

+45-35
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
<template>
22
<md-portal>
3-
<transition name="md-dialog">
4-
<div class="md-dialog" :class="[dialogClasses, $mdActiveTheme]" v-on="$listeners" @keydown.esc="onEsc" v-if="mdActive">
5-
<md-focus-trap>
6-
<div class="md-dialog-container">
7-
<slot />
8-
3+
<div class="md-dialog" :class="dialogClasses">
4+
<md-focus-trap>
5+
<transition name="md-dialog">
6+
<div class="md-dialog-container" :class="[dialogContainerClasses, $mdActiveTheme]" v-on="$listeners"
7+
@keydown.esc="onEsc" v-if="mdActive">
8+
<slot/>
99
<keep-alive>
10-
<md-overlay :class="mdBackdropClass" md-fixed :md-active="mdActive" @click="onClick" v-if="mdBackdrop" />
10+
<md-overlay :class="mdBackdropClass" md-fixed :md-active="mdActive" @click="onClick" v-if="mdBackdrop"/>
1111
</keep-alive>
1212
</div>
13-
</md-focus-trap>
14-
</div>
15-
</transition>
13+
</transition>
14+
</md-focus-trap>
15+
</div>
1616
</md-portal>
1717
</template>
1818

@@ -54,14 +54,19 @@
5454
mdAnimateFromSource: Boolean
5555
},
5656
computed: {
57-
dialogClasses () {
57+
dialogClasses() {
58+
return {
59+
'md-active': this.mdActive
60+
}
61+
},
62+
dialogContainerClasses() {
5863
return {
5964
'md-dialog-fullscreen': this.mdFullscreen
6065
}
6166
}
6267
},
6368
watch: {
64-
mdActive (isActive) {
69+
mdActive(isActive) {
6570
this.$nextTick().then(() => {
6671
if (isActive) {
6772
this.$emit('md-opened')
@@ -72,16 +77,16 @@
7277
}
7378
},
7479
methods: {
75-
closeDialog () {
80+
closeDialog() {
7681
this.$emit('update:mdActive', false)
7782
},
78-
onClick () {
83+
onClick() {
7984
if (this.mdClickOutsideToClose) {
8085
this.closeDialog()
8186
}
8287
this.$emit('md-clicked-outside');
8388
},
84-
onEsc () {
89+
onEsc() {
8590
if (this.mdCloseOnEsc) {
8691
this.closeDialog()
8792
}
@@ -96,27 +101,39 @@
96101
@import "~components/MdElevation/mixins";
97102
98103
.md-dialog {
104+
position: fixed;
105+
top: 0;
106+
left: 0;
107+
right: 0;
108+
bottom: 0;
109+
align-items: center;
110+
justify-content: center;
111+
pointer-events: none;
112+
display: none;
113+
z-index: -1;
114+
115+
&.md-active {
116+
z-index: 110;
117+
display: flex;
118+
}
119+
}
120+
121+
.md-dialog-container {
99122
@include md-elevation(24);
100123
min-width: 280px;
101124
max-width: 80%;
102125
max-height: 80%;
103126
margin: auto;
104127
display: flex;
105128
flex-flow: column;
106-
flex-direction: row;
107129
overflow: hidden;
108-
position: fixed;
109-
top: 50%;
110-
left: 50%;
111-
z-index: 110;
112130
border-radius: 2px;
113131
backface-visibility: hidden;
114132
pointer-events: auto;
115-
transform: translate(-50%, -50%);
133+
transform: scale(1);
116134
transform-origin: center center;
117-
transition: opacity .15s $md-transition-stand-timing,
118-
transform .2s $md-transition-stand-timing;
119-
will-change: opacity, transform, left, top;
135+
transition: opacity .15s $md-transition-stand-timing, transform .2s $md-transition-stand-timing;
136+
will-change: opacity, transform;
120137
121138
> .md-dialog-tabs,
122139
> .md-dialog-title,
@@ -128,10 +145,10 @@
128145
}
129146
}
130147
131-
.md-dialog-enter-active,
148+
.md-dialog-enter-active,
132149
.md-dialog-leave-active {
133150
opacity: 0;
134-
transform: translate(-50%, -50%) scale(.9);
151+
transform: scale(.9);
135152
136153
> .md-dialog-tabs,
137154
> .md-dialog-title,
@@ -143,10 +160,6 @@
143160
}
144161
145162
.md-dialog-container {
146-
display: flex;
147-
flex-flow: column;
148-
flex: 1;
149-
150163
.md-tabs {
151164
flex: 1;
152165
}
@@ -164,13 +177,10 @@
164177
165178
.md-dialog-fullscreen {
166179
@include md-layout-xsmall {
180+
width: 100%;
181+
height: 100%;
167182
max-width: 100%;
168183
max-height: 100%;
169-
position: fixed;
170-
top: 0;
171-
right: 0;
172-
bottom: 0;
173-
left: 0;
174184
border-radius: 0;
175185
transform: none;
176186

src/components/MdDialog/theme.scss

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
.md-dialog {
1+
.md-dialog-container {
22
@include md-theme-component() {
33
@include md-theme-property(background-color, background);
44
@include md-theme-property(color, text-primary, background);

0 commit comments

Comments
 (0)