@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.
Files changed (210) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +34 -0
  3. package/dist/index.d.ts +1 -0
  4. package/dist/index.js +248 -0
  5. package/metaData/components/action-sheet/api.md +74 -0
  6. package/metaData/components/action-sheet/doc.md +243 -0
  7. package/metaData/components/action-sheet/example/index.tsx +116 -0
  8. package/metaData/components/area-picker/api.md +25 -0
  9. package/metaData/components/area-picker/doc.md +132 -0
  10. package/metaData/components/area-picker/example/index.tsx +60 -0
  11. package/metaData/components/avatar/api.md +19 -0
  12. package/metaData/components/avatar/doc.md +170 -0
  13. package/metaData/components/avatar/example/index.tsx +76 -0
  14. package/metaData/components/back-top/api.md +21 -0
  15. package/metaData/components/back-top/doc.md +142 -0
  16. package/metaData/components/back-top/example/index.tsx +96 -0
  17. package/metaData/components/backdrop/api.md +20 -0
  18. package/metaData/components/backdrop/doc.md +98 -0
  19. package/metaData/components/backdrop/example/index.tsx +33 -0
  20. package/metaData/components/badge/api.md +10 -0
  21. package/metaData/components/badge/doc.md +169 -0
  22. package/metaData/components/badge/example/index.tsx +81 -0
  23. package/metaData/components/button/api.md +31 -0
  24. package/metaData/components/button/doc.md +235 -0
  25. package/metaData/components/button/example/index.tsx +235 -0
  26. package/metaData/components/calendar/api.md +62 -0
  27. package/metaData/components/calendar/doc.md +516 -0
  28. package/metaData/components/calendar/example/index.tsx +501 -0
  29. package/metaData/components/cascader/api.md +55 -0
  30. package/metaData/components/cascader/doc.md +358 -0
  31. package/metaData/components/cascader/example/index.tsx +159 -0
  32. package/metaData/components/cell/api.md +37 -0
  33. package/metaData/components/cell/doc.md +158 -0
  34. package/metaData/components/cell/example/index.tsx +44 -0
  35. package/metaData/components/checkbox/api.md +35 -0
  36. package/metaData/components/checkbox/doc.md +203 -0
  37. package/metaData/components/checkbox/example/index.tsx +94 -0
  38. package/metaData/components/circle/api.md +17 -0
  39. package/metaData/components/circle/doc.md +123 -0
  40. package/metaData/components/circle/example/index.tsx +81 -0
  41. package/metaData/components/collapse/api.md +31 -0
  42. package/metaData/components/collapse/doc.md +142 -0
  43. package/metaData/components/collapse/example/index.tsx +81 -0
  44. package/metaData/components/config-provider/api.md +7 -0
  45. package/metaData/components/config-provider/doc.md +193 -0
  46. package/metaData/components/config-provider/example/index.tsx +54 -0
  47. package/metaData/components/countdown/api.md +46 -0
  48. package/metaData/components/countdown/doc.md +167 -0
  49. package/metaData/components/countdown/example/index.tsx +70 -0
  50. package/metaData/components/datetime-picker/api.md +25 -0
  51. package/metaData/components/datetime-picker/doc.md +317 -0
  52. package/metaData/components/datetime-picker/example/index.tsx +265 -0
  53. package/metaData/components/dialog/api.md +66 -0
  54. package/metaData/components/dialog/doc.md +292 -0
  55. package/metaData/components/dialog/example/index.tsx +138 -0
  56. package/metaData/components/divider/api.md +15 -0
  57. package/metaData/components/divider/doc.md +108 -0
  58. package/metaData/components/divider/example/index.tsx +45 -0
  59. package/metaData/components/dropdown-menu/api.md +37 -0
  60. package/metaData/components/dropdown-menu/doc.md +279 -0
  61. package/metaData/components/dropdown-menu/example/index.tsx +182 -0
  62. package/metaData/components/empty/api.md +20 -0
  63. package/metaData/components/empty/doc.md +126 -0
  64. package/metaData/components/empty/example/index.tsx +66 -0
  65. package/metaData/components/field/api.md +10 -0
  66. package/metaData/components/field/doc.md +274 -0
  67. package/metaData/components/field/example/index.tsx +203 -0
  68. package/metaData/components/fixed-nav/api.md +21 -0
  69. package/metaData/components/fixed-nav/doc.md +196 -0
  70. package/metaData/components/fixed-nav/example/index.tsx +80 -0
  71. package/metaData/components/fixed-view/api.md +10 -0
  72. package/metaData/components/fixed-view/doc.md +25 -0
  73. package/metaData/components/fixed-view/example/index.tsx +12 -0
  74. package/metaData/components/flex/api.md +18 -0
  75. package/metaData/components/flex/doc.md +103 -0
  76. package/metaData/components/flex/example/index.tsx +58 -0
  77. package/metaData/components/floating-bubble/api.md +18 -0
  78. package/metaData/components/floating-bubble/doc.md +94 -0
  79. package/metaData/components/floating-bubble/example/index.tsx +55 -0
  80. package/metaData/components/floating-panel/api.md +19 -0
  81. package/metaData/components/floating-panel/doc.md +174 -0
  82. package/metaData/components/floating-panel/example/index.tsx +131 -0
  83. package/metaData/components/form/api.md +124 -0
  84. package/metaData/components/form/doc.md +759 -0
  85. package/metaData/components/form/example/index.tsx +222 -0
  86. package/metaData/components/grid/api.md +28 -0
  87. package/metaData/components/grid/doc.md +167 -0
  88. package/metaData/components/grid/example/index.tsx +80 -0
  89. package/metaData/components/image/api.md +42 -0
  90. package/metaData/components/image/doc.md +117 -0
  91. package/metaData/components/image/example/index.tsx +76 -0
  92. package/metaData/components/index-list/api.md +39 -0
  93. package/metaData/components/index-list/doc.md +176 -0
  94. package/metaData/components/index-list/example/index.tsx +110 -0
  95. package/metaData/components/list/api.md +30 -0
  96. package/metaData/components/list/doc.md +317 -0
  97. package/metaData/components/list/example/index.tsx +218 -0
  98. package/metaData/components/loading/api.md +10 -0
  99. package/metaData/components/loading/doc.md +113 -0
  100. package/metaData/components/loading/example/index.tsx +47 -0
  101. package/metaData/components/navbar/api.md +26 -0
  102. package/metaData/components/navbar/doc.md +85 -0
  103. package/metaData/components/navbar/example/index.tsx +28 -0
  104. package/metaData/components/notice-bar/api.md +28 -0
  105. package/metaData/components/notice-bar/doc.md +154 -0
  106. package/metaData/components/notice-bar/example/index.tsx +107 -0
  107. package/metaData/components/notify/api.md +28 -0
  108. package/metaData/components/notify/doc.md +140 -0
  109. package/metaData/components/notify/example/index.tsx +89 -0
  110. package/metaData/components/number-keyboard/api.md +21 -0
  111. package/metaData/components/number-keyboard/doc.md +247 -0
  112. package/metaData/components/number-keyboard/example/index.tsx +201 -0
  113. package/metaData/components/pagination/api.md +18 -0
  114. package/metaData/components/pagination/doc.md +113 -0
  115. package/metaData/components/pagination/example/index.tsx +73 -0
  116. package/metaData/components/password-input/api.md +25 -0
  117. package/metaData/components/password-input/doc.md +126 -0
  118. package/metaData/components/password-input/example/index.tsx +124 -0
  119. package/metaData/components/picker/api.md +61 -0
  120. package/metaData/components/picker/doc.md +336 -0
  121. package/metaData/components/picker/example/index.tsx +232 -0
  122. package/metaData/components/popup/api.md +48 -0
  123. package/metaData/components/popup/doc.md +150 -0
  124. package/metaData/components/popup/example/index.tsx +214 -0
  125. package/metaData/components/progress/api.md +11 -0
  126. package/metaData/components/progress/doc.md +105 -0
  127. package/metaData/components/progress/example/index.tsx +58 -0
  128. package/metaData/components/pull-refresh/api.md +18 -0
  129. package/metaData/components/pull-refresh/doc.md +198 -0
  130. package/metaData/components/pull-refresh/example/index.tsx +153 -0
  131. package/metaData/components/radio/api.md +26 -0
  132. package/metaData/components/radio/doc.md +201 -0
  133. package/metaData/components/radio/example/index.tsx +103 -0
  134. package/metaData/components/rate/api.md +23 -0
  135. package/metaData/components/rate/doc.md +122 -0
  136. package/metaData/components/rate/example/index.tsx +36 -0
  137. package/metaData/components/rolling-text/api.md +23 -0
  138. package/metaData/components/rolling-text/doc.md +153 -0
  139. package/metaData/components/rolling-text/example/index.tsx +150 -0
  140. package/metaData/components/safe-area/api.md +8 -0
  141. package/metaData/components/safe-area/doc.md +30 -0
  142. package/metaData/components/safe-area/example/index.tsx +16 -0
  143. package/metaData/components/search/api.md +35 -0
  144. package/metaData/components/search/doc.md +185 -0
  145. package/metaData/components/search/example/index.tsx +101 -0
  146. package/metaData/components/share-sheet/api.md +48 -0
  147. package/metaData/components/share-sheet/doc.md +215 -0
  148. package/metaData/components/share-sheet/example/index.tsx +143 -0
  149. package/metaData/components/sidebar/api.md +28 -0
  150. package/metaData/components/sidebar/doc.md +122 -0
  151. package/metaData/components/sidebar/example/index.tsx +58 -0
  152. package/metaData/components/signature/api.md +19 -0
  153. package/metaData/components/signature/doc.md +115 -0
  154. package/metaData/components/signature/example/index.tsx +56 -0
  155. package/metaData/components/skeleton/api.md +45 -0
  156. package/metaData/components/skeleton/doc.md +131 -0
  157. package/metaData/components/skeleton/example/index.tsx +80 -0
  158. package/metaData/components/slider/api.md +28 -0
  159. package/metaData/components/slider/doc.md +151 -0
  160. package/metaData/components/slider/example/index.tsx +54 -0
  161. package/metaData/components/space/api.md +12 -0
  162. package/metaData/components/space/doc.md +125 -0
  163. package/metaData/components/space/example/index.tsx +75 -0
  164. package/metaData/components/stepper/api.md +37 -0
  165. package/metaData/components/stepper/doc.md +152 -0
  166. package/metaData/components/stepper/example/index.tsx +45 -0
  167. package/metaData/components/steps/api.md +9 -0
  168. package/metaData/components/steps/doc.md +143 -0
  169. package/metaData/components/steps/example/index.tsx +93 -0
  170. package/metaData/components/sticky/api.md +16 -0
  171. package/metaData/components/sticky/doc.md +87 -0
  172. package/metaData/components/sticky/example/index.tsx +62 -0
  173. package/metaData/components/swipe-cell/api.md +19 -0
  174. package/metaData/components/swipe-cell/doc.md +105 -0
  175. package/metaData/components/swipe-cell/example/index.tsx +62 -0
  176. package/metaData/components/swiper/api.md +22 -0
  177. package/metaData/components/swiper/doc.md +228 -0
  178. package/metaData/components/swiper/example/index.tsx +118 -0
  179. package/metaData/components/switch/api.md +17 -0
  180. package/metaData/components/switch/doc.md +110 -0
  181. package/metaData/components/switch/example/index.tsx +57 -0
  182. package/metaData/components/tabbar/api.md +27 -0
  183. package/metaData/components/tabbar/doc.md +160 -0
  184. package/metaData/components/tabbar/example/index.tsx +99 -0
  185. package/metaData/components/tabs/api.md +36 -0
  186. package/metaData/components/tabs/doc.md +307 -0
  187. package/metaData/components/tabs/example/index.tsx +231 -0
  188. package/metaData/components/tag/api.md +17 -0
  189. package/metaData/components/tag/doc.md +162 -0
  190. package/metaData/components/tag/example/index.tsx +84 -0
  191. package/metaData/components/text-ellipsis/api.md +26 -0
  192. package/metaData/components/text-ellipsis/doc.md +135 -0
  193. package/metaData/components/text-ellipsis/example/index.tsx +44 -0
  194. package/metaData/components/timeline/api.md +20 -0
  195. package/metaData/components/timeline/doc.md +210 -0
  196. package/metaData/components/timeline/example/index.tsx +145 -0
  197. package/metaData/components/toast/api.md +39 -0
  198. package/metaData/components/toast/doc.md +256 -0
  199. package/metaData/components/toast/example/index.tsx +136 -0
  200. package/metaData/components/tree-select/api.md +19 -0
  201. package/metaData/components/tree-select/doc.md +185 -0
  202. package/metaData/components/tree-select/example/index.tsx +112 -0
  203. package/metaData/components/uploader/api.md +32 -0
  204. package/metaData/components/uploader/doc.md +340 -0
  205. package/metaData/components/uploader/example/index.tsx +222 -0
  206. package/metaData/components/watermark/api.md +18 -0
  207. package/metaData/components/watermark/doc.md +97 -0
  208. package/metaData/components/watermark/example/index.tsx +62 -0
  209. package/metaData/components-index.json +274 -0
  210. package/package.json +56 -0
@@ -0,0 +1,116 @@
1
+ import { ActionSheet, Cell } from "@fjyueke/bify-core"
2
+ import { ArrowRight } from "@fjyueke/bify-icons"
3
+ import { useMemo, useState } from "react"
4
+ import Block from "../../../components/block"
5
+ import Page from "../../../components/page"
6
+ import "./index.scss"
7
+
8
+ function BasicActionSheet() {
9
+ const [open, setOpen] = useState(false)
10
+ const actions = useMemo(() => [
11
+ { name: "选项一", value: "1" },
12
+ { name: "选项二", value: "2" },
13
+ { name: "选项三", value: "3" },
14
+ ], [])
15
+ return (
16
+ <>
17
+ <Cell clickable isLink title="基础用法" onClick={() => setOpen(true)} />
18
+ <ActionSheet actions={actions} open={open} onSelect={() => setOpen(false)} onClose={setOpen} />
19
+ </>
20
+ )
21
+ }
22
+
23
+ function ActionSheetWithCancel() {
24
+ const [open, setOpen] = useState(false)
25
+ const actions = useMemo(() => [
26
+ { name: "选项一", value: "1" },
27
+ { name: "选项二", value: "2" },
28
+ { name: "选项三", value: "3" },
29
+ ], [])
30
+ return (
31
+ <>
32
+ <Cell
33
+ clickable
34
+ isLink
35
+ title="展示取消按钮"
36
+ onClick={() => setOpen(true)}
37
+ />
38
+ <ActionSheet
39
+ cancelText="取消"
40
+ actions={actions}
41
+ open={open}
42
+ onSelect={() => setOpen(false)}
43
+ onCancel={() => setOpen(false)}
44
+ onClose={setOpen}
45
+ />
46
+ </>
47
+ )
48
+ }
49
+
50
+ function ActionSheetWithDescription() {
51
+ const [open, setOpen] = useState(false)
52
+ const actions = useMemo(() => [
53
+ { name: "选项一", value: "1", subname: "这是一段描述信息" },
54
+ { name: "选项二", value: "2" },
55
+ { name: "选项三", value: "3" },
56
+ ], [])
57
+ return (
58
+ <>
59
+ <Cell
60
+ clickable
61
+ title="展示描述信息"
62
+ isLink
63
+ onClick={() => setOpen(true)}
64
+ />
65
+ <ActionSheet
66
+ description="这是一段描述信息"
67
+ cancelText="取消"
68
+ actions={actions}
69
+ open={open}
70
+ onSelect={() => setOpen(false)}
71
+ onCancel={() => setOpen(false)}
72
+ onClose={setOpen}
73
+ />
74
+ </>
75
+ )
76
+ }
77
+
78
+ function ActionSheetWithStatuses() {
79
+ const [open, setOpen] = useState(false)
80
+ const actions = useMemo(() => [
81
+ { name: "选项一", value: "1", style: { color: "#ee0a24" } },
82
+ { name: "选项二", value: "2", disabled: true },
83
+ { name: "选项三", value: "3", loading: true },
84
+ ], [])
85
+ return (
86
+ <>
87
+ <Cell clickable title="选项状态" isLink onClick={() => setOpen(true)} />
88
+ <ActionSheet
89
+ actions={actions}
90
+ cancelText="取消"
91
+ open={open}
92
+ onSelect={(value) => {
93
+ console.log(value)
94
+ setOpen(false)
95
+ }}
96
+ onCancel={() => setOpen(false)}
97
+ onClose={setOpen}
98
+ />
99
+ </>
100
+ )
101
+ }
102
+
103
+ export default function ActionSheetDemo() {
104
+ return (
105
+ <Page title="ActionSheet 动作面板" className="action-sheet-demo">
106
+ <Block variant="card" title="基础用法">
107
+ <BasicActionSheet />
108
+ <ActionSheetWithCancel />
109
+ <ActionSheetWithDescription />
110
+ </Block>
111
+ <Block variant="card" title="选项状态">
112
+ <ActionSheetWithStatuses />
113
+ </Block>
114
+ </Page>
115
+ )
116
+ }
@@ -0,0 +1,25 @@
1
+ ## API
2
+
3
+ ### Props
4
+
5
+ | 参数 | 说明 | 类型 | 默认值 |
6
+ | --------------------------------- | --------------------------------------------------------- | ---------------- | ------- |
7
+ | defaultValue | 默认选中的值 | _string[]_ | - |
8
+ | value | 选中的值 | _string[]_ | - |
9
+ | areaList <br>`v0.1.1-alpha.7` | 省市区数据 | _object_ | - |
10
+ | depth | 显示列数,3-省市区,2-省市,1-省 | _string_ | `3` |
11
+ | title <br>`v0.1.1-alpha.7` | 顶部栏标题 | _ReactNode_ | - |
12
+ | confirmText <br>`v0.1.1-alpha.7` | 确认按钮文字 | _ReactNode_ | `确认` |
13
+ | cancelText <br>`v0.1.1-alpha.7` | 取消按钮文字 | _ReactNode_ | `取消` |
14
+ | loading | 是否显示加载状态 | _boolean_ | `false` |
15
+ | readonly | 是否为只读状态,只读状态下无法切换选项 | _boolean_ | `false` |
16
+ | siblingCount | 可见的选项相邻个数 | _number_ | `3` |
17
+ | optionHeight <br>`v0.1.1-alpha.7` | 选项高度,支持 `px` `vw` `vh` `rem` `rpx` 单位,默认 `px` | _number\|string_ | `44` |
18
+
19
+ ### Events
20
+
21
+ | 事件 | 说明 | 回调参数 |
22
+ | --------- | ------------------ | -------------------------------------------------------------------------- |
23
+ | onConfirm | 点击完成按钮时触发 | _values: string[], options: PickerOptionObject[]_ |
24
+ | onCancel | 点击取消按钮时触发 | _values: string[], options: PickerOptionObject[]_ |
25
+ | onChange | 选项改变时触发 | _values: string[], option: PickerOptionObject, column: PickerOptionObject_ |
@@ -0,0 +1,132 @@
1
+ # AreaPicker 省市区选择
2
+
3
+ ### 介绍
4
+
5
+ 省市区三级联动选择,通常与[弹出层](/components/popup)组件配合使用。
6
+
7
+ ### 引入
8
+
9
+ ```tsx
10
+ import { AreaPicker } from "@fjyueke/bify-core"
11
+ ```
12
+
13
+ ## 代码演示
14
+
15
+ ### 基础用法
16
+
17
+ 初始化省市区组件时,需要通过 `areaList` 属性传入省市区数据。
18
+
19
+ ```tsx
20
+ <AreaPicker areaList={areaList} />
21
+ ```
22
+
23
+ ### areaList 格式
24
+
25
+ areaList 为对象结构,包含 `province_list`、`city_list`、`county_list` 三个 key。
26
+
27
+ 每项以地区码作为 key,省市区名字作为 value。地区码为 6 位数字,前两位代表省份,中间两位代表城市,后两位代表区县,以 0 补足 6 位。比如北京的地区码为 `11`,以 0 补足 6 位,为 `110000`。
28
+
29
+ 示例数据如下:
30
+
31
+ ```js
32
+ const areaList = {
33
+ province_list: {
34
+ 110000: "北京市",
35
+ 120000: "天津市",
36
+ },
37
+ city_list: {
38
+ 110100: "北京市",
39
+ 120100: "天津市",
40
+ },
41
+ county_list: {
42
+ 110101: "东城区",
43
+ 110102: "西城区",
44
+ // ....
45
+ },
46
+ }
47
+ ```
48
+
49
+ ### @vant/area-data
50
+
51
+ Vant 官方提供了一份默认的省市区数据,可以通过 [@vant/area-data](https://github.com/youzan/vant/tree/dev/packages/vant-area-data) 引入:
52
+
53
+ ```bash
54
+ # 通过 npm
55
+ npm i @vant/area-data
56
+
57
+ # 通过 yarn
58
+ yarn add @vant/area-data
59
+
60
+ # 通过 pnpm
61
+ pnpm add @vant/area-data
62
+ ```
63
+
64
+ ```tsx
65
+ import { areaList } from "@vant/area-data"
66
+ ```
67
+
68
+ ### 选中省市区
69
+
70
+ 通过 `defaultValue` 设置默认值
71
+
72
+ 通过 `value` `onChange` 控制选中
73
+
74
+ ```tsx
75
+ <AreaPicker areaList={areaList} defaultValue={["330000", "330300", "330305"]} />
76
+ ```
77
+
78
+ ### 配置显示列
79
+
80
+ 可以通过 `depth` 属性配置省市区显示的列数,默认情况下会显示省市区,当你设置为 `2`,则只会显示省市选择。
81
+
82
+ ```tsx
83
+ <AreaPicker depth={2} areaList={areaList} />
84
+ ```
85
+
86
+ ### 手动控制 DOM
87
+
88
+ 初始化省市区组件时,需要通过 `AreaPicker.Columns` 子组件传入省市区数据。
89
+
90
+ ```tsx
91
+ import { AreaPicker } from "@fjyueke/bify-core"
92
+ import { areaList } from "@vant/area-data"
93
+
94
+ function BasicAreaPicker() {
95
+ return (
96
+ <AreaPicker>
97
+ <AreaPicker.Toolbar>
98
+ <AreaPicker.Button>取消</AreaPicker.Button>
99
+ <AreaPicker.Title>标题</AreaPicker.Title>
100
+ <AreaPicker.Button>确认</AreaPicker.Button>
101
+ </AreaPicker.Toolbar>
102
+ <AreaPicker.Columns children={areaList} />
103
+ </AreaPicker>
104
+ )
105
+ }
106
+ ```
107
+
108
+ ## API
109
+
110
+ ### Props
111
+
112
+ | 参数 | 说明 | 类型 | 默认值 |
113
+ | --------------------------------- | --------------------------------------------------------- | ---------------- | ------- |
114
+ | defaultValue | 默认选中的值 | _string[]_ | - |
115
+ | value | 选中的值 | _string[]_ | - |
116
+ | areaList <br>`v0.1.1-alpha.7` | 省市区数据 | _object_ | - |
117
+ | depth | 显示列数,3-省市区,2-省市,1-省 | _string_ | `3` |
118
+ | title <br>`v0.1.1-alpha.7` | 顶部栏标题 | _ReactNode_ | - |
119
+ | confirmText <br>`v0.1.1-alpha.7` | 确认按钮文字 | _ReactNode_ | `确认` |
120
+ | cancelText <br>`v0.1.1-alpha.7` | 取消按钮文字 | _ReactNode_ | `取消` |
121
+ | loading | 是否显示加载状态 | _boolean_ | `false` |
122
+ | readonly | 是否为只读状态,只读状态下无法切换选项 | _boolean_ | `false` |
123
+ | siblingCount | 可见的选项相邻个数 | _number_ | `3` |
124
+ | optionHeight <br>`v0.1.1-alpha.7` | 选项高度,支持 `px` `vw` `vh` `rem` `rpx` 单位,默认 `px` | _number\|string_ | `44` |
125
+
126
+ ### Events
127
+
128
+ | 事件 | 说明 | 回调参数 |
129
+ | --------- | ------------------ | -------------------------------------------------------------------------- |
130
+ | onConfirm | 点击完成按钮时触发 | _values: string[], options: PickerOptionObject[]_ |
131
+ | onCancel | 点击取消按钮时触发 | _values: string[], options: PickerOptionObject[]_ |
132
+ | onChange | 选项改变时触发 | _values: string[], option: PickerOptionObject, column: PickerOptionObject_ |
@@ -0,0 +1,60 @@
1
+ import { AreaPicker, Toast } from "@fjyueke/bify-core"
2
+ import { PickerOptionObject } from "@fjyueke/bify-core/picker"
3
+ import { areaList } from "@vant/area-data"
4
+ import * as _ from "lodash"
5
+ import Block from "../../../components/block"
6
+ import Page from "../../../components/page"
7
+ import "./index.scss"
8
+
9
+ function toastOptions(options?: PickerOptionObject[]) {
10
+ const labels = _.map(options, ({ label }) => label)
11
+ Toast.open(JSON.stringify(labels))
12
+ }
13
+
14
+ function BasicAreaPicker() {
15
+ return <AreaPicker onConfirm={(_values_, options) => toastOptions(options)} areaList={areaList} />
16
+ }
17
+
18
+ function AreaPickerWithValue() {
19
+ return <AreaPicker defaultValue={["330000", "330300", "330305"]} onConfirm={(_values_, options) => toastOptions(options)} areaList={areaList} />
20
+ }
21
+
22
+ function AreaPickerWithColumns() {
23
+ return (
24
+ <AreaPicker depth={2} onConfirm={(_values_, options) => toastOptions(options)} areaList={areaList} />
25
+ )
26
+ }
27
+
28
+ function ManualAreaPicker() {
29
+ return (
30
+ <AreaPicker onConfirm={(_values_, options) => toastOptions(options)}>
31
+ <AreaPicker.Toolbar>
32
+ <AreaPicker.Button>取消</AreaPicker.Button>
33
+ <AreaPicker.Title>标题</AreaPicker.Title>
34
+ <AreaPicker.Button>确认</AreaPicker.Button>
35
+ </AreaPicker.Toolbar>
36
+ <AreaPicker.Columns children={areaList} />
37
+ </AreaPicker>
38
+ )
39
+ }
40
+
41
+
42
+ export default function AreaPickerDemo() {
43
+ return (
44
+ <Page title="AreaPicker 省市区选择器" className="area-picker-demo">
45
+ <Block variant="card" title="基础用法">
46
+ <BasicAreaPicker />
47
+ </Block>
48
+ <Block variant="card" title="选中省市区">
49
+ <AreaPickerWithValue />
50
+ </Block>
51
+ <Block variant="card" title="配置显示列">
52
+ <AreaPickerWithColumns />
53
+ </Block>
54
+ <Block variant="card" title="手动控制DOM">
55
+ <ManualAreaPicker />
56
+ </Block>
57
+ <Toast id="toast" />
58
+ </Page>
59
+ )
60
+ }
@@ -0,0 +1,19 @@
1
+ ## API
2
+
3
+ ### Avatar Props
4
+
5
+ | 参数 | 说明 | 类型 | 默认值 |
6
+ | --- | --- | --- | --- |
7
+ | src | 传入图片的链接,传入之后嵌套内容不展示 | _string_ | - |
8
+ | alt | 图片不显示时的文本内容 | _string_ | - |
9
+ | shape | 形状,可选值为 `square` `rounded` `circle` | _string_ | `circle` |
10
+ | size | 大小,可选值为 `mini` `small` `medium` `large` | _string_ | `medium` |
11
+
12
+ ### Avatar.Group Props
13
+
14
+ | 参数 | 说明 | 类型 | 默认值 |
15
+ | --- | --- | --- | --- |
16
+ | shape | 形状,可选值为 `square` `rounded` `circle` | _string_ | `circle` |
17
+ | spacing | 间距,可选值为 `small` `medium` `large` | _string_ | `medium` |
18
+ | limit | 显示的最大头像个数 | _number_ | - |
19
+ | total | 头像总数。用于计算额外头像的数量。| _string_ | - |
@@ -0,0 +1,170 @@
1
+ # Avatar 头像
2
+
3
+ ### 介绍
4
+
5
+ 显示用户头像、首字母或备用图标。
6
+
7
+ ### 引入
8
+
9
+ ```ts
10
+ import { Avatar } from "@fjyueke/bify-core"
11
+ ```
12
+
13
+ ## 代码演示
14
+
15
+ ### 基础用法
16
+
17
+ 设置 `style` 可以修改,背景颜色
18
+
19
+ ```tsx
20
+ <Avatar>P</Avatar>
21
+ <Avatar style={{ background: "green" }}>N</Avatar>
22
+ <Avatar style={{ background: "pink" }}>HP</Avatar>
23
+ ```
24
+
25
+ ### 尺寸
26
+
27
+ 设置 `size` 属性后,可以选择四个大小。
28
+
29
+ ```tsx
30
+ <Avatar src="https://joesch.moe/api/v1/random" size="mini" />
31
+ <Avatar src="https://joesch.moe/api/v1/random" size="small" />
32
+ <Avatar src="https://joesch.moe/api/v1/random" size="medium" />
33
+ <Avatar src="https://joesch.moe/api/v1/random" size="large" />
34
+ ```
35
+
36
+ ### 形状
37
+
38
+ 通过 `variant` 属性来设置形状。
39
+
40
+ ```tsx
41
+ <Avatar src="https://joesch.moe/api/v1/random" />
42
+ <Avatar src="https://joesch.moe/api/v1/random" shape="square" />
43
+ <Avatar src="https://joesch.moe/api/v1/random" shape="rounded" />
44
+ ```
45
+
46
+ ### 群组
47
+
48
+ 最多显示5个。
49
+
50
+ ```tsx
51
+ <Avatar.Group total={24}>
52
+ <Avatar src="https://joesch.moe/api/v1/random" />
53
+ <Avatar src="https://joesch.moe/api/v1/random" />
54
+ <Avatar src="https://joesch.moe/api/v1/random" />
55
+ <Avatar src="https://joesch.moe/api/v1/random" />
56
+ <Avatar src="https://joesch.moe/api/v1/random" />
57
+ <Avatar src="https://joesch.moe/api/v1/random" />
58
+ </Avatar.Group>
59
+ ```
60
+
61
+ ### 最大
62
+
63
+ 通过 `max` 属性最大可展示数量,最多显示5个。
64
+
65
+ ```tsx
66
+ <Avatar.Group max={3}>
67
+ <Avatar src="https://joesch.moe/api/v1/random" />
68
+ <Avatar src="https://joesch.moe/api/v1/random" />
69
+ <Avatar src="https://joesch.moe/api/v1/random" />
70
+ <Avatar src="https://joesch.moe/api/v1/random" />
71
+ <Avatar src="https://joesch.moe/api/v1/random" />
72
+ <Avatar src="https://joesch.moe/api/v1/random" />
73
+ </Avatar.Group>
74
+ ```
75
+
76
+ ### 图标
77
+
78
+ ```tsx
79
+ <Avatar style={{ background: "red" }}>
80
+ <Cross />
81
+ </Avatar>
82
+ <Avatar style={{ background: "pink" }}>
83
+ <LocationOutlined />
84
+ </Avatar>
85
+ <Avatar style={{ background: "green" }}>
86
+ <SettingOutlined />
87
+ </Avatar>
88
+ ```
89
+
90
+ ### 徽章
91
+
92
+ ```tsx
93
+ <Badge className="avatar-dot" dot position="bottom-right">
94
+ <Avatar src="https://joesch.moe/api/v1/random" />
95
+ </Badge>
96
+ <Badge
97
+ className="avatar-avatar"
98
+ content={<Avatar src="https://joesch.moe/api/v1/random" />}
99
+ position="bottom-right"
100
+ >
101
+ <Avatar src="https://joesch.moe/api/v1/random" />
102
+ </Badge>
103
+ ```
104
+
105
+ ```scss
106
+ .avatar-dot {
107
+ bottom: 2px * 2;
108
+ right: 6px * 2,
109
+ }
110
+
111
+ .avatar-avatar {
112
+ --badge-background-color: transparent;
113
+ --badge-padding: 0;
114
+ --badge-size: 12px * 2;
115
+ --avatar-size: var(--badge-size);
116
+ bottom: 2px * 2;
117
+ right: 6px * 2,
118
+ }
119
+ ```
120
+
121
+ ## API
122
+
123
+ ### Avatar Props
124
+
125
+ | 参数 | 说明 | 类型 | 默认值 |
126
+ | --- | --- | --- | --- |
127
+ | src | 传入图片的链接,传入之后嵌套内容不展示 | _string_ | - |
128
+ | alt | 图片不显示时的文本内容 | _string_ | - |
129
+ | shape | 形状,可选值为 `square` `rounded` `circle` | _string_ | `circle` |
130
+ | size | 大小,可选值为 `mini` `small` `medium` `large` | _string_ | `medium` |
131
+
132
+ ### Avatar.Group Props
133
+
134
+ | 参数 | 说明 | 类型 | 默认值 |
135
+ | --- | --- | --- | --- |
136
+ | shape | 形状,可选值为 `square` `rounded` `circle` | _string_ | `circle` |
137
+ | spacing | 间距,可选值为 `small` `medium` `large` | _string_ | `medium` |
138
+ | limit | 显示的最大头像个数 | _number_ | - |
139
+ | total | 头像总数。用于计算额外头像的数量。| _string_ | - |
140
+
141
+ ## 主题定制
142
+
143
+ ### 样式变量
144
+
145
+ 组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 [ConfigProvider](/components/config-provider/) 组件。
146
+
147
+ | 名称 | 默认值 | 描述 |
148
+ |-------------------------------|------------------------------------------------|-----|
149
+ | --avatar-color | _var(--white)_ | - |
150
+ | --avatar-background-color | _var(--gray-5)_ | - |
151
+ | --avatar-border-color | _var(--white)_ | - |
152
+ | --avatar-border-width | _2PX_ | - |
153
+ | --avatar-font-weight | _var(--font-weight-bold)_ | - |
154
+ | --avatar-font-family | _Roboto, Helvetica, Arial, sans-serif_ | - |
155
+ | --avatar-font-size-mini | _var(--avatar-font-size, var(--font-size-xs))_ | - |
156
+ | --avatar-font-size-small | _var(--avatar-font-size, var(--font-size-sm))_ | - |
157
+ | --avatar-font-size-medium | _var(--avatar-font-size, var(--font-size-md))_ | - |
158
+ | --avatar-font-size-large | _var(--avatar-font-size, var(--font-size-lg))_ | - |
159
+ | --avatar-border-radius-mini | _var(--avatar-border-radius, 2px * $hd)_ | - |
160
+ | --avatar-border-radius-small | _var(--avatar-border-radius, 4px * $hd)_ | - |
161
+ | --avatar-border-radius-medium | _var(--avatar-border-radius, 5px * $hd)_ | - |
162
+ | --avatar-border-radius-large | _var(--avatar-border-radius, 6px * $hd)_ | - |
163
+ | --avatar-size-mini | _var(--avatar-size, 16px * $hd)_ | - |
164
+ | --avatar-size-small | _var(--avatar-size, 26px * $hd)_ | - |
165
+ | --avatar-size-medium | _var(--avatar-size, 38px * $hd)_ | - |
166
+ | --avatar-size-large | _var(--avatar-size, 56px * $hd)_ | - |
167
+ | --avatar-spacing-mini | _var(--avatar-spacing, var(--padding-xs))_ | - |
168
+ | --avatar-spacing-small | _var(--avatar-spacing, var(--padding-sm))_ | - |
169
+ | --avatar-spacing-medium | _var(--avatar-spacing, var(--padding-md))_ | - |
170
+ | --avatar-spacing-large | _var(--avatar-spacing, var(--padding-lg))_ | - |
@@ -0,0 +1,76 @@
1
+ import { Avatar, Badge } from "@fjyueke/bify-core"
2
+ import { Cross, LocationOutlined, SettingOutlined } from "@fjyueke/bify-icons"
3
+ import * as _ from "lodash"
4
+ import Block from "../../../components/block"
5
+ import Page from "../../../components/page"
6
+ import "./index.scss"
7
+
8
+ function randomAvatar() {
9
+ return `https://joesch.moe/api/v1/random?t=${_.random(Number.MAX_VALUE)}`
10
+ }
11
+
12
+ export default function AvatarDemo() {
13
+ return (
14
+ <Page title="Avatar 头像" className="avatar-demo">
15
+ <Block title="基础用法" className="avatar-block">
16
+ <Avatar>P</Avatar>
17
+ <Avatar style={{ background: "green" }}>N</Avatar>
18
+ <Avatar style={{ background: "pink" }}>HP</Avatar>
19
+ </Block>
20
+ <Block title="尺寸" className="avatar-block">
21
+ <Avatar src={randomAvatar()} size="mini" />
22
+ <Avatar src={randomAvatar()} size="small" />
23
+ <Avatar src={randomAvatar()} size="medium" />
24
+ <Avatar src={randomAvatar()} size="large" />
25
+ </Block>
26
+ <Block title="形状" className="avatar-block">
27
+ <Avatar src={randomAvatar()} />
28
+ <Avatar src={randomAvatar()} shape="square" />
29
+ <Avatar src={randomAvatar()} shape="rounded" />
30
+ </Block>
31
+ <Block title="群组" className="avatar-block">
32
+ <Avatar.Group limit={5}>
33
+ <Avatar src={randomAvatar()} />
34
+ <Avatar src={randomAvatar()} />
35
+ <Avatar src={randomAvatar()} />
36
+ <Avatar src={randomAvatar()} />
37
+ <Avatar src={randomAvatar()} />
38
+ <Avatar src={randomAvatar()} />
39
+ </Avatar.Group>
40
+ </Block>
41
+ <Block title="最大" className="avatar-block">
42
+ <Avatar.Group limit={3}>
43
+ <Avatar src={randomAvatar()} />
44
+ <Avatar src={randomAvatar()} />
45
+ <Avatar src={randomAvatar()} />
46
+ <Avatar src={randomAvatar()} />
47
+ <Avatar src={randomAvatar()} />
48
+ <Avatar src={randomAvatar()} />
49
+ </Avatar.Group>
50
+ </Block>
51
+ <Block title="图标" className="avatar-block">
52
+ <Avatar style={{ background: "red" }}>
53
+ <Cross />
54
+ </Avatar>
55
+ <Avatar style={{ background: "pink" }}>
56
+ <LocationOutlined />
57
+ </Avatar>
58
+ <Avatar style={{ background: "green" }}>
59
+ <SettingOutlined />
60
+ </Avatar>
61
+ </Block>
62
+ <Block title="徽章用法" className="avatar-block">
63
+ <Badge className="avatar-dot" dot position="bottom-right">
64
+ <Avatar src={randomAvatar()} />
65
+ </Badge>
66
+ <Badge
67
+ className="avatar-avatar"
68
+ content={<Avatar src={randomAvatar()} />}
69
+ position="bottom-right"
70
+ >
71
+ <Avatar src={randomAvatar()} />
72
+ </Badge>
73
+ </Block>
74
+ </Page>
75
+ )
76
+ }
@@ -0,0 +1,21 @@
1
+ ## API
2
+
3
+ ### Props
4
+
5
+ | 参数 | 说明 | 类型 | 默认值 |
6
+ | --------- | ----------------------------------- | --------- | -------- | ---- |
7
+ | right | 距离页面右侧的距离,默认单位为 `px` | _number_ | _string_ | `30` |
8
+ | bottom | 距离页面底部的距离,默认单位为 `px` | _number_ | _string_ | `40` |
9
+ | offset | 滚动高度达到此参数值时才显示组件 | _number_ | `200` |
10
+ | immediate | 是否瞬间滚动到顶部 | _boolean_ | `false` |
11
+ | zIndex | 设置组件的 z-index 层级 | _number_ | `100` |
12
+
13
+ ### Event
14
+
15
+ | 事件 | 说明 | 回调参数 |
16
+ | ------- | -------------- | ------------------- |
17
+ | onClick | 点击组件时触发 | _event:ITouchEvent_ |
18
+
19
+ ### 注意
20
+
21
+ 非 `H5` 项目需要显式调用 `onClick`