shop-wx/doc/wot-design-uni/docs/component/cell.md

321 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Cell 单元格
单元格为列表中的单个展示项。
## 基本用法
`Cell` 可以单独使用,也可以和 `CellGroup` 组合使用。
```html
<wd-cell title="标题文字" value="内容" />
<wd-cell-group>
<wd-cell title="标题文字" value="内容" />
<wd-cell title="标题文字" label="描述信息" value="内容" />
</wd-cell-group>
```
## 图标设置
设置 `icon` 属性,值可以为 Icon 章节中的图标名,也可以通过 icon 的 slot 自定义图标位置。
> 自定义图标,如果有多个 cell需保证所有图标的宽度是一致的且垂直居中。使用 icon 属性且为 Icon 章节的字体图标则宽度会自动一致且垂直居中cell 图标的大小是宽 16px高 16pxlarge 尺寸图标宽度 18px高度 18px距离右侧文字距离 15px。如果使用插槽可以通过`custom-icon-class`进行设置。
```html
<wd-cell-group>
<wd-cell title="标题文字" value="内容" icon="setting" />
<wd-cell title="标题文字" value="内容">
<template #icon>
<view class="cell-icon"></view>
</template>
</wd-cell>
</wd-cell-group>
```
```scss
.cell-icon {
display: block;
box-sizing: border-box;
width: 16px;
height: 16px;
margin-right: 4px;
background: url('https://img10.360buyimg.com/jmadvertisement/jfs/t1/71075/7/3762/1820/5d1f26d1E0d600b9e/a264c901943080ac.png') no-repeat;
background-size: cover;
}
```
## 分组标题
可以在 `cell-group` 上设置 `title``value` 属性。
```html
<wd-cell-group title="交易管理" value="内容">
<wd-cell title="标题文字" value="内容" />
<wd-cell title="标题文字" label="描述信息" value="内容" />
</wd-cell-group>
```
## 单元格大小
通过设置 `size` 修改单元格大小,将 `size` 设置为 'large' 时左侧标题字号为 16px。
```html
<wd-cell size="large" title="标题文字" value="内容" />
```
## 展示边框线
`wd-cell-group` 上设置 `border` 属性,会给每个 cell 加上边框,最后一个 cell 则不展示边框,其他具有 `cell` 类型的表单组件也支持边框展示,如 input、picker。
```html
<wd-cell-group title="交易管理" border>
<wd-cell title="标题文字" value="内容" />
<wd-cell :border="false" title="标题文字" label="这一个cell不想要边框" value="内容" />
<wd-cell title="标题文字" label="描述信息" value="内容"></wd-cell>
</wd-cell-group>
```
## 点击反馈
通过设置 `clickable` 开启点击反馈,之后可以监听`click`事件。
```html
<wd-toast />
<wd-cell title="标题文字" value="内容" clickable @click="toast" />
```
```typescript
import { useToast } from '@/uni_modules/wot-design-uni'
const toast = useToast()
function showToast() {
toast.show('点击')
}
```
## 页面跳转
通过设置 `is-link` 属性显示导航箭头和点击态,设置 `to` 属性,指定跳转地址,可以设置 replace 替换掉历史堆栈中的当前页面。
`is-link`会默认开启`clickable`。
```html
<wd-cell title="帮助与反馈" is-link to="/pages/index/index" />
<wd-cell title="设置" value="内容" is-link to="/pages/button/index" replace></wd-cell>
```
可以只设置 `is-link` 用于展示右箭头和点击态。
```html
<wd-cell title="帮助与反馈" is-link></wd-cell>
```
## 垂直居中
通过设置 `center` 设置内容垂直居中对齐,默认顶部居中。
```html
<wd-cell title="标题文字" value="内容" center></wd-cell>
```
## 表单属性 - 必填
设置 `required` 属性。
```html
<wd-cell title="必填" required>
<wd-rate v-model="rate" change="handleRateChange"></wd-rate>
</wd-cell>
```
```typescript
const rate = ref(0)
function handleRateChange({ value }) {
console.log(value)
}
```
## 表单属性 - 上下结构
设置 `vertical` 属性。
```html
<wd-cell title="上下结构" vertical>
<wd-slider v-model="slider" change="handleSliderChange"></wd-slider>
</wd-cell>
```
```typescript
const slider = ref('')
function handleSliderChange({ value }) {
console.log(value)
}
```
## 设置左侧宽度
设置 `title-width` 属性label 内容超出则会 ... 隐藏,如果有个性化需求,使用插槽实现。
```html
<wd-cell title="标题文字" label="这里是文字描述这里是文字描述这里是文字描述" title-width="200px" value="内容" />
```
## 内容省略
设置 `ellipsis` 属性,右侧内容超出时会以省略号显示。
```html
<wd-cell title="标题文字" value="这是一段很长很长很长很长很长很长的内容" ellipsis />
```
## 自定义内容
`cell` 提供了 `icon`、`title`、`label`和默认 value 的插槽。
```html
<wd-cell-group>
<wd-cell title="标题文字" center>
<wd-button custom-class="custom-value" size="small" plain>按钮</wd-button>
</wd-cell>
<wd-cell title="标题文字" center>
<view class="custom-value" style="height: 32px;">
<wd-switch v-model="switchValue" change="handleSwitchChange" />
</view>
</wd-cell>
<wd-cell title="标题文字" is-link to="/pages/index/index">
<view class="custom-text">订购</view>
</wd-cell>
<wd-cell>
<template #title>
<view>
<view style="display: inline-block">标题文字</view>
<view class="end-time">25天后到期</view>
</view>
</template>
</wd-cell>
</wd-cell-group>
```
```typescript
const switchValue = ref('')
function handleSwitchChange({ value }) {
console.log(value)
}
```
```scss
.cell-icon {
display: block;
box-sizing: border-box;
padding: 4px 0;
width: 16px;
height: 24px;
margin-right: 4px;
background: url('https://img10.360buyimg.com/jmadvertisement/jfs/t1/71075/7/3762/1820/5d1f26d1E0d600b9e/a264c901943080ac.png') no-repeat;
background-size: cover;
}
:deep(.custom-value) {
position: absolute;
top: 50%;
right: 0;
transform: translate(0, -50%);
white-space: nowrap;
}
.custom-text {
color: #f0883a;
}
.end-time {
display: inline-block;
margin-left: 8px;
border: 1px solid #faa21e;
padding: 0 4px;
font-size: 10px;
color: #faa21e;
}
```
## CellGroup Attributes
| 参数 | 说明 | 类型 | 可选值 | 默认值 | 最低版本 |
| -------- | -------------- | ------- | ------ | ------ | -------- |
| title | 分组标题 | string | - | - | - |
| value | 分组右侧内容 | string | - | - | - |
| border | 是否展示边框线 | boolean | - | - | - |
| use-slot | 分组启用插槽 | boolean | - | false | - |
## Cell Attributes
| 参数 | 说明 | 类型 | 可选值 | 默认值 | 最低版本 |
| ----------- | ------------------------------ | ------- | ------ | ------ | -------- |
| title | 标题 | string | - | - | - |
| value | 右侧内容 | string | - | - | - |
| icon | 图标类名 | string | - | - | - |
| icon-size | 图标大小 | string \| number | - | - | 1.13.0 |
| label | 描述信息 | string | - | - | - |
| is-link | 是否为跳转链接 | boolean | - | false | - |
| to | 跳转地址 | string | - | - | - |
| clickable | 点击反馈,开启 is-link 时,默认开启此选项 | boolean | - | false | - |
| replace | 跳转时是否替换栈顶页面 | boolean | - | false | - |
| size | 设置单元格大小 | string | large | - | - |
| title-width | 设置左侧标题宽度 | string | - | - | - |
| center | 是否垂直居中,默认顶部居中 | boolean | - | false | - |
| required | 表单属性,必填 | boolean | - | false | - |
| marker-side | 必填标记的位置 | string | before / after | before | 1.12.0 |
| vertical | 表单属性,上下结构 | boolean | - | false | - |
| ellipsis | 内容省略,右侧内容超出时会以省略号显示 | boolean | - | false | 1.11.0 |
| use-title-slot | 是否启用title插槽默认启用用来解决插槽传递时v-slot和v-if冲突问题 | boolean | - | true | 1.11.0 |
| prop | 表单域 `model` 字段名,在使用表单校验功能的情况下,该属性是必填的 | string | - | - | - |
| rules | 表单验证规则,结合`wd-form`组件使用 | `FormItemRule []` | - | `[]` | - |
| border | 是否展示边框线,优先级高于`cell-group`的`border` | boolean | - | - | - |
### FormItemRule 数据结构
| 键名 | 说明 | 类型 |
| --- | --- | --- |
| required | 是否为必选字段 | `boolean` |
| message | 错误提示文案 | `string` |
| validator | 通过函数进行校验,可以返回一个 `Promise` 来进行异步校验 | `(value, rule) => boolean \| Promise` |
| pattern | 通过正则表达式进行校验,正则无法匹配表示校验不通过 | `RegExp` |
## Cell Events
| 事件名称 | 说明 | 参数 | 最低版本 |
| -------- | ------------------------------------------------ | ---- | -------- |
| click | 当 clickable 或 is-link 为 true 时点击单元格触发 | - | - |
## CellGroup Slot
> CellGroup 必须首先开启`use-slot`,插槽才生效。使用插槽时请通过外部自定义样式类来控制样式。
| name | 说明 | 最低版本 |
| ----- | ------------ | -------- |
| title | 分组标题 | - |
| value | 分组右侧内容 | - |
## Cell Slot
| name | 说明 | 最低版本 |
| ------- | ----------------------------------------- | -------- |
| title | 标题 | - |
| default | 右侧内容,使用时不需要设置 `#default` | - |
| icon | 图标 | - |
| label | 描述信息 | - |
## CellGroup 外部样式类
| 类名 | 说明 | 最低版本 |
| ------------ | ---------- | -------- |
| custom-class | 根节点样式 | - |
## Cell 外部样式类
| 类名 | 说明 | 最低版本 |
| ------------------ | ------------------------------ | -------- |
| custom-class | 根节点样式 | - |
| custom-icon-class | icon 外部自定义样式 | - |
| custom-label-class | label 外部自定义样式 | - |
| custom-value-class | value 外部自定义样式 | - |
| custom-title-class | title 外部自定义样式 | - |