53 lines
1000 B
Vue
53 lines
1000 B
Vue
<script>
|
|
import Input, { InputProps } from './Input'
|
|
import Icon from '../icon'
|
|
|
|
export default {
|
|
name: 'InputSearch',
|
|
props: {
|
|
...InputProps,
|
|
prefixCls: {
|
|
default: 'ant-input-search',
|
|
type: String,
|
|
},
|
|
inputPrefixCls: {
|
|
default: 'ant-input',
|
|
type: String,
|
|
},
|
|
},
|
|
computed: {
|
|
},
|
|
methods: {
|
|
onSearch (e) {
|
|
this.$emit('search', this.$refs.input.stateValue)
|
|
this.$refs.input.focus()
|
|
},
|
|
},
|
|
render () {
|
|
const { inputPrefixCls, prefixCls, ...others } = this.$props
|
|
const inputProps = {
|
|
props: {
|
|
...others,
|
|
prefixCls: inputPrefixCls,
|
|
},
|
|
attrs: this.$attrs,
|
|
}
|
|
return (
|
|
<Input
|
|
{...inputProps}
|
|
onPressEnter={this.onSearch}
|
|
class={prefixCls}
|
|
ref='input'
|
|
>
|
|
<Icon
|
|
slot='suffix'
|
|
class={`${prefixCls}-icon`}
|
|
onClick={this.onSearch}
|
|
type='search'
|
|
/>
|
|
</Input>
|
|
)
|
|
},
|
|
}
|
|
</script>
|