From c67e4103f4716ce8e6be130fe3795dbf05673689 Mon Sep 17 00:00:00 2001
From: tangjinzhou <415800467@qq.com>
Date: Tue, 6 Mar 2018 19:14:41 +0800
Subject: [PATCH 1/3] add modal
---
components/_util/ContainerRender.vue | 3 -
components/_util/props-util.js | 11 +-
components/index.js | 1 +
components/modal/ActionButton.vue | 70 +++++++++++
components/modal/ConfirmDialog.vue | 71 +++++++++++
components/modal/Modal.vue | 149 +++++++++++++++++++++++
components/modal/confirm.js | 39 ++++++
components/modal/demo/basic.md | 51 ++++++++
components/modal/index.js | 56 +++++++++
components/modal/locale.js | 28 +++++
components/modal/style/confirm.less | 71 +++++++++++
components/modal/style/index.js | 5 +
components/modal/style/index.less | 4 +
components/modal/style/modal.less | 146 ++++++++++++++++++++++
components/style.js | 1 +
components/trigger/Popup.vue | 4 +-
components/vc-dialog/Dialog.vue | 53 +++++---
components/vc-dialog/DialogWrap.vue | 11 +-
components/vc-dialog/IDialogPropTypes.js | 6 +-
components/vc-dialog/demo/ant-design.vue | 5 +-
components/vc-dialog/index.js | 2 +
examples/routes.js | 2 +-
22 files changed, 756 insertions(+), 33 deletions(-)
create mode 100644 components/modal/ActionButton.vue
create mode 100644 components/modal/ConfirmDialog.vue
create mode 100644 components/modal/Modal.vue
create mode 100644 components/modal/confirm.js
create mode 100644 components/modal/demo/basic.md
create mode 100644 components/modal/index.js
create mode 100644 components/modal/locale.js
create mode 100644 components/modal/style/confirm.less
create mode 100644 components/modal/style/index.js
create mode 100644 components/modal/style/index.less
create mode 100644 components/modal/style/modal.less
create mode 100644 components/vc-dialog/index.js
diff --git a/components/_util/ContainerRender.vue b/components/_util/ContainerRender.vue
index 839c4f7d7..d949112bc 100644
--- a/components/_util/ContainerRender.vue
+++ b/components/_util/ContainerRender.vue
@@ -60,12 +60,9 @@ export default {
})
},
render () {
- console.log(props)
return getComponent(props)
},
})
- } else {
- this._component.$forceUpdate()
}
}
},
diff --git a/components/_util/props-util.js b/components/_util/props-util.js
index 6ee8a3f30..d44419859 100644
--- a/components/_util/props-util.js
+++ b/components/_util/props-util.js
@@ -111,7 +111,11 @@ export function getClass (ele) {
} else if (ele.$vnode && ele.$vnode.data) {
data = ele.$vnode.data
}
- return data.class || data.staticClass
+ let cls = data.class || data.staticClass || {}
+ if (typeof cls === 'string') {
+ cls = cls.split(' ').forEach(c => { cls[c.trim()] = true })
+ }
+ return cls
}
export function getStyle (ele) {
let data = {}
@@ -138,6 +142,10 @@ export function isEmptyElement (ele) {
export function filterEmpty (children = []) {
return children.filter(c => c.tag || c.text.trim() !== '')
}
+const initDefaultProps = (propTypes, defaultProps) => {
+ Object.keys(defaultProps).forEach(k => { propTypes[k] = propTypes[k].def(defaultProps[k]) })
+ return propTypes
+}
export {
hasProp,
filterProps,
@@ -150,5 +158,6 @@ export {
getAttrs,
getValueByProp,
parseStyleText,
+ initDefaultProps,
}
export default hasProp
diff --git a/components/index.js b/components/index.js
index 6b22f7e23..c04262eb5 100644
--- a/components/index.js
+++ b/components/index.js
@@ -93,4 +93,5 @@ export { default as Affix } from './affix'
export { default as Cascader } from './cascader'
export { default as BackTop } from './back-top'
+export { default as Modal } from './modal'
diff --git a/components/modal/ActionButton.vue b/components/modal/ActionButton.vue
new file mode 100644
index 000000000..9ec46761a
--- /dev/null
+++ b/components/modal/ActionButton.vue
@@ -0,0 +1,70 @@
+
diff --git a/components/modal/ConfirmDialog.vue b/components/modal/ConfirmDialog.vue
new file mode 100644
index 000000000..5528e7f22
--- /dev/null
+++ b/components/modal/ConfirmDialog.vue
@@ -0,0 +1,71 @@
+
diff --git a/components/modal/Modal.vue b/components/modal/Modal.vue
new file mode 100644
index 000000000..d437232f3
--- /dev/null
+++ b/components/modal/Modal.vue
@@ -0,0 +1,149 @@
+
diff --git a/components/modal/confirm.js b/components/modal/confirm.js
new file mode 100644
index 000000000..23365b493
--- /dev/null
+++ b/components/modal/confirm.js
@@ -0,0 +1,39 @@
+import Vue from 'vue'
+import ConfirmDialog from './ConfirmDialog'
+export default function confirm (config) {
+ const div = document.createElement('div')
+ document.body.appendChild(div)
+ let confirmDialogInstance = null
+ function close (...args) {
+ destroy(...args)
+ }
+
+ function destroy (...args) {
+ if (confirmDialogInstance && div.parentNode) {
+ confirmDialogInstance.$destroy()
+ confirmDialogInstance = null
+ div.parentNode.removeChild(div)
+ }
+ const triggerCancel = args && args.length &&
+ args.some(param => param && param.triggerCancel)
+ if (config.onCancel && triggerCancel) {
+ config.onCancel(...args)
+ }
+ }
+
+ function render (props) {
+ return new Vue({
+ el: div,
+ render () {
+ return Some contents... Some contents... Some contents...