Searchbox 搜索框

示例

风格

可选的 ui 属性值:primary

<template>
<article>
  <veui-searchbox/>
  <veui-searchbox ui="primary"/>
</article>
</template>

<script>
import { Searchbox } from 'veui'

export default {
  components: {
    'veui-searchbox': Searchbox
  }
}
</script>

尺寸

可选的 ui 属性值:large/small

<template>
<article>
  <veui-searchbox ui="large"/>
  <veui-searchbox/>
  <veui-searchbox ui="small"/>
</article>
</template>

<script>
import { Searchbox } from 'veui'

export default {
  components: {
    'veui-searchbox': Searchbox
  }
}
</script>

只读与禁用

<template>
<article>
  <section>
    <veui-radio-group
      v-model="state"
      :items="states"
    />
  </section>
  <section>
    <veui-searchbox
      :readonly="isReadonly"
      :disabled="isDisabled"
    />
    <veui-searchbox
      :readonly="isReadonly"
      :disabled="isDisabled"
      ui="primary"
    />
  </section>
</article>
</template>

<script>
import { Searchbox, RadioGroup } from 'veui'

export default {
  components: {
    'veui-searchbox': Searchbox,
    'veui-radio-group': RadioGroup
  },
  data () {
    return {
      state: null,
      states: [
        {
          label: 'Normal',
          value: null
        },
        {
          label: 'Read-only',
          value: 'readonly'
        },
        {
          label: 'Disabled',
          value: 'disabled'
        }
      ]
    }
  },
  computed: {
    isReadonly () {
      return this.state === 'readonly'
    },
    isDisabled () {
      return this.state === 'disabled'
    }
  }
}
</script>

推荐列表

<template>
<article>
  <veui-searchbox
    v-model="value"
    clearable
    :suggestions="suggestions"
    replace-on-select
    @select="handleSelect"
  />
</article>
</template>

<script>
import { Searchbox } from 'veui'
import toast from 'veui/managers/toast'

export default {
  components: {
    'veui-searchbox': Searchbox
  },
  data () {
    return {
      value: '',
      browsers: [
        'Google Chrome',
        'Apple Safari',
        'Microsoft Edge',
        'Mozilla Firefox',
        'Opera',
        'Vivaldi',
        'Internet Explorer',
        'Maxthon',
        'Android Browser',
        'UC Browser',
        'Samsung Internet',
        'QQ Browser'
      ]
    }
  },
  computed: {
    suggestions () {
      if (!this.value) {
        return []
      }
      return this.browsers.filter(browser => {
        return browser.toLowerCase().indexOf(this.value.toLowerCase()) !== -1
      })
    }
  },
  methods: {
    handleSelect ({ value }) {
      toast.info(value)
    }
  }
}
</script>

API

属性

名称类型默认值描述
uistring-

按钮预设样式。

描述
primary全局搜索样式,搜索图标变成搜索按钮,背景为主题色。
large大尺寸样式。
small小尺寸样式。
placeholderstring-搜索框占位符。
valuestring-

v-model

输入框的值。

autofocusbooleanfalse是否自动聚焦。
clearablebooleanfalse是否显示清除按钮。
select-on-focusbooleanfalse聚焦时是否自动选择文本。
compositionbooleanfalse是否感知输入法状态。
suggestionsArray<string>|Array<Object>-

推荐列表。列表项为 Object 时格式为 {label, value}

名称类型描述
labelstring推荐项文本。
valuestring推荐项值。
replace-on-selectbooleantrue选择推荐项时是否自动使用其内容填充文本框。
suggest-triggerArray<string>|stringinput

展示推荐列表的触发时机。可以是枚举值,也可以枚举值的组合。

描述
focus输入框聚焦时。
input输入框触发 input 事件时。
submit点击搜索按钮时。
disabledbooleanfalse是否为禁用状态。
readonlybooleanfalse是否为只读状态。

插槽

名称描述
suggestions

推荐列表内容。

名称类型描述
suggestionsArray<{value: string, label: string}>suggestions 属性归一化类型后的推荐列表。
selectfunction(suggestion: {value: string, label: string}): void选择指定的推荐项。
suggestions-before插入推荐列表前的内容。
suggestions-after插入推荐列表后的内容。
suggestion

推荐列表的单项插槽,用来定制选项内容。

名称类型描述
labelstring选项文本。
valuestring选项值。

suggestions 中的每一项,除了 labelvalue 外的字段也会自动通过 v-bind 进行绑定。

suggestionsArray<string> 类型时,labelvalue 均为单项 string 值。

事件

名称描述
input

输入框中文本发生变化时触发该事件,回调参数为 (value: string)

名称类型描述
valuestring输入框的值。
suggest

需要展示推荐列表时触发,回调参数为 (value: string)

名称类型描述
valuestring输入框的值。
select

选择推荐列表某个选项时触发,回调参数为 (item: Object)

名称类型描述
item{label: string, value: string=, ...}单个选项。
search

输入内容被提交时触发,回调参数为 (value: string, event: Event)

名称类型描述
valuestring输入框的值。
eventEvent原生点击事件。

图标

名称描述
search搜索。