Commit 172e4396dfbb7f0a14757061f7e806bea2e90fe9
1 parent
f4273043
update $Modal with render
Showing
2 changed files
with
56 additions
and
54 deletions
Show diff stats
examples/routers/modal.vue
| 1 | 1 | <template> |
| 2 | 2 | <div> |
| 3 | - <Button @click="instance('info')">Info</Button> | |
| 4 | - <Button @click="instance('success')">Success</Button> | |
| 5 | - <Button @click="instance('warning')">Warning</Button> | |
| 6 | - <Button @click="instance('error')">Error</Button> | |
| 3 | + <p> | |
| 4 | + Name: {{ value }} | |
| 5 | + </p> | |
| 6 | + <p> | |
| 7 | + <Button @click="handleRender">Custom content</Button> | |
| 8 | + </p> | |
| 7 | 9 | </div> |
| 8 | 10 | </template> |
| 9 | 11 | <script> |
| 10 | 12 | export default { |
| 13 | + data () { | |
| 14 | + return { | |
| 15 | + value: '' | |
| 16 | + } | |
| 17 | + }, | |
| 11 | 18 | methods: { |
| 12 | - instance (type) { | |
| 13 | - const title = '对话框的标题'; | |
| 14 | - const content = '<p>一些对话框内容</p><p>一些对话框内容</p>'; | |
| 15 | - switch (type) { | |
| 16 | - case 'info': | |
| 17 | - this.$Modal.info({ | |
| 18 | - title: title, | |
| 19 | - content: content | |
| 20 | - }); | |
| 21 | - break; | |
| 22 | - case 'success': | |
| 23 | - this.$Modal.success({ | |
| 24 | - title: title, | |
| 25 | - content: content | |
| 26 | - }); | |
| 27 | - break; | |
| 28 | - case 'warning': | |
| 29 | - this.$Modal.warning({ | |
| 30 | - title: title, | |
| 31 | - content: content | |
| 32 | - }); | |
| 33 | - break; | |
| 34 | - case 'error': | |
| 35 | - this.$Modal.error({ | |
| 36 | - title: title, | |
| 37 | - content: content | |
| 38 | - }); | |
| 39 | - break; | |
| 40 | - } | |
| 19 | + handleRender () { | |
| 20 | + this.$Modal.confirm({ | |
| 21 | + title: '真不错呀', | |
| 22 | + render: (h) => { | |
| 23 | + return h('Input', { | |
| 24 | + props: { | |
| 25 | + value: this.value, | |
| 26 | + autofocus: true, | |
| 27 | + placeholder: 'Please enter your name...' | |
| 28 | + }, | |
| 29 | + on: { | |
| 30 | + input: (val) => { | |
| 31 | + this.value = val; | |
| 32 | + } | |
| 33 | + } | |
| 34 | + }) | |
| 35 | + } | |
| 36 | + }) | |
| 41 | 37 | } |
| 42 | 38 | } |
| 43 | 39 | } | ... | ... |
src/components/modal/confirm.js
| ... | ... | @@ -71,6 +71,32 @@ Modal.newInstance = properties => { |
| 71 | 71 | ]); |
| 72 | 72 | } |
| 73 | 73 | |
| 74 | + // when render with no title, hide head | |
| 75 | + let head_render; | |
| 76 | + if (this.title) { | |
| 77 | + head_render = h('div', { | |
| 78 | + attrs: { | |
| 79 | + class: `${prefixCls}-head` | |
| 80 | + } | |
| 81 | + }, [ | |
| 82 | + h('div', { | |
| 83 | + class: this.iconTypeCls | |
| 84 | + }, [ | |
| 85 | + h('i', { | |
| 86 | + class: this.iconNameCls | |
| 87 | + }) | |
| 88 | + ]), | |
| 89 | + h('div', { | |
| 90 | + attrs: { | |
| 91 | + class: `${prefixCls}-head-title` | |
| 92 | + }, | |
| 93 | + domProps: { | |
| 94 | + innerHTML: this.title | |
| 95 | + } | |
| 96 | + }) | |
| 97 | + ]); | |
| 98 | + } | |
| 99 | + | |
| 74 | 100 | return h(Modal, { |
| 75 | 101 | props: Object.assign({}, _props, { |
| 76 | 102 | width: this.width, |
| ... | ... | @@ -91,27 +117,7 @@ Modal.newInstance = properties => { |
| 91 | 117 | class: prefixCls |
| 92 | 118 | } |
| 93 | 119 | }, [ |
| 94 | - h('div', { | |
| 95 | - attrs: { | |
| 96 | - class: `${prefixCls}-head` | |
| 97 | - } | |
| 98 | - }, [ | |
| 99 | - h('div', { | |
| 100 | - class: this.iconTypeCls | |
| 101 | - }, [ | |
| 102 | - h('i', { | |
| 103 | - class: this.iconNameCls | |
| 104 | - }) | |
| 105 | - ]), | |
| 106 | - h('div', { | |
| 107 | - attrs: { | |
| 108 | - class: `${prefixCls}-head-title` | |
| 109 | - }, | |
| 110 | - domProps: { | |
| 111 | - innerHTML: this.title | |
| 112 | - } | |
| 113 | - }) | |
| 114 | - ]), | |
| 120 | + head_render, | |
| 115 | 121 | body_render, |
| 116 | 122 | h('div', { |
| 117 | 123 | attrs: { | ... | ... |