@fredwsw/frontend-rules 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +302 -0
- package/bin/cli.js +155 -0
- package/package.json +22 -0
- package/template/docs/uv-ui-docs/action-sheet-cn.md +180 -0
- package/template/docs/uv-ui-docs/album-cn.md +104 -0
- package/template/docs/uv-ui-docs/alert-cn.md +71 -0
- package/template/docs/uv-ui-docs/avatar-cn.md +149 -0
- package/template/docs/uv-ui-docs/back-top-cn.md +121 -0
- package/template/docs/uv-ui-docs/badge-cn.md +100 -0
- package/template/docs/uv-ui-docs/button-cn.md +181 -0
- package/template/docs/uv-ui-docs/calendar-cn.md +179 -0
- package/template/docs/uv-ui-docs/calendars-cn.md +264 -0
- package/template/docs/uv-ui-docs/cell-cn.md +163 -0
- package/template/docs/uv-ui-docs/checkbox-cn.md +164 -0
- package/template/docs/uv-ui-docs/code-cn.md +122 -0
- package/template/docs/uv-ui-docs/code-input-cn.md +127 -0
- package/template/docs/uv-ui-docs/collapse-cn.md +206 -0
- package/template/docs/uv-ui-docs/color-cn.md +122 -0
- package/template/docs/uv-ui-docs/count-down-cn.md +169 -0
- package/template/docs/uv-ui-docs/count-to-cn.md +125 -0
- package/template/docs/uv-ui-docs/datetime-picker-cn.md +167 -0
- package/template/docs/uv-ui-docs/divider-cn.md +90 -0
- package/template/docs/uv-ui-docs/drop-down-cn.md +287 -0
- package/template/docs/uv-ui-docs/empty-cn.md +76 -0
- package/template/docs/uv-ui-docs/form-cn.md +220 -0
- package/template/docs/uv-ui-docs/gap-cn.md +63 -0
- package/template/docs/uv-ui-docs/grid-cn.md +187 -0
- package/template/docs/uv-ui-docs/icon-cn.md +255 -0
- package/template/docs/uv-ui-docs/image-cn.md +170 -0
- package/template/docs/uv-ui-docs/index-list-cn.md +132 -0
- package/template/docs/uv-ui-docs/input-cn.md +157 -0
- package/template/docs/uv-ui-docs/keyboard-cn.md +156 -0
- package/template/docs/uv-ui-docs/layout-cn.md +215 -0
- package/template/docs/uv-ui-docs/line-cn.md +77 -0
- package/template/docs/uv-ui-docs/line-progress-cn.md +132 -0
- package/template/docs/uv-ui-docs/link-cn.md +97 -0
- package/template/docs/uv-ui-docs/list-cn.md +185 -0
- package/template/docs/uv-ui-docs/load-more-cn.md +144 -0
- package/template/docs/uv-ui-docs/loading-icon-cn.md +125 -0
- package/template/docs/uv-ui-docs/loading-page-cn.md +85 -0
- package/template/docs/uv-ui-docs/modal-cn.md +212 -0
- package/template/docs/uv-ui-docs/navbar-cn.md +171 -0
- package/template/docs/uv-ui-docs/no-network-cn.md +112 -0
- package/template/docs/uv-ui-docs/notice-bar-cn.md +119 -0
- package/template/docs/uv-ui-docs/notify-cn.md +185 -0
- package/template/docs/uv-ui-docs/number-box-cn.md +131 -0
- package/template/docs/uv-ui-docs/overlay-cn.md +122 -0
- package/template/docs/uv-ui-docs/parse-cn.md +177 -0
- package/template/docs/uv-ui-docs/pick-color-cn.md +147 -0
- package/template/docs/uv-ui-docs/picker-cn.md +159 -0
- package/template/docs/uv-ui-docs/popup-cn.md +184 -0
- package/template/docs/uv-ui-docs/qrcode-cn.md +150 -0
- package/template/docs/uv-ui-docs/radio-cn.md +166 -0
- package/template/docs/uv-ui-docs/rate-cn.md +91 -0
- package/template/docs/uv-ui-docs/read-more-cn.md +191 -0
- package/template/docs/uv-ui-docs/scroll-list-cn.md +188 -0
- package/template/docs/uv-ui-docs/search-cn.md +107 -0
- package/template/docs/uv-ui-docs/skeleton-cn.md +101 -0
- package/template/docs/uv-ui-docs/skeletons-cn.md +312 -0
- package/template/docs/uv-ui-docs/slider-cn.md +98 -0
- package/template/docs/uv-ui-docs/steps-cn.md +158 -0
- package/template/docs/uv-ui-docs/sticky-cn.md +82 -0
- package/template/docs/uv-ui-docs/subsection-cn.md +161 -0
- package/template/docs/uv-ui-docs/swipe-action-cn.md +207 -0
- package/template/docs/uv-ui-docs/swiper-cn.md +247 -0
- package/template/docs/uv-ui-docs/switch-cn.md +136 -0
- package/template/docs/uv-ui-docs/tabbar-cn.md +224 -0
- package/template/docs/uv-ui-docs/tabs-cn.md +260 -0
- package/template/docs/uv-ui-docs/tags-cn.md +191 -0
- package/template/docs/uv-ui-docs/text-cn.md +178 -0
- package/template/docs/uv-ui-docs/textarea-cn.md +132 -0
- package/template/docs/uv-ui-docs/toast-cn.md +110 -0
- package/template/docs/uv-ui-docs/tooltip-cn.md +91 -0
- package/template/docs/uv-ui-docs/transition-cn.md +202 -0
- package/template/docs/uv-ui-docs/upload-cn.md +156 -0
- package/template/docs/uv-ui-docs/vtabs-cn.md +190 -0
- package/template/docs/uv-ui-docs/waterfall-cn.md +276 -0
- package/template/rules/common.mdc +90 -0
- package/template/rules/uv-ui-docs.mdc +111 -0
- package/template/skills/code-simplifier/SKILL.md +109 -0
- package/template/skills/frontend-design/SKILL.md +44 -0
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
---
|
|
2
|
+
group: 表单
|
|
3
|
+
category: Components
|
|
4
|
+
title: PickColor
|
|
5
|
+
subtitle: 颜色选择
|
|
6
|
+
description: 颜色选择器,支持预制颜色与初始化颜色。
|
|
7
|
+
cover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*BD2JSKm8I-kAAAAAAAAAAAAADrJ8AQ/original
|
|
8
|
+
coverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*r29rQ51bNdwAAAAAAAAAAAAADrJ8AQ/original
|
|
9
|
+
demo:
|
|
10
|
+
cols: 2
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 何时使用 {#when-to-use}
|
|
14
|
+
|
|
15
|
+
颜色选择器用于用户选择颜色,可配置预制颜色和初始颜色。
|
|
16
|
+
|
|
17
|
+
> 完整示例下载地址:[uv-ui 插件市场](https://ext.dcloud.net.cn/plugin?name=uv-ui)
|
|
18
|
+
|
|
19
|
+
## 平台兼容性 {#platform}
|
|
20
|
+
|
|
21
|
+
| App(vue) | App(nvue) | H5 | 小程序 | VUE2 | VUE3 |
|
|
22
|
+
| --- | --- | --- | --- | --- | --- |
|
|
23
|
+
| √ | × | √ | √ | √ | √ |
|
|
24
|
+
|
|
25
|
+
**组件名:** `uv-pick-color`
|
|
26
|
+
|
|
27
|
+
**提示:** nvue 不支持复杂背景色设置,该组件在 nvue 中暂不可用。
|
|
28
|
+
|
|
29
|
+
## 代码演示 {#examples}
|
|
30
|
+
|
|
31
|
+
### 基本使用 {#basic}
|
|
32
|
+
|
|
33
|
+
通过 ref 调用 `open()` 打开,`@confirm` 返回所选颜色。
|
|
34
|
+
|
|
35
|
+
```vue
|
|
36
|
+
<template>
|
|
37
|
+
<view>
|
|
38
|
+
<uv-pick-color ref="pickerColor" @confirm="confirm"></uv-pick-color>
|
|
39
|
+
<button @click="openColor">打开</button>
|
|
40
|
+
</view>
|
|
41
|
+
</template>
|
|
42
|
+
<script>
|
|
43
|
+
export default {
|
|
44
|
+
methods: {
|
|
45
|
+
openColor() {
|
|
46
|
+
this.$refs.pickerColor.open()
|
|
47
|
+
},
|
|
48
|
+
confirm(e) {
|
|
49
|
+
console.log('confirm', e)
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
</script>
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### 设置初始颜色 {#color}
|
|
57
|
+
|
|
58
|
+
通过 `color` 设置初始颜色,格式为 `{ r, g, b, a }`。
|
|
59
|
+
|
|
60
|
+
```vue
|
|
61
|
+
<template>
|
|
62
|
+
<view>
|
|
63
|
+
<uv-pick-color ref="pickerColor" :color="color" @confirm="confirm"></uv-pick-color>
|
|
64
|
+
<button @click="openColor">打开</button>
|
|
65
|
+
</view>
|
|
66
|
+
</template>
|
|
67
|
+
<script>
|
|
68
|
+
export default {
|
|
69
|
+
data() {
|
|
70
|
+
return {
|
|
71
|
+
color: { r: 60, g: 156, b: 255, a: 1 }
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
methods: {
|
|
75
|
+
openColor() {
|
|
76
|
+
this.$refs.pickerColor.open()
|
|
77
|
+
},
|
|
78
|
+
confirm(e) {
|
|
79
|
+
console.log('confirm', e)
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
</script>
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### 设置底部预制颜色 {#prefab}
|
|
87
|
+
|
|
88
|
+
通过 `prefabColor` 设置底部预制颜色,格式为 `[{ r, g, b, a }, ...]`。
|
|
89
|
+
|
|
90
|
+
```vue
|
|
91
|
+
<template>
|
|
92
|
+
<view>
|
|
93
|
+
<uv-pick-color ref="pickerColor" :prefab-color="prefabColor" @confirm="confirm"></uv-pick-color>
|
|
94
|
+
<button @click="openColor">打开</button>
|
|
95
|
+
</view>
|
|
96
|
+
</template>
|
|
97
|
+
<script>
|
|
98
|
+
export default {
|
|
99
|
+
data() {
|
|
100
|
+
return {
|
|
101
|
+
prefabColor: [
|
|
102
|
+
{ r: 60, g: 156, b: 255, a: 1 },
|
|
103
|
+
{ r: 245, g: 108, b: 108, a: 1 }
|
|
104
|
+
]
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
methods: {
|
|
108
|
+
openColor() {
|
|
109
|
+
this.$refs.pickerColor.open()
|
|
110
|
+
},
|
|
111
|
+
confirm(e) {
|
|
112
|
+
console.log('confirm', e)
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
</script>
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## API {#api}
|
|
120
|
+
|
|
121
|
+
### PickColor Props {#props}
|
|
122
|
+
|
|
123
|
+
| 参数 | 类型 | 默认值 | 说明 |
|
|
124
|
+
| --- | --- | --- | --- |
|
|
125
|
+
| color | Object | { r: 0, g: 0, b: 0, a: 0 } | 初始颜色,格式 `{ r, g, b, a }` |
|
|
126
|
+
| prefabColor | Array | [] | 底部预制颜色,元素格式 `{ r, g, b, a }` |
|
|
127
|
+
| closeOnClickOverlay | Boolean | false | 点击遮罩是否关闭 |
|
|
128
|
+
| title | Boolean \| String | - | 顶部标题 |
|
|
129
|
+
| cancelText | String | 取消 | 取消按钮文字 |
|
|
130
|
+
| confirmText | String | 确定 | 确认按钮文字 |
|
|
131
|
+
| cancelColor | String | #909193 | 取消按钮颜色 |
|
|
132
|
+
| confirmColor | String | #3c9cff | 确认按钮颜色 |
|
|
133
|
+
|
|
134
|
+
### PickColor Methods {#methods}
|
|
135
|
+
|
|
136
|
+
| 方法名 | 说明 |
|
|
137
|
+
| --- | --- |
|
|
138
|
+
| open | 打开颜色选择器 |
|
|
139
|
+
| close | 关闭颜色选择器 |
|
|
140
|
+
|
|
141
|
+
### PickColor Events {#events}
|
|
142
|
+
|
|
143
|
+
| 事件名 | 说明 | 回调参数 |
|
|
144
|
+
| --- | --- | --- |
|
|
145
|
+
| @confirm | 点击确定 | `{ hex, rgba }`,如 `{ hex: "#000000", rgba: { r, g, b, a } }` |
|
|
146
|
+
| @cancel | 点击取消 | - |
|
|
147
|
+
| @close | 组件关闭时 | - |
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
---
|
|
2
|
+
group: 表单
|
|
3
|
+
category: Components
|
|
4
|
+
title: Picker
|
|
5
|
+
subtitle: 选择器
|
|
6
|
+
description: 用于单列、多列、多列联动的选择场景。
|
|
7
|
+
demo:
|
|
8
|
+
cols: 2
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 何时使用 {#when-to-use}
|
|
12
|
+
|
|
13
|
+
`uv-picker` 通过 ref 调用 `open()` 打开,通过 `columns` 配置选择项。columns 格式为 `[['中国', '美国', '日本']]`,数组中嵌套数组。
|
|
14
|
+
|
|
15
|
+
> 完整示例下载地址:[uv-ui 插件市场](https://ext.dcloud.net.cn/plugin?name=uv-ui)
|
|
16
|
+
|
|
17
|
+
## 平台兼容性 {#platform}
|
|
18
|
+
|
|
19
|
+
| App(vue) | App(nvue) | H5 | 小程序 | VUE2 | VUE3 |
|
|
20
|
+
| --- | --- | --- | --- | --- | --- |
|
|
21
|
+
| √ | √ | √ | √ | √ | √ |
|
|
22
|
+
|
|
23
|
+
**组件名:** `uv-picker`
|
|
24
|
+
|
|
25
|
+
## 代码演示 {#examples}
|
|
26
|
+
|
|
27
|
+
### 基本使用 {#basic}
|
|
28
|
+
|
|
29
|
+
```vue
|
|
30
|
+
<template>
|
|
31
|
+
<view>
|
|
32
|
+
<uv-picker ref="picker" :columns="columns" @confirm="confirm"></uv-picker>
|
|
33
|
+
<button @click="openPicker">打开</button>
|
|
34
|
+
</view>
|
|
35
|
+
</template>
|
|
36
|
+
<script>
|
|
37
|
+
export default {
|
|
38
|
+
data() {
|
|
39
|
+
return {
|
|
40
|
+
columns: [['中国', '美国', '日本']]
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
methods: {
|
|
44
|
+
openPicker() {
|
|
45
|
+
this.$refs.picker.open()
|
|
46
|
+
},
|
|
47
|
+
confirm(e) {
|
|
48
|
+
console.log('confirm', e)
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
</script>
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 多列联动 {#multi-column}
|
|
56
|
+
|
|
57
|
+
通过 `change` 事件和 `setColumnValues` 完成联动。
|
|
58
|
+
|
|
59
|
+
```vue
|
|
60
|
+
<template>
|
|
61
|
+
<view>
|
|
62
|
+
<uv-picker
|
|
63
|
+
ref="picker"
|
|
64
|
+
:columns="columns"
|
|
65
|
+
@confirm="confirm"
|
|
66
|
+
@change="change"
|
|
67
|
+
></uv-picker>
|
|
68
|
+
</view>
|
|
69
|
+
</template>
|
|
70
|
+
<script>
|
|
71
|
+
export default {
|
|
72
|
+
data() {
|
|
73
|
+
return {
|
|
74
|
+
columns: [
|
|
75
|
+
['中国', '美国'],
|
|
76
|
+
['深圳', '厦门', '上海', '拉萨']
|
|
77
|
+
],
|
|
78
|
+
columnData: [
|
|
79
|
+
['深圳', '厦门', '上海', '拉萨'],
|
|
80
|
+
['得州', '华盛顿', '纽约', '阿拉斯加']
|
|
81
|
+
]
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
methods: {
|
|
85
|
+
change(e) {
|
|
86
|
+
const { columnIndex, index } = e
|
|
87
|
+
if (columnIndex === 0) {
|
|
88
|
+
this.$refs.picker.setColumnValues(1, this.columnData[index])
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
</script>
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### 加载状态 {#loading}
|
|
97
|
+
|
|
98
|
+
数据获取前将 `loading` 设为 true,完成后设为 false。
|
|
99
|
+
|
|
100
|
+
```vue
|
|
101
|
+
<uv-picker ref="picker" :loading="loading" :columns="columns" @change="change"></uv-picker>
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### 自定义选项 {#key-name}
|
|
105
|
+
|
|
106
|
+
通过 `keyName` 指定对象中要展示的属性。
|
|
107
|
+
|
|
108
|
+
```vue
|
|
109
|
+
<uv-picker ref="picker" :columns="columns" keyName="label" @confirm="confirm"></uv-picker>
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### 自定义颜色 {#color}
|
|
113
|
+
|
|
114
|
+
```vue
|
|
115
|
+
<uv-picker ref="picker" :columns="columns" color="red" activeColor="blue" @confirm="confirm"></uv-picker>
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### 默认值 {#default-index}
|
|
119
|
+
|
|
120
|
+
通过 `defaultIndex` 数组配置,长度需与列数相同。如 `[1]` 表示单列选中第 2 个;`[1, 3]` 表示多列。也可用 `setIndexs([1], true)`。
|
|
121
|
+
|
|
122
|
+
## API {#api}
|
|
123
|
+
|
|
124
|
+
### Picker Props {#props}
|
|
125
|
+
|
|
126
|
+
| 参数 | 说明 | 类型 | 默认值 |
|
|
127
|
+
| --- | --- | --- | --- |
|
|
128
|
+
| columns | 每列数据 | Array | - |
|
|
129
|
+
| keyName | 展示 text 的键名 | String | - |
|
|
130
|
+
| showToolbar | 是否显示顶部操作栏 | Boolean | true |
|
|
131
|
+
| title | 标题 | String | - |
|
|
132
|
+
| round | 弹窗圆角 | String \| Number | 0 |
|
|
133
|
+
| loading | 加载状态 | Boolean | false |
|
|
134
|
+
| itemHeight | 选项高度 | String \| Number | 44 |
|
|
135
|
+
| cancelText | 取消按钮文字 | String | 取消 |
|
|
136
|
+
| confirmText | 确认按钮文字 | String | 确认 |
|
|
137
|
+
| color | 文本颜色 | String | #606266 |
|
|
138
|
+
| activeColor | 选中文本颜色 | String | #606266 |
|
|
139
|
+
| defaultIndex | 各列默认索引 | Array | - |
|
|
140
|
+
| closeOnClickOverlay | 点击遮罩关闭 | Boolean | true |
|
|
141
|
+
| closeOnClickConfirm | 点击确认关闭 | Boolean | true |
|
|
142
|
+
|
|
143
|
+
### Picker Methods {#methods}
|
|
144
|
+
|
|
145
|
+
| 方法名 | 说明 |
|
|
146
|
+
| --- | --- |
|
|
147
|
+
| open | 弹出选择器 |
|
|
148
|
+
| close | 关闭选择器 |
|
|
149
|
+
| setIndexs | 设置选中值,如 `setIndexs([1], true)` |
|
|
150
|
+
| setColumnValues | 多列联动时设置某列数据 |
|
|
151
|
+
|
|
152
|
+
### Picker Events {#events}
|
|
153
|
+
|
|
154
|
+
| 事件名 | 说明 | 回调参数 |
|
|
155
|
+
| --- | --- | --- |
|
|
156
|
+
| @confirm | 点击确定 | 选中的值 |
|
|
157
|
+
| @change | 选择值变化 | 见文档 |
|
|
158
|
+
| @cancel | 点击取消 | - |
|
|
159
|
+
| @close | 关闭时 | - |
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
---
|
|
2
|
+
group: 反馈
|
|
3
|
+
category: Components
|
|
4
|
+
title: Popup
|
|
5
|
+
subtitle: 弹出层(抽屉)
|
|
6
|
+
description: 用于展示自定义弹出内容,支持上/下/左/右/中部弹出,遮罩、圆角、关闭图标等多种配置。
|
|
7
|
+
demo:
|
|
8
|
+
cols: 2
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 何时使用 {#when-to-use}
|
|
12
|
+
|
|
13
|
+
`uv-popup` 用于展示弹窗、信息提示等内容,支持上、下、左、右和中部弹出。
|
|
14
|
+
组件仅提供弹出容器,内部内容完全由 slot 自定义,扩展性强。
|
|
15
|
+
|
|
16
|
+
可搭配文档中的「禁止滚动穿透」与「弹出闪一下的优化方案」使用,避免体验问题。
|
|
17
|
+
|
|
18
|
+
> 完整示例下载地址:[uv-ui 插件市场](https://ext.dcloud.net.cn/plugin?name=uv-ui)
|
|
19
|
+
|
|
20
|
+
## 平台兼容性 {#platform}
|
|
21
|
+
|
|
22
|
+
| App(vue) | App(nvue) | H5 | 小程序 | VUE2 | VUE3 |
|
|
23
|
+
| --- | --- | --- | --- | --- | --- |
|
|
24
|
+
| √ | √ | √ | √ | √ | √ |
|
|
25
|
+
|
|
26
|
+
**组件名:** `uv-popup`
|
|
27
|
+
|
|
28
|
+
## 代码演示 {#examples}
|
|
29
|
+
|
|
30
|
+
### 基本使用 {#basic}
|
|
31
|
+
|
|
32
|
+
通过 `slot` 传入弹出内容,通过 `ref` 调用 `open()` / `close()` 控制显示。
|
|
33
|
+
|
|
34
|
+
```vue
|
|
35
|
+
<template>
|
|
36
|
+
<view>
|
|
37
|
+
<uv-popup ref="popup" @change="change">
|
|
38
|
+
<view>
|
|
39
|
+
<text>
|
|
40
|
+
丙辰中秋,欢饮达旦,大醉,作此篇,兼怀子由。 明月几时有?把酒问青天。
|
|
41
|
+
不知天上宫阙,今夕是何年。我欲乘风归去,又恐琼楼玉宇,高处不胜寒。起舞弄清影,何似在人间。
|
|
42
|
+
转朱阁,低绮户,照无眠。不应有恨,何事长向别时圆?人有悲欢离合,月有阴晴圆缺,此事古难全。
|
|
43
|
+
但愿人长久,千里共婵娟。
|
|
44
|
+
</text>
|
|
45
|
+
</view>
|
|
46
|
+
</uv-popup>
|
|
47
|
+
<button @click="open">打开</button>
|
|
48
|
+
</view>
|
|
49
|
+
</template>
|
|
50
|
+
|
|
51
|
+
<script>
|
|
52
|
+
export default {
|
|
53
|
+
methods: {
|
|
54
|
+
open() {
|
|
55
|
+
this.$refs.popup.open('top')
|
|
56
|
+
},
|
|
57
|
+
change(e) {
|
|
58
|
+
console.log('弹窗状态改变:', e)
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
</script>
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### 设置弹出方向 {#mode}
|
|
66
|
+
|
|
67
|
+
通过 `mode` 属性或 `open(type)` 参数设置弹出方向:`top / bottom / left / right / center`(默认 center)。
|
|
68
|
+
|
|
69
|
+
```vue
|
|
70
|
+
<template>
|
|
71
|
+
<view>
|
|
72
|
+
<uv-popup ref="popup" mode="center" @change="change">
|
|
73
|
+
<view style="width: 600rpx;">
|
|
74
|
+
<text>...</text>
|
|
75
|
+
</view>
|
|
76
|
+
</uv-popup>
|
|
77
|
+
<button @click="open">打开</button>
|
|
78
|
+
</view>
|
|
79
|
+
</template>
|
|
80
|
+
|
|
81
|
+
<script>
|
|
82
|
+
export default {
|
|
83
|
+
methods: {
|
|
84
|
+
open() {
|
|
85
|
+
this.$refs.popup.open()
|
|
86
|
+
},
|
|
87
|
+
change(e) {
|
|
88
|
+
console.log('弹窗状态改变:', e)
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
</script>
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### 禁用点击遮罩关闭 {#close-on-click-overlay}
|
|
96
|
+
|
|
97
|
+
将 `closeOnClickOverlay` 设为 false,可禁用点击遮罩关闭,仅通过 `close()` 手动关闭。
|
|
98
|
+
|
|
99
|
+
```vue
|
|
100
|
+
<template>
|
|
101
|
+
<view>
|
|
102
|
+
<uv-popup ref="popup" :close-on-click-overlay="false">
|
|
103
|
+
<view style="width: 600rpx;">
|
|
104
|
+
<text>...</text>
|
|
105
|
+
<button @click="close">关闭</button>
|
|
106
|
+
</view>
|
|
107
|
+
</uv-popup>
|
|
108
|
+
<button @click="open">打开</button>
|
|
109
|
+
</view>
|
|
110
|
+
</template>
|
|
111
|
+
|
|
112
|
+
<script>
|
|
113
|
+
export default {
|
|
114
|
+
methods: {
|
|
115
|
+
open() {
|
|
116
|
+
this.$refs.popup.open()
|
|
117
|
+
},
|
|
118
|
+
close() {
|
|
119
|
+
this.$refs.popup.close()
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
</script>
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### 内容较多时的闪动优化 {#optimize}
|
|
127
|
+
|
|
128
|
+
当内容较多/复杂时可通过 `custom-style` 预设高度或 `min-height`,避免弹出瞬间高度变化导致闪动:
|
|
129
|
+
|
|
130
|
+
```vue
|
|
131
|
+
<template>
|
|
132
|
+
<view>
|
|
133
|
+
<uv-popup ref="popup" mode="bottom" custom-style="height: 200rpx;">
|
|
134
|
+
<view class="content">
|
|
135
|
+
<view>里面是很比较多或复杂的内容...</view>
|
|
136
|
+
<!-- ... -->
|
|
137
|
+
</view>
|
|
138
|
+
</uv-popup>
|
|
139
|
+
<button @click="open">打开</button>
|
|
140
|
+
</view>
|
|
141
|
+
</template>
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## API {#api}
|
|
145
|
+
|
|
146
|
+
### Popup Props {#props}
|
|
147
|
+
|
|
148
|
+
| 参数 | 说明 | 类型 | 默认值 | 可选值 |
|
|
149
|
+
| --- | --- | --- | --- | --- |
|
|
150
|
+
| mode | 弹出方向 | String | center | top \| bottom \| left \| right \| center |
|
|
151
|
+
| duration | 动画时长(ms) | String \| Number | 300 | - |
|
|
152
|
+
| overlay | 是否显示遮罩 | Boolean | true | true \| false |
|
|
153
|
+
| overlayStyle | 遮罩样式(如 `{ background: 'rgba(3, 100, 219, 0.5)' }`) | Object \| String | - | - |
|
|
154
|
+
| overlayOpacity | 遮罩透明度 0-1(勿与 overlayStyle 共用) | Number \| String | 0.5 | - |
|
|
155
|
+
| closeOnClickOverlay | 点击遮罩是否关闭弹窗 | Boolean | true | true \| false |
|
|
156
|
+
| zIndex | 弹出层 `z-index` | Number \| String | 10075 | - |
|
|
157
|
+
| safeAreaInsetTop | 是否留出顶部安全区(状态栏高度) | Boolean | false | true \| false |
|
|
158
|
+
| safeAreaInsetBottom | 是否留出底部安全区 | Boolean | true | true \| false |
|
|
159
|
+
| closeable | 是否显示关闭图标 | Boolean | false | true \| false |
|
|
160
|
+
| closeIconPos | 关闭图标位置 | String | top-right | top-right \| top-left \| bottom-left \| bottom-right |
|
|
161
|
+
| zoom | `mode=center` 时是否开启缩放 | Boolean | true | true \| false |
|
|
162
|
+
| bgColor | 背景色(设为空或 none 可去掉默认白色) | String | none | - |
|
|
163
|
+
| round | 圆角值(仅 top/bottom/center 生效) | Number \| String | 0 | - |
|
|
164
|
+
| customStyle | 内容区自定义外部样式 | Object | - | - |
|
|
165
|
+
|
|
166
|
+
### Popup Methods {#methods}
|
|
167
|
+
|
|
168
|
+
| 方法名 | 说明 | 参数 |
|
|
169
|
+
| --- | --- | --- |
|
|
170
|
+
| open | 打开弹出层 | open(type: String);参数可代替 `mode` 属性 |
|
|
171
|
+
| close | 关闭弹出层 | - |
|
|
172
|
+
|
|
173
|
+
### Popup Events {#events}
|
|
174
|
+
|
|
175
|
+
| 事件名 | 说明 | 回调参数 |
|
|
176
|
+
| --- | --- | --- |
|
|
177
|
+
| @change | 打开/关闭时触发 | e = { show: true \| false } |
|
|
178
|
+
| @maskClick | 点击遮罩时触发 | - |
|
|
179
|
+
|
|
180
|
+
### Popup Slots {#slots}
|
|
181
|
+
|
|
182
|
+
| 名称 | 说明 |
|
|
183
|
+
| --- | --- |
|
|
184
|
+
| default | 弹窗内容 |
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
---
|
|
2
|
+
group: 数据
|
|
3
|
+
category: Components
|
|
4
|
+
title: QRCode
|
|
5
|
+
subtitle: 二维码
|
|
6
|
+
description: 二维码生成组件,支持自定义样式与扩展风格。
|
|
7
|
+
cover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*BD2JSKm8I-kAAAAAAAAAAAAADrJ8AQ/original
|
|
8
|
+
coverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*r29rQ51bNdwAAAAAAAAAAAAADrJ8AQ/original
|
|
9
|
+
demo:
|
|
10
|
+
cols: 2
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 何时使用 {#when-to-use}
|
|
14
|
+
|
|
15
|
+
二维码组件用于生成二维码,可自定义样式(颜色、圆点、方块、间距等),扩展性强。
|
|
16
|
+
|
|
17
|
+
基于 [uQRCode](https://uqrcode.cn/),uv-ui 做了部分封装。详细配置请参考 [uQRCode 官方文档](https://uqrcode.cn/doc/)。
|
|
18
|
+
|
|
19
|
+
> 完整示例下载地址:[uv-ui 插件市场](https://ext.dcloud.net.cn/plugin?name=uv-ui)
|
|
20
|
+
|
|
21
|
+
## 平台兼容性 {#platform}
|
|
22
|
+
|
|
23
|
+
| App(vue) | App(nvue) | H5 | 小程序 | VUE2 | VUE3 |
|
|
24
|
+
| --- | --- | --- | --- | --- | --- |
|
|
25
|
+
| √ | √ | √ | √ | √ | √ |
|
|
26
|
+
|
|
27
|
+
**组件名:** `uv-qrcode`
|
|
28
|
+
|
|
29
|
+
## 注意事项 {#notice}
|
|
30
|
+
|
|
31
|
+
- nvue 可能报错 `WX_RENDER_ERR_TEXTURE_SETBACKGROUND`,为 weex/gcanvas 已知问题,不影响使用
|
|
32
|
+
- `options.size` 暂不生效,请在组件上直接设置 `size`,如 `<uv-qrcode size="300" ...>`
|
|
33
|
+
- nvue 打包后二维码不显示时,请参考官方说明:[nvue 打包后生成失败](https://uqrcode.cn/doc/)
|
|
34
|
+
|
|
35
|
+
## 代码演示 {#examples}
|
|
36
|
+
|
|
37
|
+
### 基本使用 {#basic}
|
|
38
|
+
|
|
39
|
+
默认尺寸 200px,可通过 `size` 调整。
|
|
40
|
+
|
|
41
|
+
```vue
|
|
42
|
+
<template>
|
|
43
|
+
<view>
|
|
44
|
+
<uv-qrcode ref="qrcode" size="300px" value="https://h5.uvui.cn"></uv-qrcode>
|
|
45
|
+
</view>
|
|
46
|
+
</template>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### 自定义样式 {#options}
|
|
50
|
+
|
|
51
|
+
通过 `options` 配置 data、size、margin、颜色、logo 等,详见 uQRCode 基本配置。
|
|
52
|
+
|
|
53
|
+
```vue
|
|
54
|
+
<template>
|
|
55
|
+
<view>
|
|
56
|
+
<uv-qrcode ref="qrcode" value="https://h5.uvui.cn" :options="options2"></uv-qrcode>
|
|
57
|
+
</view>
|
|
58
|
+
</template>
|
|
59
|
+
<script>
|
|
60
|
+
export default {
|
|
61
|
+
data() {
|
|
62
|
+
return {
|
|
63
|
+
options2: {
|
|
64
|
+
data: 'https://www.uvui.cn',
|
|
65
|
+
size: 300,
|
|
66
|
+
useDynamicSize: false,
|
|
67
|
+
errorCorrectLevel: 'Q',
|
|
68
|
+
margin: 10,
|
|
69
|
+
areaColor: '#F95F6B',
|
|
70
|
+
backgroundColor: '#3c9cff',
|
|
71
|
+
foregroundImageSrc: 'https://www.uvui.cn/common/logo.png'
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
</script>
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### 自定义风格 {#style}
|
|
80
|
+
|
|
81
|
+
通过 `registerStyle()` 注册扩展插件,组件仅支持 `type` 为 `style` 的 drawCanvas 扩展。更多风格见 [uQRCode 官方-风格下载](https://uqrcode.cn/plugin/)。`options.style` 需与插件标识一致,如 `style: 'round'` 对应 round 插件。
|
|
82
|
+
|
|
83
|
+
```vue
|
|
84
|
+
<template>
|
|
85
|
+
<view>
|
|
86
|
+
<uv-qrcode ref="qrcode" value="https://h5.uvui.cn" :options="options3"></uv-qrcode>
|
|
87
|
+
</view>
|
|
88
|
+
</template>
|
|
89
|
+
<script>
|
|
90
|
+
import QRCodeStyleRound from './uqrcode.plugin.round.es.js'
|
|
91
|
+
export default {
|
|
92
|
+
data() {
|
|
93
|
+
return {
|
|
94
|
+
options3: {
|
|
95
|
+
style: 'round',
|
|
96
|
+
foregroundImageSrc: 'https://www.uvui.cn/common/logo.png'
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
onReady() {
|
|
101
|
+
this.$refs.qrcode.registerStyle(QRCodeStyleRound)
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
</script>
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## API {#api}
|
|
108
|
+
|
|
109
|
+
### QRCode Props {#props}
|
|
110
|
+
|
|
111
|
+
| 参数 | 类型 | 默认值 | 说明 |
|
|
112
|
+
| --- | --- | --- | --- |
|
|
113
|
+
| value | String | - | 二维码内容 |
|
|
114
|
+
| options | Object | - | 配置项,参考 uQRCode 官方基本配置 |
|
|
115
|
+
| size | String \| Number | 200 | 尺寸,单位 px 或 rpx;推荐在组件上设置,options.size 暂不生效 |
|
|
116
|
+
| fileType | String | png | 导出文件类型:png \| jpg |
|
|
117
|
+
| start | Boolean | true | 是否初始化后立即生成 |
|
|
118
|
+
| auto | Boolean | true | 数据变化是否自动重绘 |
|
|
119
|
+
| hide | Boolean | false | 是否隐藏组件 |
|
|
120
|
+
| type | String | - | canvas 类型:2d(微信小程序) \| normal |
|
|
121
|
+
| queue | Boolean | false | 是否队列绘制,nvue 端适用 |
|
|
122
|
+
| isQueueLoadImage | Boolean | false | 是否队列加载图片,减少网络请求 |
|
|
123
|
+
| loading | Boolean | true | 是否显示 loading |
|
|
124
|
+
| h5SaveIsDownload | Boolean | false | H5 保存时是否自动下载 |
|
|
125
|
+
| h5DownloadName | String | uvQRCode | H5 下载文件名 |
|
|
126
|
+
| h5SaveTip | Boolean | true | H5 保存时是否显示提示 (1.0.3) |
|
|
127
|
+
|
|
128
|
+
### QRCode Methods {#methods}
|
|
129
|
+
|
|
130
|
+
| 方法名 | 说明 |
|
|
131
|
+
| --- | --- |
|
|
132
|
+
| make | 生成二维码,支持 success/fail 回调 |
|
|
133
|
+
| remake | 重新生成 |
|
|
134
|
+
| toTempFilePath | 导出临时文件路径,需在 complete 返回 success=true 后调用 |
|
|
135
|
+
| save | 保存到相册,需在 complete 返回 success=true 后调用 |
|
|
136
|
+
| registerStyle | 注册 style 类型 drawCanvas 扩展,用于自定义风格 |
|
|
137
|
+
|
|
138
|
+
### QRCode Events {#events}
|
|
139
|
+
|
|
140
|
+
| 事件名 | 说明 | 回调参数 |
|
|
141
|
+
| --- | --- | --- |
|
|
142
|
+
| @complete | 生成完成 | `{ success: true \| false }` |
|
|
143
|
+
| @click | 点击组件 | - |
|
|
144
|
+
| @change | 重绘时 | - |
|
|
145
|
+
|
|
146
|
+
### QRCode Slots {#slots}
|
|
147
|
+
|
|
148
|
+
| 插槽名 | 说明 |
|
|
149
|
+
| --- | --- |
|
|
150
|
+
| loading | 自定义加载中内容 |
|