nly-adminlte-vue
Version:
nly adminlte3 components
338 lines (277 loc) • 9.47 kB
Markdown
# Input Group
```html
<div>
<nly-input-group prepend="@" append=".00">
<nly-form-input> </nly-form-input>
</nly-input-group>
<nly-input-group class="mt-3">
<template v-slot:append>
<nly-input-group-text
><strong class="text-danger">!</strong></nly-input-group-text
>
</template>
<nly-form-input></nly-form-input>
</nly-input-group>
<nly-input-group prepend="Username" class="mt-3">
<nly-form-input></nly-form-input>
<nly-input-group-append>
<nly-button variant="outlineSuccess">Button</nly-button>
<nly-button variant="info">Button</nly-button>
</nly-input-group-append>
</nly-input-group>
</div>
<!-- input-group.name -->
<!-- nly-input-group.vue -->
```
## 总览
`nly-input-group` 是输入框组的容器,支持以下几种使用方式
- 可以使用 props `prepend` 和 `append` 来 添加 `nly-input-group-prepend` 和 `nly-input-group-append`,传入的值为这 2 个组件的文本内容
- 可以使用插槽`prepend` 和 `append`,传入的元素会渲染到`nly-input-group-prepend` 和 `nly-input-group-append` 组件中
- 可以使用嵌套子组件:`nly-input-group-prepend` , `nly-input-group-append`,`nly-input-group-text` 和 `nly-input-group-add`
### props `prepend` 和 `append`
使用 props `prepend` 和 `append` 会渲染出 `nly-input-group-prepend` 和 `nly-input-group-append` 2 个组件,且嵌套一个 `nly0input-group-text` 组件
```html
<div>
<nly-input-group prepend="@" append=".00">
<nly-form-input></nly-form-input>
</nly-input-group>
<nly-input-group prepend="0" append="100" class="mt-3">
<nly-form-input type="range" min="0" max="100"></nly-form-input>
</nly-input-group>
</div>
<!-- prepend-append.name -->
<!-- nly-input-group.vue -->
```
### 插槽
如果您想自定义一些拓展,可以使用插槽 `prepend` 和 `append`,分别会渲染嵌套在`nly-input-group-prepend` 和 `nly-input-group-append` 中的元素
```html
<div>
<nly-input-group>
<template v-slot:prepend>
<nly-input-group-text>
<nly-icon icon="fas fa-envelope" />
</nly-input-group-text>
</template>
<nly-form-input></nly-form-input>
<template v-slot:append>
<nly-dropdown text="Dropdown" variant="success">
<nly-dropdown-item>Action A</nly-dropdown-item>
<nly-dropdown-item>Action B</nly-dropdown-item>
</nly-dropdown>
</template>
</nly-input-group>
</div>
<!-- slot.name -->
<!-- nly-input-group.vue -->
```
### 使用子组件
可以使用组件嵌套在 `nly-input-group` 中
```html
<nly-input-group>
<nly-input-group-prepend>
<nly-input-group-text>
<nly-icon icon="fas fa-envelope" />
</nly-input-group-text>
<nly-input-group-text>
<nly-icon icon="fas fa-dollar-sign" />
</nly-input-group-text>
</nly-input-group-prepend>
<nly-form-input type="color" value="#ffc107"></nly-form-input>
<nly-input-group-append>
<nly-input-group-text>
<nly-icon icon="fas fa-check" />
</nly-input-group-text>
<nly-button variant="outlineSecondary">Button</nly-button>
</nly-input-group-append>
</nly-input-group>
<!-- component.name -->
<!-- nly-input-group.vue -->
```
## 多个输入框
`nly-input-group` 多个输入框支持放入 `prepend` 和 `append`
### 复选框和单选框
如果 `prepend` 和 `append` 中嵌套的组件不是 文本类型组件,请不要嵌套 `nly-input-group-text`, 比如嵌套 `nly-button`
```html
<div>
<nly-input-group class="mb-2">
<nly-input-group-prepend is-text>
<input type="checkbox" aria-label="Checkbox for following text input" />
</nly-input-group-prepend>
<nly-form-input aria-label="Text input with checkbox"></nly-form-input>
</nly-input-group>
<nly-input-group class="mb-2">
<nly-input-group-prepend is-text>
<input type="radio" aria-label="Radio for following text input" />
</nly-input-group-prepend>
<nly-form-input aria-label="Text input with radio input"></nly-form-input>
</nly-input-group>
<nly-input-group>
<nly-input-group-prepend is-text>
<nly-switch />
</nly-input-group-prepend>
<nly-form-input aria-label="Text input with switch input"></nly-form-input>
<nly-input-group-append is-text>
<nly-bootstrap-switch size="xs" />
</nly-input-group-append>
</nly-input-group>
</div>
<!-- inputs.name -->
<!-- nly-input-group.vue -->
```
### 多个输入框
```html
<nly-input-group>
<nly-input-group-prepend is-text>
<nly-switch />
</nly-input-group-prepend>
<nly-form-input aria-label="Text input with switch input"></nly-form-input>
<nly-form-input aria-label="Text input with switch input"></nly-form-input>
</nly-input-group>
<!-- inputs.name -->
<!-- nly-input-group.vue -->
```
## 多个拓展
多个拓展可以嵌套多个 `nly-input-group-text` 或者多个 `ly-input-group-prepend`,请注意刺猬差别 prop `is-text`
```html
<nly-input-group>
<nly-input-group-prepend>
<nly-input-group-text>
<nly-icon icon="fas fa-envelope" />
</nly-input-group-text>
<nly-input-group-text>
<nly-icon icon="fas fa-dollar-sign" />
</nly-input-group-text>
</nly-input-group-prepend>
<nly-form-input type="color" value="#ffc107"></nly-form-input>
<nly-input-group-append>
<nly-input-group-text>
<nly-icon icon="fas fa-check" />
</nly-input-group-text>
<nly-button variant="outlineSecondary">Button</nly-button>
</nly-input-group-append>
</nly-input-group>
<!-- 多个.name -->
<!-- nly-input-group.vue -->
```
```html
<nly-input-group>
<nly-input-group-prepend is-text>
<nly-icon icon="fas fa-envelope" />
</nly-input-group-prepend>
<nly-input-group-prepend>
<nly-input-group-text>
<nly-icon icon="fas fa-dollar-sign" />
</nly-input-group-text>
</nly-input-group-prepend>
<nly-input-group-prepend is-text>
<nly-switch />
</nly-input-group-prepend>
<nly-form-input type="color" value="#ffc107"></nly-form-input>
<nly-input-group-append>
<nly-input-group-text>
<nly-icon icon="fas fa-check" />
</nly-input-group-text>
<nly-button variant="outlineSecondary">Button</nly-button>
</nly-input-group-append>
</nly-input-group>
<!-- 多个.name -->
<!-- nly-input-group.vue -->
```
## 嵌入下拉菜单
```html
<div>
<nly-input-group>
<template v-slot:prepend>
<nly-dropdown text="Dropdown" variant="info">
<nly-dropdown-item>Action A</nly-dropdown-item>
<nly-dropdown-item>Action B</nly-dropdown-item>
</nly-dropdown>
</template>
<nly-form-input></nly-form-input>
<template v-slot:append>
<nly-dropdown
text="Dropdown"
variant="outlineSecondary"
v-for="i in 2"
:key="i"
>
<nly-dropdown-item>Action C</nly-dropdown-item>
<nly-dropdown-item>Action D</nly-dropdown-item>
</nly-dropdown>
</template>
</nly-input-group>
</div>
<!-- 下拉菜单.name -->
<!-- nly-input-group.vue -->
```
## 大小
可以设置 prop `size` 来控制大小
```html
<div>
<nly-input-group
v-for="size in ['sm','','lg']"
:key="size"
:size="size"
class="mb-3"
>
<nly-input-group-prepend is-text>
<nly-icon icon="fas fa-envelope" />
</nly-input-group-prepend>
<nly-form-input></nly-form-input>
<nly-input-group-append>
<nly-button size="sm" text="Button" variant="success">Button</nly-button>
</nly-input-group-append>
</nly-input-group>
</div>
<!-- size.name -->
<!-- nly-input-group.vue -->
```
## valid 和 description
`nly-input-group` 同样可以使用 `feedback` 来提供表单验证信息,使用 `description` 来提供表单简介描述信息,不过最外层会渲染一层 `<div>`
```html
<template>
<div>
<nly-input-group
invalid-feedback="我是invalid"
valid-feedback="我是valid"
warning-feedback="我是warning"
:valid='valid'
description='请输入对应的信息'
text-variant='pink'
inline
text-tag='small'
>
<nly-input-group-prepend is-text>
<nly-icon icon="fas fa-envelope" />
</nly-input-group-prepend>
<nly-form-input :valid='valid'></nly-form-input>
<nly-input-group-append>
<nly-button size="sm" text="Button" variant="success"
>Button</nly-button
>
</nly-input-group-append>
</nly-input-group>
<nly-form-group label="valid 表单状态" label-cols-xs="auto" class="mt-2">
<nly-form-select v-model="valid" :options="validOptinos" />
</nly-form-group>
</div>
</template>
<script>
export default {
data(){
return {
valid:'novalid',
validOptinos: [
{ value: null, text: 'Please select an option', disabled: true },
{ value: 'novalid', text: '不显示 feedback' },
{ value: 'invalid', text: '显示invalid feedback' },
{ value: 'valid', text: '显示 valid feedback' },
{ value: 'warning', text: '显示 warning feedback' },
],
}
}
}
</script>
<!-- size.name -->
<!-- nly-input-group.vue -->
```