<script>
	export default {
	    name: 'input-doc',
		data: function () {
			return {
			    input1: '',
				input2: '',
				nicknameRules: [
                   {message: '昵称不可以为空', required: true, trigger: 'blur'},
                   {message: '必须以字母开头', pattern: /^[a-zA-Z]/, trigger: 'blur'},
                   {message: '昵称长度为3~10', min: 3, max: 10, trigger: 'blur'},
                   {message: '不可以包含重复字符', validator: this.checkNickname, trigger: 'blur'}
                ],
                sel: '',
                tagValue: 'Javascript,组件库,Vue'
			}
        },
		mounted: function () {
        },
        methods: {
            checkNickname(rule, value, callback, source, options){
                 const sourceLen = value.length,
                     setLen = [...new Set(value.split(''))].length;
                 if(sourceLen !== setLen){
                     callback(rule.message)
                 }else{
                     callback()
                 }
             }
        }
	}
</script>
<style scoped>
    .source {
        width: 400px;
    }
</style>


## Input 输入框

输入框组件，用于用户输入文本


### 基础用法


:::demo
```html
<mc-input type="text" placeholder="请输入必要的内容">
```
:::


### 可禁用

:::demo 通过设置`disabled`属性来实现输入框进入
```html
<mc-input type="text" disabled>
```
:::


### 可清空

:::demo 利用设置`clearable`属性来实现文本可清空功能
```html
<mc-input type="text" v-model="input2" clearable>
<script>
	export default {
	    data(){
	        return {
	            input2: ''
	        }
	    }
	}
</script>
```
:::

### 可配置标题
:::demo 利用`title`属性来实现组件标题的设置，也可以通过具名插槽`title_slot`来设置复杂的标题
```html
<div>
	<!--通过属性设置-->
	<mc-input type="text" title="商品名称"></mc-input>
	<!--通过具名插槽设置-->
	<mc-input>
		<template slot="title_slot">
			<i class="fa fa-folder-o"></i> 文件夹名称
		</template>
	</mc-input>
</div>
```
:::

### 可配置校验
:::demo 利用`rules`参数来配置当前输入框的校验方式及对应的提示方式
```html
<div>
    <mc-input title="普通校验提示方式" placeholder="请输入正确的昵称" :rules="nicknameRules"></mc-input>
</div>
<script>
	export default {
	    data(){
	        return {
	            nicknameRules: [
                   {message: '昵称不可以为空', required: true, trigger: 'blur'},
                   {message: '必须以字母开头', pattern: /^[a-zA-Z]/, trigger: 'blur'},
                   {message: '昵称长度为3~10', min: 3, max: 10, trigger: 'blur'},
                   {message: '不可以包含重复字符', validator: this.checkNickname, trigger: 'blur'}
               ]
	        }
	    },
	    methods: {
	        checkNickname(rule, value, callback, source, options){
                const sourceLen = value.length,
                    setLen = [...new Set(value.split(''))].length;
                if(sourceLen !== setLen){
                    callback(rule.message)
                }else{
                    callback()
                }
            }
	    }
	}
</script>
```
:::


### 可配置尾部的图标
:::demo suffix支持 [Font Awesome字体库](https://fontawesome.com/)（v4.7.0）中所有免费图标
```html
<mc-input suffix="calendar" placeholder="请输入日期"/>
```
:::

### 文本域的使用方法
:::demo 可以通过`type="textarea"`来设置输入框为"文本域"；可以通过`maxNumber`来说文本域的计数器；
```html
<mc-input type="textarea" :max-number="20" :resize="false"/>
```
:::

### 设置输入框的前置和后置内容
:::demo 可以利用`prepend`和`append`插槽来设置输入框的前置和后置内容
```html
<mc-input title="带有前缀的 纯文本">
	<template slot="prepend">http://</template>
</mc-input>

<mc-input title="带有后缀的 按钮">
	<template slot="append">
		<mc-btn><i class="fa fa-search"></i></mc-btn>
	</template>
</mc-input>

<mc-input title="带有前缀的 下拉列表">
	<template slot="prepend">
		<mc-select v-model="sel" placeholder="更多菜单">
			<mc-select-option :label="1" value="a"></mc-select-option>
			<mc-select-option :label="2" value="b"></mc-select-option>
			<mc-select-option :label="3" value="c"></mc-select-option>
		</mc-select>
	</template>
</mc-input>

<script>
	export default {
	    data(){
	        return {
                sel: ''
	        }

	    }
	}
</script>
```
:::

### 可以输出标签
:::demo 可以让用户通过按键盘`回车键（Enter）`来设置多个标签
```html
<mc-input title="建议上架分类" type="tag" v-model="tagValue"></mc-input>
<mc-input title="当前上架分类" v-model="tagValue" readonly disabled></mc-input>
<script>
	export default {
	    data(){
	        return {
	            tagValue: 'Javascript,组件库,Vue'
	        }
	    }
	}
</script>
```
:::


### input 属性


|参数		|说明		|类型		|可选值		|默认值		|
|-----------|-----------|-----------|-----------|-----------|
|type		|文本框类型		|String		|text/textarea		|text		|
|maxLength		|文本最大长度，与原生maxlength意义相同		|Number		| — 		| — 		|
|title		|组件标题		|String		| — 		| — 		|
|tips		| — 		|String		| — 		| — 		|
|placeholder		|占位提示文本		|String		| — 		|请输入内容		|
|disabled		|文本禁用		|Boolean		| — 		| — 		|
|value		| 绑定值 		|Number/String/Boolean		| — 		| — 		|
|clearable		|是否含有清除按钮		|Boolean		| — 		| — 		|
|readonly		|原生属性，是否只读		|Boolean		| — 		| — 		|
|rows		|文本框的行数（仅在type=textarea时有效）		|Number		| — 		|3		|
|resize		|是否支持可以修改尺寸（仅在type=textarea时有效）		|Boolean		| — 		| — 		|
|rules		| — 		|Object/Array		| — 		| — 		|
|maxNumber		|文字输入字数上限（仅在type=textarea时有效）		|Number		| — 		| — 		|
|splitKey		|type=tag时，用来分割标签的字符		|String/RegExp		| — 		|,		|
|suffix		|输入框尾部的图标		|String		| — 		| — 		|




### input slot

|name		|说明		|
|-----------|-----------|
|prepend    |输入框前置内容，只对 `type="text"` 有效|
|append    |输入框后置内容，只对 `type="text"` 有效|

