From 4bdfcec9d74a1ed42728275b467b42ae7e9e6856 Mon Sep 17 00:00:00 2001 From: baiyaaaaa Date: Tue, 18 Oct 2016 11:26:27 +0800 Subject: [PATCH] add input icon click event --- CHANGELOG.md | 1 + examples/docs/zh-cn/input.md | 11 ++++++++++- packages/input/src/input.vue | 7 +++++-- packages/theme-default/src/input.css | 16 +++++++++++++--- 4 files changed, 29 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4dc5b2415..b6b254fd9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ - 修复 Tooltip/Popover 首次渲染的箭头位置 #412 - 修复 Autocomplete 的弹出框不会消失 #439 - 修复 DatePicker 弹出框样式溢出边框 #318 +- 新增 Input 图标的点击事件 #444 #### 非兼容性更新 diff --git a/examples/docs/zh-cn/input.md b/examples/docs/zh-cn/input.md index 368ebf921..da3a3290b 100644 --- a/examples/docs/zh-cn/input.md +++ b/examples/docs/zh-cn/input.md @@ -109,6 +109,9 @@ }, handleSelect(item) { console.log(item); + }, + handleIconClick(ev) { + console.log(ev); } }, mounted() { @@ -227,7 +230,8 @@ + v-model="input2" + @click="handleIconClick"> ``` ::: @@ -638,6 +642,11 @@ | rows | 输入框行数,只对 `type="textarea"` 有效 | number | — | 2 | | autosize | 自适应内容高度,只对 `type="textarea"` 有效,可传入对象,如,{ minRows: 2, maxRows: 6 } | boolean/object | — | false | +### Input Events +| 事件名称 | 说明 | 回调参数 | +|---------|--------|---------| +| click | 点击 Input 内的图标时触发 | event | + ### Autocomplete API | 参数 | 说明 | 类型 | 可选值 | 默认值 | diff --git a/packages/input/src/input.vue b/packages/input/src/input.vue index 50dd73929..6e7fa6321 100644 --- a/packages/input/src/input.vue +++ b/packages/input/src/input.vue @@ -12,6 +12,8 @@
+ + - -
@@ -138,6 +138,9 @@ }, handleInput(ev) { this.currentValue = ev.target.value; + }, + handleIconClick(ev) { + this.$emit('click', ev); } }, diff --git a/packages/theme-default/src/input.css b/packages/theme-default/src/input.css index 718c93104..e3915be5f 100644 --- a/packages/theme-default/src/input.css +++ b/packages/theme-default/src/input.css @@ -36,11 +36,21 @@ @e icon { position: absolute; - right: 10px; - top: 50%; - transform: translate(0, -50%); + width: 35px; + height: 100%; + right: 0; + text-align: center; color: var(--input-icon-color); + &:after { + content: ''; + height: 100%; + width: 0; + display: inline-block; + vertical-align: middle; + } + + & + .el-input__inner { padding-right: 35px; }