be966e9f
梁灏
add Modal component
|
1
2
|
import Vue from 'vue';
import Modal from './modal.vue';
|
77cf1cd5
Aresn
$Modal support SSR
|
3
|
import Button from '../button/button.vue';
|
e5337c81
梁灏
fixed some compon...
|
4
|
import Locale from '../../mixins/locale';
|
be966e9f
梁灏
add Modal component
|
5
6
7
8
9
10
|
const prefixCls = 'ivu-modal-confirm';
Modal.newInstance = properties => {
const _props = properties || {};
|
77cf1cd5
Aresn
$Modal support SSR
|
11
|
const Instance = new Vue({
|
e5337c81
梁灏
fixed some compon...
|
12
|
mixins: [ Locale ],
|
77cf1cd5
Aresn
$Modal support SSR
|
13
|
data: Object.assign({}, _props, {
|
be966e9f
梁灏
add Modal component
|
14
15
16
17
18
19
|
visible: false,
width: 416,
title: '',
body: '',
iconType: '',
iconName: '',
|
e5337c81
梁灏
fixed some compon...
|
20
21
|
okText: undefined,
cancelText: undefined,
|
be966e9f
梁灏
add Modal component
|
22
23
|
showCancel: false,
loading: false,
|
a87da689
Rijn
added scrollable ...
|
24
|
buttonLoading: false,
|
34324f28
zhigang.li
add closable prop...
|
25
|
scrollable: false,
|
504f8c52
梁灏
update Modal
|
26
|
closable: false
|
be966e9f
梁灏
add Modal component
|
27
|
}),
|
77cf1cd5
Aresn
$Modal support SSR
|
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
render (h) {
let footerVNodes = [];
if (this.showCancel) {
footerVNodes.push(h(Button, {
props: {
type: 'text',
size: 'large'
},
on: {
click: this.cancel
}
}, this.localeCancelText));
}
footerVNodes.push(h(Button, {
props: {
type: 'primary',
size: 'large',
loading: this.buttonLoading
},
on: {
click: this.ok
}
}, this.localeOkText));
|
3ef24d5f
Aresn
$Modal support re...
|
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
// render content
let body_render;
if (this.render) {
body_render = h('div', {
attrs: {
class: `${prefixCls}-body ${prefixCls}-body-render`
}
}, [this.render(h)]);
} else {
body_render = h('div', {
attrs: {
class: `${prefixCls}-body`
}
}, [
h('div', {
|
3ef24d5f
Aresn
$Modal support re...
|
67
68
69
70
71
72
73
|
domProps: {
innerHTML: this.body
}
})
]);
}
|
172e4396
梁灏
update $Modal wit...
|
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
// when render with no title, hide head
let head_render;
if (this.title) {
head_render = h('div', {
attrs: {
class: `${prefixCls}-head`
}
}, [
h('div', {
class: this.iconTypeCls
}, [
h('i', {
class: this.iconNameCls
})
]),
h('div', {
attrs: {
class: `${prefixCls}-head-title`
},
domProps: {
innerHTML: this.title
}
})
]);
}
|
77cf1cd5
Aresn
$Modal support SSR
|
100
101
102
|
return h(Modal, {
props: Object.assign({}, _props, {
width: this.width,
|
34324f28
zhigang.li
add closable prop...
|
103
104
|
scrollable: this.scrollable,
closable: this.closable
|
77cf1cd5
Aresn
$Modal support SSR
|
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
}),
domProps: {
value: this.visible
},
on: {
input: (status) => {
this.visible = status;
}
}
}, [
h('div', {
attrs: {
class: prefixCls
}
}, [
|
172e4396
梁灏
update $Modal wit...
|
120
|
head_render,
|
3ef24d5f
Aresn
$Modal support re...
|
121
|
body_render,
|
77cf1cd5
Aresn
$Modal support SSR
|
122
123
124
125
126
127
128
129
|
h('div', {
attrs: {
class: `${prefixCls}-footer`
}
}, footerVNodes)
])
]);
},
|
be966e9f
梁灏
add Modal component
|
130
131
132
|
computed: {
iconTypeCls () {
return [
|
f4273043
梁灏
update $Modal style
|
133
134
|
`${prefixCls}-head-icon`,
`${prefixCls}-head-icon-${this.iconType}`
|
b0893113
jingsam
add eslint
|
135
|
];
|
be966e9f
梁灏
add Modal component
|
136
137
138
139
140
|
},
iconNameCls () {
return [
'ivu-icon',
`ivu-icon-${this.iconName}`
|
b0893113
jingsam
add eslint
|
141
|
];
|
e5337c81
梁灏
fixed some compon...
|
142
143
144
145
146
147
148
149
150
151
152
153
154
155
|
},
localeOkText () {
if (this.okText) {
return this.okText;
} else {
return this.t('i.modal.okText');
}
},
localeCancelText () {
if (this.cancelText) {
return this.cancelText;
} else {
return this.t('i.modal.cancelText');
}
|
be966e9f
梁灏
add Modal component
|
156
157
158
159
|
}
},
methods: {
cancel () {
|
6259471f
梁灏
support Modal
|
160
|
this.$children[0].visible = false;
|
be966e9f
梁灏
add Modal component
|
161
162
163
164
165
166
167
168
|
this.buttonLoading = false;
this.onCancel();
this.remove();
},
ok () {
if (this.loading) {
this.buttonLoading = true;
} else {
|
6259471f
梁灏
support Modal
|
169
|
this.$children[0].visible = false;
|
be966e9f
梁灏
add Modal component
|
170
171
172
173
174
175
176
177
178
179
180
|
this.remove();
}
this.onOk();
},
remove () {
setTimeout(() => {
this.destroy();
}, 300);
},
destroy () {
this.$destroy();
|
6259471f
梁灏
support Modal
|
181
|
document.body.removeChild(this.$el);
|
be966e9f
梁灏
add Modal component
|
182
183
184
185
186
187
|
this.onRemove();
},
onOk () {},
onCancel () {},
onRemove () {}
}
|
77cf1cd5
Aresn
$Modal support SSR
|
188
189
190
191
192
|
});
const component = Instance.$mount();
document.body.appendChild(component.$el);
const modal = Instance.$children[0];
|
be966e9f
梁灏
add Modal component
|
193
194
195
196
197
198
199
200
|
return {
show (props) {
modal.$parent.showCancel = props.showCancel;
modal.$parent.iconType = props.icon;
switch (props.icon) {
case 'info':
|
37665e29
梁灏
update Modal Icons
|
201
|
modal.$parent.iconName = 'ios-information-circle';
|
be966e9f
梁灏
add Modal component
|
202
203
|
break;
case 'success':
|
37665e29
梁灏
update Modal Icons
|
204
|
modal.$parent.iconName = 'ios-checkmark-circle';
|
be966e9f
梁灏
add Modal component
|
205
206
|
break;
case 'warning':
|
37665e29
梁灏
update Modal Icons
|
207
|
modal.$parent.iconName = 'ios-alert';
|
be966e9f
梁灏
add Modal component
|
208
209
|
break;
case 'error':
|
37665e29
梁灏
update Modal Icons
|
210
|
modal.$parent.iconName = 'ios-close-circle';
|
be966e9f
梁灏
add Modal component
|
211
212
|
break;
case 'confirm':
|
37665e29
梁灏
update Modal Icons
|
213
|
modal.$parent.iconName = 'ios-help-circle';
|
be966e9f
梁灏
add Modal component
|
214
215
216
217
218
219
220
|
break;
}
if ('width' in props) {
modal.$parent.width = props.width;
}
|
34324f28
zhigang.li
add closable prop...
|
221
222
223
224
|
if ('closable' in props) {
modal.$parent.closable = props.closable;
}
|
be966e9f
梁灏
add Modal component
|
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
|
if ('title' in props) {
modal.$parent.title = props.title;
}
if ('content' in props) {
modal.$parent.body = props.content;
}
if ('okText' in props) {
modal.$parent.okText = props.okText;
}
if ('cancelText' in props) {
modal.$parent.cancelText = props.cancelText;
}
if ('onCancel' in props) {
modal.$parent.onCancel = props.onCancel;
}
if ('onOk' in props) {
modal.$parent.onOk = props.onOk;
}
// async for ok
if ('loading' in props) {
modal.$parent.loading = props.loading;
}
|
a87da689
Rijn
added scrollable ...
|
254
255
256
257
|
if ('scrollable' in props) {
modal.$parent.scrollable = props.scrollable;
}
|
be966e9f
梁灏
add Modal component
|
258
259
260
261
262
263
264
265
266
267
268
|
// notice when component destroy
modal.$parent.onRemove = props.onRemove;
modal.visible = true;
},
remove () {
modal.visible = false;
modal.$parent.buttonLoading = false;
modal.$parent.remove();
},
component: modal
|
b0893113
jingsam
add eslint
|
269
|
};
|
be966e9f
梁灏
add Modal component
|
270
271
272
|
};
export default Modal;
|