@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,105 @@
1
+ # Progress 进度条
2
+
3
+ ### 介绍
4
+
5
+ 用于展示操作的当前进度。
6
+
7
+ ### 引入
8
+
9
+ ```tsx
10
+ import { Progress } from "@fjyueke/bify-core"
11
+ ```
12
+
13
+ ## 代码演示
14
+
15
+ ### 基础用法
16
+
17
+ 进度条默认为蓝色,使用 `percentage` 属性来设置当前进度。
18
+
19
+ ```tsx
20
+ <Progress percent={50} />
21
+ ```
22
+
23
+ ### 线条粗细
24
+
25
+ 通过 `stroke-width` 可以设置进度条的粗细。
26
+
27
+ ```tsx
28
+ <Progress percent={50} strokeWidth={8} />
29
+ ```
30
+
31
+ ### 置灰
32
+
33
+ 设置 `inactive` 属性后进度条将置灰。
34
+
35
+ ```tsx
36
+ <Progress percent={50} inactive />
37
+ ```
38
+
39
+ ### 样式定制
40
+
41
+ 可以使用 `pivot-text` 属性自定义文字,`color` 属性自定义进度条颜色。
42
+
43
+ ```tsx
44
+ <Progress className="custom-color1" percent={25} />
45
+ <Progress className="custom-color2" percent={50} />
46
+ <Progress className="custom-color3" percent={75} />
47
+ ```
48
+
49
+ ```scss
50
+ .custom-color1 {
51
+ &:not(.taroify-progress--inactive) {
52
+ .taroify-progress__portion {
53
+ background: #f2826a;
54
+ }
55
+ }
56
+ }
57
+
58
+ .custom-color2 {
59
+ &:not(.taroify-progress--inactive) {
60
+ .taroify-progress__portion {
61
+ background: #ee0a24;
62
+ }
63
+ }
64
+ }
65
+
66
+ .custom-color3 {
67
+ &:not(.taroify-progress--inactive) {
68
+ .taroify-progress__portion {
69
+ background: linear-gradient(to right, #be99ff, #7232dd) _ | - |;
70
+ }
71
+ }
72
+ }
73
+ ```
74
+
75
+ ## API
76
+
77
+ ### Props
78
+
79
+ | 参数 | 说明 | 类型 | 默认值 |
80
+ | ----------- | -------------------------- | ---------------------- | --------- |
81
+ | percent | 进度百分比 | _number \| string_ | `0` |
82
+ | strokeWidth | 进度条粗细,默认单位为`px` | _number \| string_ | `4px` |
83
+ | color | 进度条颜色 | _string_ | `primary` |
84
+ | inactive | 是否置灰 | _boolean_ | `false` |
85
+ | label | 进度文字 | _boolean \| ReactNode_ | `true` |
86
+
87
+ ## 主题定制
88
+
89
+ ### 样式变量
90
+
91
+ 组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 [ConfigProvider](/components/config-provider/) 组件。
92
+
93
+ | 名称 | 默认值 | 描述 |
94
+ | ------------------------------------------- | ------------------------ | ---- |
95
+ | --progress-height | _14px \* $hd_ | - |
96
+ | --progress-border-radius | _var(--progress-height)_ | - |
97
+ | --progress-background-color | _var(--gray-3)_ | - |
98
+ | --progress-portion-color | _var(--white)_ | - |
99
+ | --progress-portion-font-size | _var(--font-size-xs)_ | - |
100
+ | --progress-inactive-background-color | _#cacaca_ | - |
101
+ | --progress-portion-primary-background-color | _var(--primary-color)_ | - |
102
+ | --progress-portion-info-background-color | _var(--info-color)_ | - |
103
+ | --progress-portion-success-background-color | _var(--success-color)_ | - |
104
+ | --progress-portion-warning-background-color | _var(--warning-color)_ | - |
105
+ | --progress-portion-danger-background-color | _var(--danger-color)_ | - |
@@ -0,0 +1,58 @@
1
+ import { Progress } from "@fjyueke/bify-core"
2
+ import Block from "../../../components/block"
3
+ import Page from "../../../components/page"
4
+ import "./index.scss"
5
+
6
+ function BasicProgress() {
7
+ return (
8
+ <Block title="基础用法">
9
+ <Progress percent={50} />
10
+ </Block>
11
+ )
12
+ }
13
+
14
+ function StripedProgress() {
15
+ return (
16
+ <Block title="条纹线条">
17
+ <Progress percent={50} striped />
18
+ </Block>
19
+ )
20
+ }
21
+
22
+ function AnimatedProgress() {
23
+ return (
24
+ <Block title="动画条纹">
25
+ <Progress percent={50} striped animated />
26
+ </Block>
27
+ )
28
+ }
29
+
30
+ function InactiveProgress() {
31
+ return (
32
+ <Block title="置灰">
33
+ <Progress percent={50} inactive />
34
+ </Block>
35
+ )
36
+ }
37
+
38
+ function ProgressWithCustomColors() {
39
+ return (
40
+ <Block title="样式定制">
41
+ <Progress className="custom-color1" percent={25} />
42
+ <Progress className="custom-color2" percent={50} />
43
+ <Progress className="custom-color3" percent={75} />
44
+ </Block>
45
+ )
46
+ }
47
+
48
+ export default function ProgressDemo() {
49
+ return (
50
+ <Page title="Progress 进度条" className="progress-demo">
51
+ <BasicProgress />
52
+ <StripedProgress />
53
+ <AnimatedProgress />
54
+ <InactiveProgress />
55
+ <ProgressWithCustomColors />
56
+ </Page>
57
+ )
58
+ }
@@ -0,0 +1,18 @@
1
+ ## API
2
+
3
+ ### Props
4
+
5
+ | 参数 | 说明 | 类型 | 默认值 |
6
+ | --- | --- | --- | --- |
7
+ | loading | 是否处于加载中状态 | _boolean_ | - |
8
+ | duration | 动画时长 | _number \| string_ | `300` |
9
+ | headHeight | 顶部内容高度 | _number \| string_ | `50` |
10
+ | reachTop | 是否处于顶部下拉 | _boolean_ | `true` |
11
+ | pullDistance | 触发下拉刷新的距离 | _number \| string_ | 与 `headHeight` 一致 |
12
+ | disabled | 是否禁用下拉刷新 | _boolean_ | `false` |
13
+
14
+ ### Events
15
+
16
+ | 事件名 | 说明 | 回调参数 |
17
+ | ------- | -------------- | -------- |
18
+ | onRefresh | 下拉刷新时触发 | - |
@@ -0,0 +1,198 @@
1
+ # PullRefresh 下拉刷新
2
+
3
+ ### 介绍
4
+
5
+ 用于提供下拉刷新的交互操作。
6
+
7
+ ### 引入
8
+
9
+ ```tsx
10
+ import { PullRefresh } from "@fjyueke/bify-core"
11
+ ```
12
+
13
+ ## 代码演示
14
+
15
+ ### 基础用法
16
+
17
+ 下拉刷新时会触发 `onRefresh` 事件,在事件的回调函数中可以进行同步或异步操作,操作完成后将 `loading` 设置为 `false`,表示加载完成。
18
+
19
+ ```tsx
20
+ function BasicPullRefresh() {
21
+ const [loading, setLoading] = useState(false)
22
+ const [counter, setCounter] = useState(0)
23
+ const [reachTop, setReachTop] = useState(true)
24
+
25
+ usePageScroll(({ scrollTop }) => setReachTop(scrollTop === 0))
26
+
27
+ return (
28
+ <PullRefresh
29
+ loading={loading}
30
+ reachTop={reachTop}
31
+ onRefresh={() => {
32
+ setLoading(true)
33
+ setTimeout(() => {
34
+ setCounter(counter + 1)
35
+ setLoading(false)
36
+ }, 1000)
37
+ }}
38
+ >
39
+ <View className="pull-text">{counter ? "刷新次数:" + counter : "下拉试试"}</View>
40
+ </PullRefresh>
41
+ )
42
+ }
43
+ ```
44
+
45
+ > Tips:在 PullRefresh 组件内部采用 Selector API 获得父滚动元素的 scrollTop 值会带来下拉卡顿的性能问题。因此需要在 PullRefresh 组件外部判断 scrollTop 值,在页面中使用 usePageScroll() 钩子获得 scrollTop 值,在 ScrollView 组件内监听 onScroll 事件获得 scrollTop 值。
46
+
47
+ ### 完成提示
48
+
49
+ 通过 `PullRefresh.Completed` 可以设置刷新成功后的顶部提示文案。
50
+
51
+ ```tsx
52
+ function CompletedPullRefresh() {
53
+ const [loading, setLoading] = useState(false)
54
+ const [counter, setCounter] = useState(0)
55
+ const [reachTop, setReachTop] = useState(true)
56
+
57
+ usePageScroll(({ scrollTop }) => setReachTop(scrollTop === 0))
58
+
59
+ return (
60
+ <PullRefresh
61
+ loading={loading}
62
+ reachTop={reachTop}
63
+ onRefresh={() => {
64
+ setLoading(true)
65
+ setTimeout(() => {
66
+ setLoading(false)
67
+ setCounter(counter + 1)
68
+ }, 1000)
69
+ }}
70
+ >
71
+ <PullRefresh.Completed>刷新成功</PullRefresh.Completed>
72
+ <View className="pull-text">{counter ? "刷新次数:" + counter : "下拉试试"}</View>
73
+ </PullRefresh>
74
+ )
75
+ }
76
+ ```
77
+
78
+ ### 自定义提示
79
+
80
+ 通过子组件可以自定义下拉刷新过程中的提示内容。
81
+
82
+ ```tsx
83
+ function CustomPullRefresh() {
84
+ const [loading, setLoading] = useState(false)
85
+ const [counter, setCounter] = useState(0)
86
+ const [reachTop, setReachTop] = useState(true)
87
+
88
+ usePageScroll(({ scrollTop }) => setReachTop(scrollTop === 0))
89
+
90
+ return (
91
+ <PullRefresh
92
+ loading={loading}
93
+ headHeight={80}
94
+ reachTop={reachTop}
95
+ onRefresh={() => {
96
+ setLoading(true)
97
+ setTimeout(() => {
98
+ setCounter(counter + 1)
99
+ setLoading(false)
100
+ }, 1000)
101
+ }}
102
+ >
103
+ <PullRefresh.Pulling>
104
+ {({ distance = 0 }) => (
105
+ <Image
106
+ className="doge"
107
+ style={{ transform: `scale(${distance / 80})` }}
108
+ src="https://img.yzcdn.cn/vant/doge.png"
109
+ />
110
+ )}
111
+ </PullRefresh.Pulling>
112
+ <PullRefresh.Loosing>
113
+ <Image className="doge" src="https://img.yzcdn.cn/vant/doge.png" />
114
+ </PullRefresh.Loosing>
115
+ <PullRefresh.Loading>
116
+ <Image className="doge" src="https://img.yzcdn.cn/vant/doge-fire.jpg" />
117
+ </PullRefresh.Loading>
118
+ <View className="pull-text">{counter ? "刷新次数:" + counter : "下拉试试"}</View>
119
+ </PullRefresh>
120
+ )
121
+ }
122
+ ```
123
+
124
+ ```scss
125
+ .doge {
126
+ width: 140px * 2;
127
+ height: 72px * 2;
128
+ margin-top: 8px * 2;
129
+ border-radius: 4px * 2;
130
+ }
131
+ ```
132
+
133
+ ### 搭配 ScrollView
134
+
135
+ 可搭配 ScrollView 组件
136
+
137
+ ```tsx
138
+ function BasicPullRefresh() {
139
+ const [loading, setLoading] = useState(false)
140
+ const [counter, setCounter] = useState(0)
141
+ const [reachTop, setReachTop] = useState(true)
142
+
143
+ usePageScroll(({ scrollTop }) => setReachTop(scrollTop === 0))
144
+
145
+ return (
146
+ <ScrollView scrollY>
147
+ <PullRefresh
148
+ loading={loading}
149
+ reachTop={reachTop}
150
+ onRefresh={() => {
151
+ setLoading(true)
152
+ setTimeout(() => {
153
+ setCounter(counter + 1)
154
+ setLoading(false)
155
+ }, 1000)
156
+ }}
157
+ >
158
+ <View className="pull-text">{counter ? "刷新次数:" + counter : "下拉试试"}</View>
159
+ </PullRefresh>
160
+ </ScrollView>
161
+ )
162
+ }
163
+ ```
164
+
165
+ ## API
166
+
167
+ ### Props
168
+
169
+ | 参数 | 说明 | 类型 | 默认值 |
170
+ | --- | --- | --- | --- |
171
+ | loading | 是否处于加载中状态 | _boolean_ | - |
172
+ | duration | 动画时长 | _number \| string_ | `300` |
173
+ | headHeight | 顶部内容高度 | _number \| string_ | `50` |
174
+ | reachTop | 是否处于顶部下拉 | _boolean_ | `true` |
175
+ | pullDistance | 触发下拉刷新的距离 | _number \| string_ | 与 `headHeight` 一致 |
176
+ | disabled | 是否禁用下拉刷新 | _boolean_ | `false` |
177
+
178
+ ### Events
179
+
180
+ | 事件名 | 说明 | 回调参数 |
181
+ | ------- | -------------- | -------- |
182
+ | onRefresh | 下拉刷新时触发 | - |
183
+
184
+ ## 主题定制
185
+
186
+ ### 样式变量
187
+
188
+ 组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 [ConfigProvider](/components/config-provider/) 组件。
189
+
190
+ | 名称 | 默认值 | 描述 |
191
+ |------------------------------------|-----------------------------------------|-----|
192
+ | --pull-refresh-head-height | _50px * $hd_ | - |
193
+ | --pull-refresh-head-line-height | _var(--pull-refresh-head-height)_ | - |
194
+ | --pull-refresh-head-font-size | _var(--font-size-md)_ | - |
195
+ | --pull-refresh-head-color | _var(--gray-6)_ | - |
196
+ | --pull-refresh-loading-icon-size | _16px * $hd_ | - |
197
+ | --pull-refresh-loading-icon-width | _var(--pull-refresh-loading-icon-size)_ | - |
198
+ | --pull-refresh-loading-icon-height | _var(--pull-refresh-loading-icon-size)_ | - |
@@ -0,0 +1,153 @@
1
+ import { Image, PullRefresh, Tabs } from "@fjyueke/bify-core"
2
+ import { ScrollView, View } from "@tarojs/components"
3
+ import { usePageScroll } from "@tarojs/taro"
4
+ import { useState } from "react"
5
+ import CustomWrapper from "../../../components/custom-wrapper"
6
+ import Page from "../../../components/page"
7
+ import "./index.scss"
8
+
9
+ function BasicPullRefresh() {
10
+ const [loading, setLoading] = useState(false)
11
+ const [counter, setCounter] = useState(0)
12
+ const [reachTop, setReachTop] = useState(true)
13
+
14
+ usePageScroll(({ scrollTop }) => setReachTop(scrollTop === 0))
15
+
16
+ return (
17
+ <PullRefresh
18
+ loading={loading}
19
+ reachTop={reachTop}
20
+ onRefresh={() => {
21
+ setLoading(true)
22
+ setTimeout(() => {
23
+ setCounter(counter + 1)
24
+ setLoading(false)
25
+ }, 1000)
26
+ }}
27
+ >
28
+ <View className="pull-text">{counter ? "刷新次数:" + counter : "下拉试试"}</View>
29
+ </PullRefresh>
30
+ )
31
+ }
32
+
33
+ function CompletedPullRefresh() {
34
+ const [loading, setLoading] = useState(false)
35
+ const [counter, setCounter] = useState(0)
36
+ const [reachTop, setReachTop] = useState(true)
37
+
38
+ usePageScroll(({ scrollTop }) => setReachTop(scrollTop === 0))
39
+
40
+ return (
41
+ <PullRefresh
42
+ loading={loading}
43
+ reachTop={reachTop}
44
+ onRefresh={() => {
45
+ setLoading(true)
46
+ setTimeout(() => {
47
+ setLoading(false)
48
+ setCounter(counter + 1)
49
+ }, 1000)
50
+ }}
51
+ >
52
+ <PullRefresh.Completed>刷新成功</PullRefresh.Completed>
53
+ <View className="pull-text">{counter ? "刷新次数:" + counter : "下拉试试"}</View>
54
+ </PullRefresh>
55
+ )
56
+ }
57
+
58
+ function CustomPullRefresh() {
59
+ const [loading, setLoading] = useState(false)
60
+ const [counter, setCounter] = useState(0)
61
+ const [reachTop, setReachTop] = useState(true)
62
+
63
+ usePageScroll(({ scrollTop }) => setReachTop(scrollTop === 0))
64
+
65
+ return (
66
+ <PullRefresh
67
+ loading={loading}
68
+ headHeight={80}
69
+ reachTop={reachTop}
70
+ onRefresh={() => {
71
+ setLoading(true)
72
+ setTimeout(() => {
73
+ setCounter(counter + 1)
74
+ setLoading(false)
75
+ }, 1000)
76
+ }}
77
+ >
78
+ <PullRefresh.Pulling>
79
+ {({ distance = 0 }) => (
80
+ <Image
81
+ className="doge"
82
+ style={{ transform: `scale(${distance / 80})` }}
83
+ src="https://img.yzcdn.cn/vant/doge.png"
84
+ />
85
+ )}
86
+ </PullRefresh.Pulling>
87
+ <PullRefresh.Loosing>
88
+ <Image className="doge" src="https://img.yzcdn.cn/vant/doge.png" />
89
+ </PullRefresh.Loosing>
90
+ <PullRefresh.Loading>
91
+ <Image className="doge" src="https://img.yzcdn.cn/vant/doge-fire.jpg" />
92
+ </PullRefresh.Loading>
93
+ <View className="pull-text">{counter ? "刷新次数:" + counter : "下拉试试"}</View>
94
+ </PullRefresh>
95
+ )
96
+ }
97
+
98
+
99
+ function ScrollViewPullRefresh() {
100
+ const [loading, setLoading] = useState(false)
101
+ const [counter, setCounter] = useState(0)
102
+ const [reachTop, setReachTop] = useState(true)
103
+
104
+ usePageScroll(({ scrollTop }) => setReachTop(scrollTop === 0))
105
+
106
+ return (
107
+ <ScrollView scrollY>
108
+ <PullRefresh
109
+ loading={loading}
110
+ reachTop={reachTop}
111
+ onRefresh={() => {
112
+ setLoading(true)
113
+ setTimeout(() => {
114
+ setCounter(counter + 1)
115
+ setLoading(false)
116
+ }, 1000)
117
+ }}
118
+ >
119
+ <View className="pull-text">{counter ? "刷新次数:" + counter : "下拉试试"}</View>
120
+ </PullRefresh>
121
+ </ScrollView>
122
+ )
123
+ }
124
+
125
+ export default function PullRefreshDemo() {
126
+ const [tab, setTab] = useState(0)
127
+ return (
128
+ <Page title="PullRefresh 下拉刷新" className="pull-refresh-demo">
129
+ <Tabs value={tab} onChange={setTab}>
130
+ <Tabs.TabPane title="基本用法">
131
+ <CustomWrapper>
132
+ <BasicPullRefresh />
133
+ </CustomWrapper>
134
+ </Tabs.TabPane>
135
+ <Tabs.TabPane title="完成提示">
136
+ <CustomWrapper>
137
+ <CompletedPullRefresh />
138
+ </CustomWrapper>
139
+ </Tabs.TabPane>
140
+ <Tabs.TabPane title="自定义提示">
141
+ <CustomWrapper>
142
+ <CustomPullRefresh />
143
+ </CustomWrapper>
144
+ </Tabs.TabPane>
145
+ <Tabs.TabPane title="ScrollView">
146
+ <CustomWrapper>
147
+ <ScrollViewPullRefresh />
148
+ </CustomWrapper>
149
+ </Tabs.TabPane>
150
+ </Tabs>
151
+ </Page>
152
+ )
153
+ }
@@ -0,0 +1,26 @@
1
+ ## API
2
+
3
+ ### Radio Props
4
+
5
+ | 参数 | 说明 | 类型 | 默认值 |
6
+ | -------------- | ------------------------- | ------------------ | --------- |
7
+ | name | 标识符 | _any_ | - |
8
+ | shape | 形状,可选值为 `square` | _string_ | `round` |
9
+ | disabled | 是否为禁用状态 | _boolean_ | `false` |
10
+ | size | 图标大小,默认单位为`px` | _number \| string_ | `20px` |
11
+
12
+ ### Radio.Group Props
13
+
14
+ | 参数 | 说明 | 类型 | 默认值 |
15
+ | --- | --- | --- | --- |
16
+ | defaultValue | 默认选中项的标识符 | _any_ | - |
17
+ | value | 当前选中项的标识符 | _any_ | - |
18
+ | disabled | 是否禁用所有单选框 | _boolean_ | `false` |
19
+ | direction | 排列方向,可选值为`horizontal` | _string_ | `vertical` |
20
+ | size | 所有单选框的图标大小,默认单位为`px` | _number \| string_ | `20px` |
21
+
22
+ ### Radio.Group Events
23
+
24
+ | 事件名 | 说明 | 回调参数 |
25
+ | ------ | ------------------------ | -------------- |
26
+ | onChange | 当绑定值变化时触发的事件 | _name: string_ |