From 7b66aef0563966727e43e9728a7da8b163141103 Mon Sep 17 00:00:00 2001 From: neverland Date: Wed, 4 Sep 2019 22:33:40 +0800 Subject: [PATCH] feat(Popup): add close-icon prop (#4366) --- src/popup/README.md | 13 ++++++++++++- src/popup/README.zh-CN.md | 12 +++++++++++- src/popup/demo/index.vue | 18 +++++++++++++++--- src/popup/index.js | 6 +++++- src/popup/index.less | 4 ++++ src/popup/test/__snapshots__/demo.spec.js.snap | 1 + .../test/__snapshots__/index.spec.js.snap | 5 +++++ src/popup/test/index.spec.js | 12 ++++++++++++ 8 files changed, 65 insertions(+), 6 deletions(-) diff --git a/src/popup/README.md b/src/popup/README.md index d809057eb..262ee6b4d 100644 --- a/src/popup/README.md +++ b/src/popup/README.md @@ -58,6 +58,15 @@ Use `position` prop to set popup display position position="bottom" :style="{ height: '20%' }" /> + + + ``` ### Round Corner @@ -121,9 +130,11 @@ export default { | lock-scroll | Whether to lock background scroll | *boolean* | `true` | - | | lazy-render | Whether to lazy render util appeared | *boolean* | `true` | - | | close-on-click-overlay | Whether to close when click overlay | *boolean* | `true` | - | +| closeable | Whether to show close icon | *boolean* | `false` | 2.2.0 | +| close-icon | Close icon name | *string* | `cross` | 2.2.0 | | transition | Transition | *string* | `popup-slide` | - | | get-container | Return the mount node for Popup | *string \| () => HTMLElement* | - | - | -| closeable | Whether to show close icon | *boolean* | `false` | 2.2.0 | + ### Events diff --git a/src/popup/README.zh-CN.md b/src/popup/README.zh-CN.md index c0ce549c5..084a1bfa6 100644 --- a/src/popup/README.zh-CN.md +++ b/src/popup/README.zh-CN.md @@ -57,7 +57,7 @@ export default { ### 关闭图标 -设置`closeable`属性后,会在弹出层的右上角显示关闭图标 +设置`closeable`属性后,会在弹出层的右上角显示关闭图标,并且可以通过`close-icon`属性自定义图标 ```html + + + ``` ### 圆角弹窗 @@ -133,6 +142,7 @@ export default { | lazy-render | 是否在显示弹层时才渲染节点 | *boolean* | `true` | - | | close-on-click-overlay | 是否在点击遮罩层后关闭 | *boolean* | `true` | - | | closeable | 是否显示关闭图标 | *boolean* | `false` | 2.2.0 | +| close-icon | 关闭图标名称或图片链接 | *string* | `cross` | 2.2.0 | | transition | 动画类名,用法与 Vue 原生`transtion`组件的`name`属性一致 | *string* | - | - | | get-container | 指定挂载的节点,可以传入选择器,
或一个返回节点的函数 | *string \| () => HTMLElement* | - | - | diff --git a/src/popup/demo/index.vue b/src/popup/demo/index.vue index 31d650d72..10d1298b2 100644 --- a/src/popup/demo/index.vue +++ b/src/popup/demo/index.vue @@ -28,6 +28,15 @@ {{ $t('closeIcon') }} + + {{ $t('customCloseIcon') }} + @@ -54,7 +63,8 @@ export default { buttonRight: '右侧弹出', getContainer: '指定挂载节点', roundCorner: '圆角弹窗', - closeIcon: '关闭图标' + closeIcon: '关闭图标', + customCloseIcon: '自定义图标' }, 'en-US': { position: 'Position', @@ -65,7 +75,8 @@ export default { buttonRight: 'From Right', getContainer: 'Get Container', roundCorner: 'Round Corner', - closeIcon: 'Close Icon' + closeIcon: 'Close Icon', + customCloseIcon: 'Custom Icon' } }, @@ -78,7 +89,8 @@ export default { showRight: false, showCloseIcon: false, showRoundCorner: false, - showGetContainer: false + showGetContainer: false, + showCustomCloseIcon: false, }; } }; diff --git a/src/popup/index.js b/src/popup/index.js index f26db4340..a9fec90a5 100644 --- a/src/popup/index.js +++ b/src/popup/index.js @@ -12,6 +12,10 @@ export default createComponent({ duration: Number, closeable: Boolean, transition: String, + closeIcon: { + type: String, + default: 'cross' + }, position: { type: String, default: 'center' @@ -64,7 +68,7 @@ export default createComponent({ > {this.slots()} {this.closeable && ( - + )} diff --git a/src/popup/index.less b/src/popup/index.less index 13995a8b6..df59172e7 100644 --- a/src/popup/index.less +++ b/src/popup/index.less @@ -89,6 +89,10 @@ right: @popup-close-icon-margin; color: @popup-close-icon-color; font-size: @popup-close-icon-size; + + &:active { + opacity: .6; + } } } } diff --git a/src/popup/test/__snapshots__/demo.spec.js.snap b/src/popup/test/__snapshots__/demo.spec.js.snap index 55c79d4bc..aca9c0583 100644 --- a/src/popup/test/__snapshots__/demo.spec.js.snap +++ b/src/popup/test/__snapshots__/demo.spec.js.snap @@ -14,6 +14,7 @@ exports[`renders demo correctly 1`] = `
+
diff --git a/src/popup/test/__snapshots__/index.spec.js.snap b/src/popup/test/__snapshots__/index.spec.js.snap index 6fd203565..3f831d084 100644 --- a/src/popup/test/__snapshots__/index.spec.js.snap +++ b/src/popup/test/__snapshots__/index.spec.js.snap @@ -1,5 +1,10 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`close-icon prop 1`] = ` +
+
+`; + exports[`duration prop 1`] = `
`; exports[`reset z-index 1`] = `
`; diff --git a/src/popup/test/index.spec.js b/src/popup/test/index.spec.js index 25a015174..a5879e9e8 100644 --- a/src/popup/test/index.spec.js +++ b/src/popup/test/index.spec.js @@ -239,3 +239,15 @@ test('closeable prop', () => { wrapper.find('.van-popup__close-icon').trigger('click'); expect(wrapper.emitted('input')[0][0]).toEqual(false); }); + +test('close-icon prop', () => { + const wrapper = mount(Popup, { + propsData: { + value: true, + closeable: true, + closeIcon: 'success' + } + }); + + expect(wrapper).toMatchSnapshot(); +});