@fjyueke/bify-mcp 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/LICENSE +21 -0
- package/README.md +34 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +248 -0
- package/metaData/components/action-sheet/api.md +74 -0
- package/metaData/components/action-sheet/doc.md +243 -0
- package/metaData/components/action-sheet/example/index.tsx +116 -0
- package/metaData/components/area-picker/api.md +25 -0
- package/metaData/components/area-picker/doc.md +132 -0
- package/metaData/components/area-picker/example/index.tsx +60 -0
- package/metaData/components/avatar/api.md +19 -0
- package/metaData/components/avatar/doc.md +170 -0
- package/metaData/components/avatar/example/index.tsx +76 -0
- package/metaData/components/back-top/api.md +21 -0
- package/metaData/components/back-top/doc.md +142 -0
- package/metaData/components/back-top/example/index.tsx +96 -0
- package/metaData/components/backdrop/api.md +20 -0
- package/metaData/components/backdrop/doc.md +98 -0
- package/metaData/components/backdrop/example/index.tsx +33 -0
- package/metaData/components/badge/api.md +10 -0
- package/metaData/components/badge/doc.md +169 -0
- package/metaData/components/badge/example/index.tsx +81 -0
- package/metaData/components/button/api.md +31 -0
- package/metaData/components/button/doc.md +235 -0
- package/metaData/components/button/example/index.tsx +235 -0
- package/metaData/components/calendar/api.md +62 -0
- package/metaData/components/calendar/doc.md +516 -0
- package/metaData/components/calendar/example/index.tsx +501 -0
- package/metaData/components/cascader/api.md +55 -0
- package/metaData/components/cascader/doc.md +358 -0
- package/metaData/components/cascader/example/index.tsx +159 -0
- package/metaData/components/cell/api.md +37 -0
- package/metaData/components/cell/doc.md +158 -0
- package/metaData/components/cell/example/index.tsx +44 -0
- package/metaData/components/checkbox/api.md +35 -0
- package/metaData/components/checkbox/doc.md +203 -0
- package/metaData/components/checkbox/example/index.tsx +94 -0
- package/metaData/components/circle/api.md +17 -0
- package/metaData/components/circle/doc.md +123 -0
- package/metaData/components/circle/example/index.tsx +81 -0
- package/metaData/components/collapse/api.md +31 -0
- package/metaData/components/collapse/doc.md +142 -0
- package/metaData/components/collapse/example/index.tsx +81 -0
- package/metaData/components/config-provider/api.md +7 -0
- package/metaData/components/config-provider/doc.md +193 -0
- package/metaData/components/config-provider/example/index.tsx +54 -0
- package/metaData/components/countdown/api.md +46 -0
- package/metaData/components/countdown/doc.md +167 -0
- package/metaData/components/countdown/example/index.tsx +70 -0
- package/metaData/components/datetime-picker/api.md +25 -0
- package/metaData/components/datetime-picker/doc.md +317 -0
- package/metaData/components/datetime-picker/example/index.tsx +265 -0
- package/metaData/components/dialog/api.md +66 -0
- package/metaData/components/dialog/doc.md +292 -0
- package/metaData/components/dialog/example/index.tsx +138 -0
- package/metaData/components/divider/api.md +15 -0
- package/metaData/components/divider/doc.md +108 -0
- package/metaData/components/divider/example/index.tsx +45 -0
- package/metaData/components/dropdown-menu/api.md +37 -0
- package/metaData/components/dropdown-menu/doc.md +279 -0
- package/metaData/components/dropdown-menu/example/index.tsx +182 -0
- package/metaData/components/empty/api.md +20 -0
- package/metaData/components/empty/doc.md +126 -0
- package/metaData/components/empty/example/index.tsx +66 -0
- package/metaData/components/field/api.md +10 -0
- package/metaData/components/field/doc.md +274 -0
- package/metaData/components/field/example/index.tsx +203 -0
- package/metaData/components/fixed-nav/api.md +21 -0
- package/metaData/components/fixed-nav/doc.md +196 -0
- package/metaData/components/fixed-nav/example/index.tsx +80 -0
- package/metaData/components/fixed-view/api.md +10 -0
- package/metaData/components/fixed-view/doc.md +25 -0
- package/metaData/components/fixed-view/example/index.tsx +12 -0
- package/metaData/components/flex/api.md +18 -0
- package/metaData/components/flex/doc.md +103 -0
- package/metaData/components/flex/example/index.tsx +58 -0
- package/metaData/components/floating-bubble/api.md +18 -0
- package/metaData/components/floating-bubble/doc.md +94 -0
- package/metaData/components/floating-bubble/example/index.tsx +55 -0
- package/metaData/components/floating-panel/api.md +19 -0
- package/metaData/components/floating-panel/doc.md +174 -0
- package/metaData/components/floating-panel/example/index.tsx +131 -0
- package/metaData/components/form/api.md +124 -0
- package/metaData/components/form/doc.md +759 -0
- package/metaData/components/form/example/index.tsx +222 -0
- package/metaData/components/grid/api.md +28 -0
- package/metaData/components/grid/doc.md +167 -0
- package/metaData/components/grid/example/index.tsx +80 -0
- package/metaData/components/image/api.md +42 -0
- package/metaData/components/image/doc.md +117 -0
- package/metaData/components/image/example/index.tsx +76 -0
- package/metaData/components/index-list/api.md +39 -0
- package/metaData/components/index-list/doc.md +176 -0
- package/metaData/components/index-list/example/index.tsx +110 -0
- package/metaData/components/list/api.md +30 -0
- package/metaData/components/list/doc.md +317 -0
- package/metaData/components/list/example/index.tsx +218 -0
- package/metaData/components/loading/api.md +10 -0
- package/metaData/components/loading/doc.md +113 -0
- package/metaData/components/loading/example/index.tsx +47 -0
- package/metaData/components/navbar/api.md +26 -0
- package/metaData/components/navbar/doc.md +85 -0
- package/metaData/components/navbar/example/index.tsx +28 -0
- package/metaData/components/notice-bar/api.md +28 -0
- package/metaData/components/notice-bar/doc.md +154 -0
- package/metaData/components/notice-bar/example/index.tsx +107 -0
- package/metaData/components/notify/api.md +28 -0
- package/metaData/components/notify/doc.md +140 -0
- package/metaData/components/notify/example/index.tsx +89 -0
- package/metaData/components/number-keyboard/api.md +21 -0
- package/metaData/components/number-keyboard/doc.md +247 -0
- package/metaData/components/number-keyboard/example/index.tsx +201 -0
- package/metaData/components/pagination/api.md +18 -0
- package/metaData/components/pagination/doc.md +113 -0
- package/metaData/components/pagination/example/index.tsx +73 -0
- package/metaData/components/password-input/api.md +25 -0
- package/metaData/components/password-input/doc.md +126 -0
- package/metaData/components/password-input/example/index.tsx +124 -0
- package/metaData/components/picker/api.md +61 -0
- package/metaData/components/picker/doc.md +336 -0
- package/metaData/components/picker/example/index.tsx +232 -0
- package/metaData/components/popup/api.md +48 -0
- package/metaData/components/popup/doc.md +150 -0
- package/metaData/components/popup/example/index.tsx +214 -0
- package/metaData/components/progress/api.md +11 -0
- package/metaData/components/progress/doc.md +105 -0
- package/metaData/components/progress/example/index.tsx +58 -0
- package/metaData/components/pull-refresh/api.md +18 -0
- package/metaData/components/pull-refresh/doc.md +198 -0
- package/metaData/components/pull-refresh/example/index.tsx +153 -0
- package/metaData/components/radio/api.md +26 -0
- package/metaData/components/radio/doc.md +201 -0
- package/metaData/components/radio/example/index.tsx +103 -0
- package/metaData/components/rate/api.md +23 -0
- package/metaData/components/rate/doc.md +122 -0
- package/metaData/components/rate/example/index.tsx +36 -0
- package/metaData/components/rolling-text/api.md +23 -0
- package/metaData/components/rolling-text/doc.md +153 -0
- package/metaData/components/rolling-text/example/index.tsx +150 -0
- package/metaData/components/safe-area/api.md +8 -0
- package/metaData/components/safe-area/doc.md +30 -0
- package/metaData/components/safe-area/example/index.tsx +16 -0
- package/metaData/components/search/api.md +35 -0
- package/metaData/components/search/doc.md +185 -0
- package/metaData/components/search/example/index.tsx +101 -0
- package/metaData/components/share-sheet/api.md +48 -0
- package/metaData/components/share-sheet/doc.md +215 -0
- package/metaData/components/share-sheet/example/index.tsx +143 -0
- package/metaData/components/sidebar/api.md +28 -0
- package/metaData/components/sidebar/doc.md +122 -0
- package/metaData/components/sidebar/example/index.tsx +58 -0
- package/metaData/components/signature/api.md +19 -0
- package/metaData/components/signature/doc.md +115 -0
- package/metaData/components/signature/example/index.tsx +56 -0
- package/metaData/components/skeleton/api.md +45 -0
- package/metaData/components/skeleton/doc.md +131 -0
- package/metaData/components/skeleton/example/index.tsx +80 -0
- package/metaData/components/slider/api.md +28 -0
- package/metaData/components/slider/doc.md +151 -0
- package/metaData/components/slider/example/index.tsx +54 -0
- package/metaData/components/space/api.md +12 -0
- package/metaData/components/space/doc.md +125 -0
- package/metaData/components/space/example/index.tsx +75 -0
- package/metaData/components/stepper/api.md +37 -0
- package/metaData/components/stepper/doc.md +152 -0
- package/metaData/components/stepper/example/index.tsx +45 -0
- package/metaData/components/steps/api.md +9 -0
- package/metaData/components/steps/doc.md +143 -0
- package/metaData/components/steps/example/index.tsx +93 -0
- package/metaData/components/sticky/api.md +16 -0
- package/metaData/components/sticky/doc.md +87 -0
- package/metaData/components/sticky/example/index.tsx +62 -0
- package/metaData/components/swipe-cell/api.md +19 -0
- package/metaData/components/swipe-cell/doc.md +105 -0
- package/metaData/components/swipe-cell/example/index.tsx +62 -0
- package/metaData/components/swiper/api.md +22 -0
- package/metaData/components/swiper/doc.md +228 -0
- package/metaData/components/swiper/example/index.tsx +118 -0
- package/metaData/components/switch/api.md +17 -0
- package/metaData/components/switch/doc.md +110 -0
- package/metaData/components/switch/example/index.tsx +57 -0
- package/metaData/components/tabbar/api.md +27 -0
- package/metaData/components/tabbar/doc.md +160 -0
- package/metaData/components/tabbar/example/index.tsx +99 -0
- package/metaData/components/tabs/api.md +36 -0
- package/metaData/components/tabs/doc.md +307 -0
- package/metaData/components/tabs/example/index.tsx +231 -0
- package/metaData/components/tag/api.md +17 -0
- package/metaData/components/tag/doc.md +162 -0
- package/metaData/components/tag/example/index.tsx +84 -0
- package/metaData/components/text-ellipsis/api.md +26 -0
- package/metaData/components/text-ellipsis/doc.md +135 -0
- package/metaData/components/text-ellipsis/example/index.tsx +44 -0
- package/metaData/components/timeline/api.md +20 -0
- package/metaData/components/timeline/doc.md +210 -0
- package/metaData/components/timeline/example/index.tsx +145 -0
- package/metaData/components/toast/api.md +39 -0
- package/metaData/components/toast/doc.md +256 -0
- package/metaData/components/toast/example/index.tsx +136 -0
- package/metaData/components/tree-select/api.md +19 -0
- package/metaData/components/tree-select/doc.md +185 -0
- package/metaData/components/tree-select/example/index.tsx +112 -0
- package/metaData/components/uploader/api.md +32 -0
- package/metaData/components/uploader/doc.md +340 -0
- package/metaData/components/uploader/example/index.tsx +222 -0
- package/metaData/components/watermark/api.md +18 -0
- package/metaData/components/watermark/doc.md +97 -0
- package/metaData/components/watermark/example/index.tsx +62 -0
- package/metaData/components-index.json +274 -0
- package/package.json +56 -0
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { Button, Cell, DropdownMenu, Switch } from "@fjyueke/bify-core"
|
|
2
|
+
import { View, PageMeta } from "@tarojs/components"
|
|
3
|
+
import { Key, useCallback, useState } from "react"
|
|
4
|
+
import Block from "../../../components/block"
|
|
5
|
+
import Page from "../../../components/page"
|
|
6
|
+
|
|
7
|
+
import "./index.scss"
|
|
8
|
+
|
|
9
|
+
function BasicDropdownMenu() {
|
|
10
|
+
const [options] = useState(
|
|
11
|
+
[
|
|
12
|
+
{ title: "默认排序", value: 0 },
|
|
13
|
+
{ title: "好评排序", value: 1 },
|
|
14
|
+
{ title: "销量排序", value: 2 },
|
|
15
|
+
].concat(Array.from({ length: 20 }, (_, i) => ({ title: "选项" + i, value: 3 + i }))),
|
|
16
|
+
)
|
|
17
|
+
const [opened, setOpened] = useState(false)
|
|
18
|
+
const getScrollHeight = useCallback((len) => {
|
|
19
|
+
return len < 5 ? len * 46 : 5 * 46
|
|
20
|
+
}, [])
|
|
21
|
+
return (
|
|
22
|
+
<>
|
|
23
|
+
<PageMeta pageStyle={opened ? "overflow: hidden;" : ""} />
|
|
24
|
+
<DropdownMenu>
|
|
25
|
+
{/* @ts-ignore */}
|
|
26
|
+
<DropdownMenu.Item
|
|
27
|
+
style={{ "--dropdown-menu-item-content-max-height": getScrollHeight(23) + "px" }}
|
|
28
|
+
options={options}
|
|
29
|
+
lock
|
|
30
|
+
onOpen={() => setOpened(true)}
|
|
31
|
+
onClose={() => setOpened(false)}
|
|
32
|
+
/>
|
|
33
|
+
{/* @ts-ignore */}
|
|
34
|
+
<DropdownMenu.Item
|
|
35
|
+
style={{ "--dropdown-menu-item-content-max-height": getScrollHeight(4) + "px" }}
|
|
36
|
+
lock
|
|
37
|
+
onOpen={() => setOpened(true)}
|
|
38
|
+
onClose={() => setOpened(false)}
|
|
39
|
+
>
|
|
40
|
+
<DropdownMenu.Option value={0}>全部商品</DropdownMenu.Option>
|
|
41
|
+
<DropdownMenu.Option value={1}>新款商品</DropdownMenu.Option>
|
|
42
|
+
<DropdownMenu.Option value={2}>活动商品</DropdownMenu.Option>
|
|
43
|
+
<DropdownMenu.Option value={3}>活动商品2</DropdownMenu.Option>
|
|
44
|
+
</DropdownMenu.Item>
|
|
45
|
+
</DropdownMenu>
|
|
46
|
+
</>
|
|
47
|
+
)
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function DropdownMenuWithCustomContent() {
|
|
51
|
+
const [value, setValue] = useState<Key | false>()
|
|
52
|
+
const [option1, setOption1] = useState(0)
|
|
53
|
+
const [switch1, setSwitch1] = useState(true)
|
|
54
|
+
const [switch2, setSwitch2] = useState(false)
|
|
55
|
+
const [options] = useState([
|
|
56
|
+
{
|
|
57
|
+
title: (
|
|
58
|
+
<View>
|
|
59
|
+
默认<View>排序</View>
|
|
60
|
+
</View>
|
|
61
|
+
),
|
|
62
|
+
value: 0,
|
|
63
|
+
},
|
|
64
|
+
{ title: "好评排序", value: 1 },
|
|
65
|
+
{ title: "销量排序", value: 2 },
|
|
66
|
+
])
|
|
67
|
+
return (
|
|
68
|
+
<DropdownMenu value={value} onChange={setValue}>
|
|
69
|
+
<DropdownMenu.Item
|
|
70
|
+
value={option1}
|
|
71
|
+
onChange={setOption1}
|
|
72
|
+
options={options}
|
|
73
|
+
></DropdownMenu.Item>
|
|
74
|
+
<DropdownMenu.Item title="筛选">
|
|
75
|
+
<Cell title="包邮" align="center">
|
|
76
|
+
<Switch size="24" checked={switch1} onChange={setSwitch1} />
|
|
77
|
+
</Cell>
|
|
78
|
+
<Cell title="团购" align="center">
|
|
79
|
+
<Switch size="24" checked={switch2} onChange={setSwitch2} />
|
|
80
|
+
</Cell>
|
|
81
|
+
<View style="padding: 5px 16px;">
|
|
82
|
+
<Button color="primary" block shape="round" onClick={() => setValue(false)}>
|
|
83
|
+
确认
|
|
84
|
+
</Button>
|
|
85
|
+
</View>
|
|
86
|
+
</DropdownMenu.Item>
|
|
87
|
+
</DropdownMenu>
|
|
88
|
+
)
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
function DropdownMenuWithCustomColor() {
|
|
92
|
+
return (
|
|
93
|
+
<DropdownMenu className="custom-color">
|
|
94
|
+
<DropdownMenu.Item>
|
|
95
|
+
<DropdownMenu.Option value={0}>全部商品</DropdownMenu.Option>
|
|
96
|
+
<DropdownMenu.Option value={1}>新款商品</DropdownMenu.Option>
|
|
97
|
+
<DropdownMenu.Option value={2}>活动商品</DropdownMenu.Option>
|
|
98
|
+
</DropdownMenu.Item>
|
|
99
|
+
<DropdownMenu.Item>
|
|
100
|
+
<DropdownMenu.Option value={0}>默认排序</DropdownMenu.Option>
|
|
101
|
+
<DropdownMenu.Option value={1}>好评排序</DropdownMenu.Option>
|
|
102
|
+
<DropdownMenu.Option value={2}>销量排序</DropdownMenu.Option>
|
|
103
|
+
</DropdownMenu.Item>
|
|
104
|
+
</DropdownMenu>
|
|
105
|
+
)
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
function UpDropdownMenu() {
|
|
109
|
+
return (
|
|
110
|
+
<DropdownMenu direction="up">
|
|
111
|
+
<DropdownMenu.Item>
|
|
112
|
+
<DropdownMenu.Option value={0}>全部商品</DropdownMenu.Option>
|
|
113
|
+
<DropdownMenu.Option value={1}>新款商品</DropdownMenu.Option>
|
|
114
|
+
<DropdownMenu.Option value={2}>活动商品</DropdownMenu.Option>
|
|
115
|
+
</DropdownMenu.Item>
|
|
116
|
+
<DropdownMenu.Item>
|
|
117
|
+
<DropdownMenu.Option value={0}>默认排序</DropdownMenu.Option>
|
|
118
|
+
<DropdownMenu.Option value={1}>好评排序</DropdownMenu.Option>
|
|
119
|
+
<DropdownMenu.Option value={2}>销量排序</DropdownMenu.Option>
|
|
120
|
+
</DropdownMenu.Item>
|
|
121
|
+
</DropdownMenu>
|
|
122
|
+
)
|
|
123
|
+
}
|
|
124
|
+
function BackDropDropdownMenu() {
|
|
125
|
+
return (
|
|
126
|
+
<DropdownMenu backdropType="outer">
|
|
127
|
+
<DropdownMenu.Item>
|
|
128
|
+
<DropdownMenu.Option value={0}>全部商品</DropdownMenu.Option>
|
|
129
|
+
<DropdownMenu.Option value={1}>新款商品</DropdownMenu.Option>
|
|
130
|
+
<DropdownMenu.Option value={2}>活动商品</DropdownMenu.Option>
|
|
131
|
+
</DropdownMenu.Item>
|
|
132
|
+
<DropdownMenu.Item>
|
|
133
|
+
<DropdownMenu.Option value={0}>默认排序</DropdownMenu.Option>
|
|
134
|
+
<DropdownMenu.Option value={1}>好评排序</DropdownMenu.Option>
|
|
135
|
+
<DropdownMenu.Option value={2}>销量排序</DropdownMenu.Option>
|
|
136
|
+
</DropdownMenu.Item>
|
|
137
|
+
</DropdownMenu>
|
|
138
|
+
)
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
function DisabledDropdownMenu() {
|
|
142
|
+
return (
|
|
143
|
+
<DropdownMenu>
|
|
144
|
+
<DropdownMenu.Item disabled>
|
|
145
|
+
<DropdownMenu.Option value={0}>全部商品</DropdownMenu.Option>
|
|
146
|
+
<DropdownMenu.Option value={1}>新款商品</DropdownMenu.Option>
|
|
147
|
+
<DropdownMenu.Option value={2}>活动商品</DropdownMenu.Option>
|
|
148
|
+
</DropdownMenu.Item>
|
|
149
|
+
<DropdownMenu.Item disabled>
|
|
150
|
+
<DropdownMenu.Option value={0}>默认排序</DropdownMenu.Option>
|
|
151
|
+
<DropdownMenu.Option value={1}>好评排序</DropdownMenu.Option>
|
|
152
|
+
<DropdownMenu.Option value={2}>销量排序</DropdownMenu.Option>
|
|
153
|
+
</DropdownMenu.Item>
|
|
154
|
+
</DropdownMenu>
|
|
155
|
+
)
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
export default function DropdownMenuDemo() {
|
|
159
|
+
return (
|
|
160
|
+
<Page className="dropdown-menu-demo" title="DropdownMenu 下拉菜单">
|
|
161
|
+
<Block title="基础用法">
|
|
162
|
+
<BasicDropdownMenu />
|
|
163
|
+
</Block>
|
|
164
|
+
<Block title="自定义菜单内容">
|
|
165
|
+
<DropdownMenuWithCustomContent />
|
|
166
|
+
</Block>
|
|
167
|
+
<Block title="自定义选中态颜色">
|
|
168
|
+
<DropdownMenuWithCustomColor />
|
|
169
|
+
</Block>
|
|
170
|
+
<Block title="向上展开">
|
|
171
|
+
<UpDropdownMenu />
|
|
172
|
+
</Block>
|
|
173
|
+
<Block title="背景板位置">
|
|
174
|
+
<BackDropDropdownMenu />
|
|
175
|
+
</Block>
|
|
176
|
+
<Block title="禁用菜单">
|
|
177
|
+
<DisabledDropdownMenu />
|
|
178
|
+
</Block>
|
|
179
|
+
<View style={{ height: "400px", background: "transparent", width: "100vw" }}></View>
|
|
180
|
+
</Page>
|
|
181
|
+
)
|
|
182
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
## API
|
|
2
|
+
|
|
3
|
+
### Empty Props
|
|
4
|
+
|
|
5
|
+
| 参数 | 说明 | 类型 | 默认值 |
|
|
6
|
+
|----------|-----|-------------|-----|
|
|
7
|
+
| children | 内容 | _ReactNode_ | - |
|
|
8
|
+
|
|
9
|
+
### Empty.Image Props
|
|
10
|
+
|
|
11
|
+
| 参数 | 说明 | 类型 | 默认值 |
|
|
12
|
+
|-------|-------------------------------------------------|-----------------|-----------|
|
|
13
|
+
| style | 图片样式 | _CSSProperties_ | - |
|
|
14
|
+
| src | 图片类型,可选值为 `error` `network` `search`,支持传入图片 URL | _string_ | `default` |
|
|
15
|
+
|
|
16
|
+
### Empty.Description Props
|
|
17
|
+
|
|
18
|
+
| 参数 | 说明 | 类型 | 默认值 |
|
|
19
|
+
|----------|-----------|-------------|-----|
|
|
20
|
+
| children | 图片下方的描述文字 | _ReactNode_ | - |
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# Empty 空状态
|
|
2
|
+
|
|
3
|
+
### 介绍
|
|
4
|
+
|
|
5
|
+
空状态时的占位提示。
|
|
6
|
+
|
|
7
|
+
### 引入
|
|
8
|
+
|
|
9
|
+
```ts
|
|
10
|
+
import { Empty } from "@fjyueke/bify-core"
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## 代码演示
|
|
14
|
+
|
|
15
|
+
### 基础用法
|
|
16
|
+
|
|
17
|
+
```tsx
|
|
18
|
+
<Empty>
|
|
19
|
+
<Empty.Image />
|
|
20
|
+
<Empty.Description>描述文字</Empty.Description>
|
|
21
|
+
</Empty>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### 图片类型
|
|
25
|
+
|
|
26
|
+
Empty 组件内置了多种占位图片类型,可以在不同业务场景下使用。
|
|
27
|
+
|
|
28
|
+
```tsx
|
|
29
|
+
<!-- 通用错误 -->
|
|
30
|
+
<Empty>
|
|
31
|
+
<Empty.Image src="error" />
|
|
32
|
+
<Empty.Description>描述文字</Empty.Description>
|
|
33
|
+
</Empty>
|
|
34
|
+
<!-- 网络错误 -->
|
|
35
|
+
<Empty>
|
|
36
|
+
<Empty.Image src="network" />
|
|
37
|
+
<Empty.Description>描述文字</Empty.Description>
|
|
38
|
+
</Empty>
|
|
39
|
+
<!-- 搜索提示 -->
|
|
40
|
+
<Empty>
|
|
41
|
+
<Empty.Image src="search" />
|
|
42
|
+
<Empty.Description>描述文字</Empty.Description>
|
|
43
|
+
</Empty>
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### 自定义图片
|
|
47
|
+
|
|
48
|
+
需要自定义图片时,可以在 image 属性中传入任意图片 URL。
|
|
49
|
+
|
|
50
|
+
```tsx
|
|
51
|
+
<Empty>
|
|
52
|
+
<Empty.Image
|
|
53
|
+
className="custom-empty__image"
|
|
54
|
+
src="https://img.yzcdn.cn/vant/custom-empty-image.png"
|
|
55
|
+
/>
|
|
56
|
+
<Empty.Description>描述文字</Empty.Description>
|
|
57
|
+
</Empty>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
```scss
|
|
61
|
+
.custom-empty__image {
|
|
62
|
+
width: 90px * 2;
|
|
63
|
+
height: 90px * 2;
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### 底部内容
|
|
68
|
+
|
|
69
|
+
通过默认插槽可以在 Empty 组件的下方插入内容。
|
|
70
|
+
|
|
71
|
+
```tsx
|
|
72
|
+
<Empty>
|
|
73
|
+
<Empty.Image />
|
|
74
|
+
<Empty.Description>描述文字</Empty.Description>
|
|
75
|
+
<Button shape="round" color="danger" className="bottom-button">
|
|
76
|
+
按钮
|
|
77
|
+
</Button>
|
|
78
|
+
</Empty>
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
```scss
|
|
82
|
+
.bottom-button {
|
|
83
|
+
margin-top: 24px * 2;
|
|
84
|
+
width: 160px * 2;
|
|
85
|
+
height: 40px * 2;
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## API
|
|
90
|
+
|
|
91
|
+
### Empty Props
|
|
92
|
+
|
|
93
|
+
| 参数 | 说明 | 类型 | 默认值 |
|
|
94
|
+
|----------|-----|-------------|-----|
|
|
95
|
+
| children | 内容 | _ReactNode_ | - |
|
|
96
|
+
|
|
97
|
+
### Empty.Image Props
|
|
98
|
+
|
|
99
|
+
| 参数 | 说明 | 类型 | 默认值 |
|
|
100
|
+
|-------|-------------------------------------------------|-----------------|-----------|
|
|
101
|
+
| style | 图片样式 | _CSSProperties_ | - |
|
|
102
|
+
| src | 图片类型,可选值为 `error` `network` `search`,支持传入图片 URL | _string_ | `default` |
|
|
103
|
+
|
|
104
|
+
### Empty.Description Props
|
|
105
|
+
|
|
106
|
+
| 参数 | 说明 | 类型 | 默认值 |
|
|
107
|
+
|----------|-----------|-------------|-----|
|
|
108
|
+
| children | 图片下方的描述文字 | _ReactNode_ | - |
|
|
109
|
+
|
|
110
|
+
## 主题定制
|
|
111
|
+
|
|
112
|
+
### 样式变量
|
|
113
|
+
|
|
114
|
+
组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 [ConfigProvider](/components/config-provider/) 组件。
|
|
115
|
+
|
|
116
|
+
| 名称 | 默认值 | 描述 |
|
|
117
|
+
|---------------------------------|---------------------------|-----|
|
|
118
|
+
| --empty-padding | _var(--padding-xl) 0_ | - |
|
|
119
|
+
| --empty-image-size | _160px * $hd_ | - |
|
|
120
|
+
| --empty-image-width | _var(--empty-image-size)_ | - |
|
|
121
|
+
| --empty-image-height | _var(--empty-image-size)_ | - |
|
|
122
|
+
| --empty-description-margin-top | _var(--padding-md)_ | - |
|
|
123
|
+
| --empty-description-padding | _0 60px * $hd_ | - |
|
|
124
|
+
| --empty-description-color | _var(--gray-6)_ | - |
|
|
125
|
+
| --empty-description-font-size | _var(--font-size-md)_ | - |
|
|
126
|
+
| --empty-description-line-height | _var(--line-height-md)_ | - |
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Button, Empty, Tabs } from "@fjyueke/bify-core"
|
|
2
|
+
import { useState } from "react"
|
|
3
|
+
import Block from "../../../components/block"
|
|
4
|
+
import Page from "../../../components/page"
|
|
5
|
+
import "./index.scss"
|
|
6
|
+
|
|
7
|
+
function PresetEmpty() {
|
|
8
|
+
const [tab, setTab] = useState(0)
|
|
9
|
+
return (
|
|
10
|
+
<Block title="图片类型">
|
|
11
|
+
<Tabs value={tab} onChange={setTab}>
|
|
12
|
+
<Tabs.TabPane title="通用错误">
|
|
13
|
+
<Empty>
|
|
14
|
+
<Empty.Image src="error" />
|
|
15
|
+
<Empty.Description>描述文字</Empty.Description>
|
|
16
|
+
</Empty>
|
|
17
|
+
</Tabs.TabPane>
|
|
18
|
+
<Tabs.TabPane title="网络错误">
|
|
19
|
+
<Empty>
|
|
20
|
+
<Empty.Image src="network" />
|
|
21
|
+
<Empty.Description>描述文字</Empty.Description>
|
|
22
|
+
</Empty>
|
|
23
|
+
</Tabs.TabPane>
|
|
24
|
+
<Tabs.TabPane title="搜索提示">
|
|
25
|
+
<Empty>
|
|
26
|
+
<Empty.Image src="search" />
|
|
27
|
+
<Empty.Description>描述文字</Empty.Description>
|
|
28
|
+
</Empty>
|
|
29
|
+
</Tabs.TabPane>
|
|
30
|
+
</Tabs>
|
|
31
|
+
</Block>
|
|
32
|
+
)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export default function EmptyDemo() {
|
|
36
|
+
return (
|
|
37
|
+
<Page title="Empty 空状态" className="empty-demo">
|
|
38
|
+
<Block title="基础用法">
|
|
39
|
+
<Empty>
|
|
40
|
+
<Empty.Image />
|
|
41
|
+
<Empty.Description>描述文字</Empty.Description>
|
|
42
|
+
</Empty>
|
|
43
|
+
</Block>
|
|
44
|
+
<PresetEmpty />
|
|
45
|
+
<Block title="自定义图片">
|
|
46
|
+
<Empty>
|
|
47
|
+
<Empty.Image
|
|
48
|
+
style={{ width: 160, height: 160 }}
|
|
49
|
+
className="custom-empty__image"
|
|
50
|
+
src="https://img.yzcdn.cn/vant/custom-empty-image.png"
|
|
51
|
+
/>
|
|
52
|
+
<Empty.Description>描述文字</Empty.Description>
|
|
53
|
+
</Empty>
|
|
54
|
+
</Block>
|
|
55
|
+
<Block title="底部内容">
|
|
56
|
+
<Empty>
|
|
57
|
+
<Empty.Image />
|
|
58
|
+
<Empty.Description>描述文字</Empty.Description>
|
|
59
|
+
<Button shape="round" color="primary" className="bottom-button">
|
|
60
|
+
按钮
|
|
61
|
+
</Button>
|
|
62
|
+
</Empty>
|
|
63
|
+
</Block>
|
|
64
|
+
</Page>
|
|
65
|
+
)
|
|
66
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
## API
|
|
2
|
+
|
|
3
|
+
### Props
|
|
4
|
+
|
|
5
|
+
| 参数 | 说明 | 类型 | 默认值 |
|
|
6
|
+
| --- | --- | --- | --- |
|
|
7
|
+
| label | 左侧文本 | _string \| [FormLabelProps](/components/form/#formlabel-props) \| ReactElement_ | - |
|
|
8
|
+
| feedback | 提示文案,为空时不展示 | _string \| [FormFeedbackProps](/components/form/#formfeedback-props) \| ReactElement_ | - |
|
|
9
|
+
|
|
10
|
+
> 属性继承自 Form.Item 组件,更多属性参见:[Form.Item 组件](/components/form/#formitem-props)
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
# Field 输入框
|
|
2
|
+
|
|
3
|
+
### 介绍
|
|
4
|
+
|
|
5
|
+
用户可以在文本框内输入或编辑文字。
|
|
6
|
+
|
|
7
|
+
### 引入
|
|
8
|
+
|
|
9
|
+
```tsx
|
|
10
|
+
import { Field } from "@fjyueke/bify-core"
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## 代码演示
|
|
14
|
+
|
|
15
|
+
### 基础用法
|
|
16
|
+
|
|
17
|
+
可以通过 `value` 设置输入框的值,通过 `placeholder` 设置占位提示文字,通过 `onChange` 事件获得改变的值。
|
|
18
|
+
|
|
19
|
+
```tsx
|
|
20
|
+
import { Cell, Field, Input } from "@fjyueke/bify-core"
|
|
21
|
+
|
|
22
|
+
function BasicField() {
|
|
23
|
+
const [value, setValue] = useState("")
|
|
24
|
+
return (
|
|
25
|
+
<Cell.Group inset>
|
|
26
|
+
<Field label="文本">
|
|
27
|
+
<Input placeholder="请输入文本" value={value} onChange={(e) => setValue(e.detail.value)} />
|
|
28
|
+
</Field>
|
|
29
|
+
</Cell.Group>
|
|
30
|
+
)
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### 自定义类型
|
|
35
|
+
|
|
36
|
+
根据 `type` 属性定义不同类型的输入框,默认值为 `text`。
|
|
37
|
+
|
|
38
|
+
```tsx
|
|
39
|
+
import { Cell, Field, Input } from "@fjyueke/bify-core"
|
|
40
|
+
|
|
41
|
+
function CustomField() {
|
|
42
|
+
const [text, setText] = useState("")
|
|
43
|
+
const [idcard, setIdcard] = useState("")
|
|
44
|
+
const [number, setNumber] = useState("")
|
|
45
|
+
const [digit, setDigit] = useState("")
|
|
46
|
+
const [password, setPassword] = useState("")
|
|
47
|
+
return (
|
|
48
|
+
<Cell.Group inset>
|
|
49
|
+
<Field label="文本">
|
|
50
|
+
<Input placeholder="请输入文本" value={text} onChange={(e) => setText(e.detail.value)} />
|
|
51
|
+
</Field>
|
|
52
|
+
<Field label="身份证号">
|
|
53
|
+
<Input
|
|
54
|
+
type="idcard"
|
|
55
|
+
placeholder="请输入身份证号"
|
|
56
|
+
value={idcard}
|
|
57
|
+
onChange={(e) => setIdcard(e.detail.value)}
|
|
58
|
+
/>
|
|
59
|
+
</Field>
|
|
60
|
+
<Field label="整数">
|
|
61
|
+
<Input
|
|
62
|
+
type="number"
|
|
63
|
+
placeholder="请输入整数"
|
|
64
|
+
value={number}
|
|
65
|
+
onChange={(e) => setNumber(e.detail.value)}
|
|
66
|
+
/>
|
|
67
|
+
</Field>
|
|
68
|
+
<Field label="数字">
|
|
69
|
+
<Input
|
|
70
|
+
type="digit"
|
|
71
|
+
placeholder="请输入数字(支持小数)"
|
|
72
|
+
value={digit}
|
|
73
|
+
onChange={(e) => setDigit(e.detail.value)}
|
|
74
|
+
/>
|
|
75
|
+
</Field>
|
|
76
|
+
<Field label="密码">
|
|
77
|
+
<Input
|
|
78
|
+
password
|
|
79
|
+
placeholder="请输入密码"
|
|
80
|
+
value={password}
|
|
81
|
+
onChange={(e) => setPassword(e.detail.value)}
|
|
82
|
+
/>
|
|
83
|
+
</Field>
|
|
84
|
+
</Cell.Group>
|
|
85
|
+
)
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### 禁用输入框
|
|
90
|
+
|
|
91
|
+
通过 `readonly` 将输入框设置为只读状态,通过 `disabled` 将输入框设置为禁用状态。
|
|
92
|
+
|
|
93
|
+
```tsx
|
|
94
|
+
import { Cell, Field, Input } from "@fjyueke/bify-core"
|
|
95
|
+
|
|
96
|
+
function DisabledField() {
|
|
97
|
+
return (
|
|
98
|
+
<Cell.Group inset>
|
|
99
|
+
<Field label="文本">
|
|
100
|
+
<Input placeholder="输入框只读" readonly />
|
|
101
|
+
</Field>
|
|
102
|
+
<Field label="文本">
|
|
103
|
+
<Input placeholder="输入框已禁用" disabled />
|
|
104
|
+
</Field>
|
|
105
|
+
</Cell.Group>
|
|
106
|
+
)
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### 显示图标
|
|
111
|
+
|
|
112
|
+
通过 `icon` 和 `rightIcon` 配置输入框两侧的图标,通过设置 `clearable` 在输入过程中展示清除图标。
|
|
113
|
+
|
|
114
|
+
```tsx
|
|
115
|
+
import { Cell, Field, Input } from "@fjyueke/bify-core"
|
|
116
|
+
|
|
117
|
+
function IconField() {
|
|
118
|
+
return (
|
|
119
|
+
<Cell.Group inset>
|
|
120
|
+
<Field label="文本" icon={<SmileOutlined />} rightIcon={<WarningOutlined />}>
|
|
121
|
+
<Input placeholder="显示图标" />
|
|
122
|
+
</Field>
|
|
123
|
+
<Field label="文本" icon={<MusicOutlined />}>
|
|
124
|
+
<Input placeholder="显示清除图标" clearable />
|
|
125
|
+
</Field>
|
|
126
|
+
</Cell.Group>
|
|
127
|
+
)
|
|
128
|
+
}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### 错误提示
|
|
132
|
+
|
|
133
|
+
设置 `required` 属性表示这是一个必填项,可以配合 `Input` 或 `Field.Feedback` 组件显示对应的错误提示。
|
|
134
|
+
|
|
135
|
+
```tsx
|
|
136
|
+
import { Cell, Field, Input } from "@fjyueke/bify-core"
|
|
137
|
+
|
|
138
|
+
function ErrorField() {
|
|
139
|
+
return (
|
|
140
|
+
<Cell.Group inset>
|
|
141
|
+
<Field label="用户名" required>
|
|
142
|
+
<Input placeholder="请输入用户名" color="danger" />
|
|
143
|
+
</Field>
|
|
144
|
+
<Field
|
|
145
|
+
required
|
|
146
|
+
label="手机号"
|
|
147
|
+
feedback={<Field.Feedback status="invalid">手机号格式错误</Field.Feedback>}
|
|
148
|
+
>
|
|
149
|
+
<Input placeholder="请输入手机号" />
|
|
150
|
+
</Field>
|
|
151
|
+
</Cell.Group>
|
|
152
|
+
)
|
|
153
|
+
}
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### 插入按钮
|
|
157
|
+
|
|
158
|
+
通过 `Button` 可以在输入框尾部插入按钮。
|
|
159
|
+
|
|
160
|
+
```tsx
|
|
161
|
+
import { Cell, Field, Input } from "@fjyueke/bify-core"
|
|
162
|
+
|
|
163
|
+
function ButtonField() {
|
|
164
|
+
return (
|
|
165
|
+
<Cell.Group inset>
|
|
166
|
+
<Field align="center" label="短信验证码">
|
|
167
|
+
<Input placeholder="请输入短信验证码" />
|
|
168
|
+
<Button size="small" color="primary">
|
|
169
|
+
发送验证码
|
|
170
|
+
</Button>
|
|
171
|
+
</Field>
|
|
172
|
+
</Cell.Group>
|
|
173
|
+
)
|
|
174
|
+
}
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### 高度自适应
|
|
178
|
+
|
|
179
|
+
对于 Textarea 组件,可以通过 `autoHeight` 属性设置高度自适应。
|
|
180
|
+
|
|
181
|
+
```tsx
|
|
182
|
+
import { Cell, Field, Textarea } from "@fjyueke/bify-core"
|
|
183
|
+
import { getEnv } from "@tarojs/taro"
|
|
184
|
+
const env = getEnv();
|
|
185
|
+
function FieldWithTextarea() {
|
|
186
|
+
return (
|
|
187
|
+
<Cell.Group inset style={{ "--textarea-line-height": env === "WEB" ? "1.2rem" : "1" }}>
|
|
188
|
+
<Field align="start" label="留言">
|
|
189
|
+
<Textarea autoHeight placeholder="请输入留言" />
|
|
190
|
+
</Field>
|
|
191
|
+
</Cell.Group>
|
|
192
|
+
)
|
|
193
|
+
}
|
|
194
|
+
```
|
|
195
|
+
>Tips: 微信placeholder不支持line-height
|
|
196
|
+
|
|
197
|
+
### 显示字数统计
|
|
198
|
+
|
|
199
|
+
设置 `limit` 属性后会在底部显示字数统计。
|
|
200
|
+
|
|
201
|
+
```tsx
|
|
202
|
+
import { Cell, Field, Textarea } from "@fjyueke/bify-core"
|
|
203
|
+
import { getEnv } from "@tarojs/taro"
|
|
204
|
+
const env = getEnv();
|
|
205
|
+
function FieldWithTextareaLimit() {
|
|
206
|
+
return (
|
|
207
|
+
<Cell.Group inset style={{ "--textarea-line-height": env === "WEB" ? "1.2rem" : "1" }}>
|
|
208
|
+
<Field align="start" label="留言">
|
|
209
|
+
<Textarea style={{ height: "48px" }} limit={50} placeholder="请输入留言" />
|
|
210
|
+
</Field>
|
|
211
|
+
</Cell.Group>
|
|
212
|
+
)
|
|
213
|
+
}
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### 输入框内容对齐
|
|
217
|
+
|
|
218
|
+
通过 Input 组件的 `align` 属性可以设置输入框内容的对齐方式,可选值为 `center`、`right`。
|
|
219
|
+
|
|
220
|
+
```tsx
|
|
221
|
+
import { Cell, Field, Input } from "@fjyueke/bify-core"
|
|
222
|
+
|
|
223
|
+
function FieldWithInputAlign() {
|
|
224
|
+
return (
|
|
225
|
+
<Cell.Group inset>
|
|
226
|
+
<Field label="文本">
|
|
227
|
+
<Input align="left" placeholder="输入框内容左对齐" />
|
|
228
|
+
</Field>
|
|
229
|
+
<Field label="文本">
|
|
230
|
+
<Input align="center" placeholder="输入框内容居中对齐" />
|
|
231
|
+
</Field>
|
|
232
|
+
<Field label="文本">
|
|
233
|
+
<Input align="right" placeholder="输入框内容右对齐" />
|
|
234
|
+
</Field>
|
|
235
|
+
</Cell.Group>
|
|
236
|
+
)
|
|
237
|
+
}
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
### 标签(Field.Label)和反馈(Field.Feedback)
|
|
242
|
+
|
|
243
|
+
使用 `label` 和 `feedback` 属性的对象或元素表示法,提供全部属性。
|
|
244
|
+
|
|
245
|
+
```tsx
|
|
246
|
+
import { Cell, Field, Input } from "@fjyueke/bify-core"
|
|
247
|
+
|
|
248
|
+
function FieldWithVaraintLabel() {
|
|
249
|
+
return (
|
|
250
|
+
<Cell.Group inset>
|
|
251
|
+
<Field label="文本">
|
|
252
|
+
<Input placeholder="请输入文本" />
|
|
253
|
+
</Field>
|
|
254
|
+
<Field label={{ children: "文本" }}>
|
|
255
|
+
<Input placeholder="请输入文本" />
|
|
256
|
+
</Field>
|
|
257
|
+
<Field label={<Field.Label>文本</Field.Label>}>
|
|
258
|
+
<Input placeholder="请输入文本" />
|
|
259
|
+
</Field>
|
|
260
|
+
</Cell.Group>
|
|
261
|
+
)
|
|
262
|
+
}
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
## API
|
|
266
|
+
|
|
267
|
+
### Props
|
|
268
|
+
|
|
269
|
+
| 参数 | 说明 | 类型 | 默认值 |
|
|
270
|
+
| --- | --- | --- | --- |
|
|
271
|
+
| label | 左侧文本 | _string \| [FormLabelProps](/components/form/#formlabel-props) \| ReactElement_ | - |
|
|
272
|
+
| feedback | 提示文案,为空时不展示 | _string \| [FormFeedbackProps](/components/form/#formfeedback-props) \| ReactElement_ | - |
|
|
273
|
+
|
|
274
|
+
> 属性继承自 Form.Item 组件,更多属性参见:[Form.Item 组件](/components/form/#formitem-props)
|