@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,16 @@
1
+ ## API
2
+
3
+ ### Props
4
+
5
+ | 参数 | 说明 | 类型 | 默认值 |
6
+ | --- | --- | --- | --- |
7
+ | position | 吸附位置,可选值为 `bottom` | _string_ | `top` |
8
+ | offsetTop | 吸顶时与顶部的距离,支持 `px` `vw` `vh` `rem` 单位,默认 `px` | _number \| string_ | `0` |
9
+ | offsetBottom | 吸底时与底部的距离,支持 `px` `vw` `vh` `rem` 单位,默认 `px` | _number \| string_ | `0` |
10
+ | container | 容器对应的 HTML 节点 | _Element_ | - |
11
+
12
+ ### Events
13
+
14
+ | 事件名 | 说明 | 回调参数 |
15
+ | --- | --- | --- |
16
+ | onChange | 当吸顶状态改变时触发 | _fixed: boolean_ |
@@ -0,0 +1,87 @@
1
+ # Sticky 粘性布局
2
+
3
+ ### 介绍
4
+
5
+ Sticky 组件与 CSS 中 `position: sticky` 属性实现的效果一致,当组件在屏幕范围内时,会按照正常的布局排列,当组件滚出屏幕范围时,始终会固定在屏幕顶部。
6
+
7
+ ### 引入
8
+
9
+ ```tsx
10
+ import { Sticky } from "@fjyueke/bify-core"
11
+ ```
12
+
13
+ ## 代码演示
14
+
15
+ ### 基础用法
16
+
17
+ 将内容包裹在 `Sticky` 组件内即可。
18
+
19
+ ```tsx
20
+ <Sticky>
21
+ <Button color="primary">吸底距离</Button>
22
+ </Sticky>
23
+ ```
24
+
25
+ ### 吸顶距离
26
+
27
+ 通过 `offsetTop` 属性可以设置组件在吸顶时与顶部的距离。
28
+
29
+ ```tsx
30
+ <Sticky offsetTop={100}>
31
+ <Button color="primary">吸顶距离</Button>
32
+ </Sticky>
33
+ ```
34
+
35
+ ### 指定容器
36
+
37
+ 通过 `container` 属性可以指定组件的容器,页面滚动时,组件会始终保持在容器范围内,当组件即将超出容器底部时,会固定在容器的底部。
38
+
39
+ ```tsx
40
+ function StickyWithContainer() {
41
+ const container = useRef()
42
+ return (
43
+ <View ref={container}>
44
+ <Sticky container={container}>
45
+ <Button color="warning">指定容器</Button>
46
+ </Sticky>
47
+ </View>
48
+ )
49
+ }
50
+ ```
51
+
52
+ ### 吸底距离
53
+
54
+ 将 `position` 设置为 `bottom` 可以让组件吸附在底部。通过 `offsetBottom` 属性可以设置组件在吸底时与底部的距离。
55
+
56
+ ```tsx
57
+ <Sticky position="bottom" offsetBottom={50}>
58
+ <Button color="primary">吸底距离</Button>
59
+ </Sticky>
60
+ ```
61
+
62
+ ## API
63
+
64
+ ### Props
65
+
66
+ | 参数 | 说明 | 类型 | 默认值 |
67
+ | --- | --- | --- | --- |
68
+ | position | 吸附位置,可选值为 `bottom` | _string_ | `top` |
69
+ | offsetTop | 吸顶时与顶部的距离,支持 `px` `vw` `vh` `rem` 单位,默认 `px` | _number \| string_ | `0` |
70
+ | offsetBottom | 吸底时与底部的距离,支持 `px` `vw` `vh` `rem` 单位,默认 `px` | _number \| string_ | `0` |
71
+ | container | 容器对应的 HTML 节点 | _Element_ | - |
72
+
73
+ ### Events
74
+
75
+ | 事件名 | 说明 | 回调参数 |
76
+ | --- | --- | --- |
77
+ | onChange | 当吸顶状态改变时触发 | _fixed: boolean_ |
78
+
79
+ ## 主题定制
80
+
81
+ ### 样式变量
82
+
83
+ 组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 [ConfigProvider](/components/config-provider/) 组件。
84
+
85
+ | 名称 | 默认值 | 描述 |
86
+ |------------------|------|-----|
87
+ | --sticky-z-index | _99_ | - |
@@ -0,0 +1,62 @@
1
+ import { Button, Sticky } from "@fjyueke/bify-core"
2
+ import { View } from "@tarojs/components"
3
+ import { useRef } from "react"
4
+ import Block from "../../../components/block"
5
+ import Page from "../../../components/page"
6
+ import "./index.scss"
7
+
8
+ function BasicSticky() {
9
+ return (
10
+ <Block title="基础用法">
11
+ <Sticky>
12
+ <Button color="primary">基础用法</Button>
13
+ </Sticky>
14
+ </Block>
15
+ )
16
+ }
17
+
18
+ function OffsetSticky() {
19
+ return (
20
+ <Block title="吸顶距离" className="sticky-demo__offset-sticky">
21
+ <Sticky offsetTop={50}>
22
+ <Button color="primary">吸顶距离</Button>
23
+ </Sticky>
24
+ </Block>
25
+ )
26
+ }
27
+
28
+ function StickyWithContainer() {
29
+ const container = useRef()
30
+ return (
31
+ <Block title="指定容器">
32
+ <View className="sticky-demo__container-sticky" ref={container}>
33
+ <Sticky container={container}>
34
+ <Button color="warning">指定容器</Button>
35
+ </Sticky>
36
+ </View>
37
+ </Block>
38
+ )
39
+ }
40
+
41
+ function BottomSticky() {
42
+ return (
43
+ <Block title="吸底距离" className="sticky-demo__bottom-sticky">
44
+ <View className="sticky-demo__bottom-sticky__padding" />
45
+ <Sticky position="bottom" offsetBottom={50}>
46
+ <Button color="primary">吸底距离</Button>
47
+ </Sticky>
48
+ <View className="sticky-demo__bottom-sticky__padding" />
49
+ </Block>
50
+ )
51
+ }
52
+
53
+ export default function StickyDemo() {
54
+ return (
55
+ <Page title="Sticky 粘性布局" className="sticky-demo">
56
+ <BasicSticky />
57
+ <OffsetSticky />
58
+ <StickyWithContainer />
59
+ <BottomSticky />
60
+ </Page>
61
+ )
62
+ }
@@ -0,0 +1,19 @@
1
+ ## API
2
+
3
+ ### Props
4
+
5
+ | 参数 | 说明 | 类型 | 默认值 |
6
+ | --- | --- | --- | --- |
7
+ | defaultOpen | 默认是否打开滑动单元格,可选值:`left` `right` `outside` | _string_ | - |
8
+ | open | 是否打开滑动单元格,可选值:`left` `right` `outside` | _string_ | - |
9
+ | beforeClose | 关闭前的回调函数,返回 `false` 可阻止关闭,支持返回 Promise | _(args) => boolean \| Promise\<boolean\>_ | - |
10
+ | disabled | 是否禁用滑动 | _boolean_ | `false` |
11
+ | stopPropagation | 是否阻止滑动事件冒泡 | _boolean_ | `false` |
12
+ | catchMove | 是否捕获触摸移动事件 | _boolean_ | `false` |
13
+
14
+ ### Events
15
+
16
+ | 事件名 | 说明 | 回调参数 |
17
+ | --- | --- | --- |
18
+ | onOpen | 打开时触发 | _position: 'left' \| 'right'_ |
19
+ | onClose | 关闭时触发 | _position: 'left' \| 'right' \| 'cell' \| 'outside'_ |
@@ -0,0 +1,105 @@
1
+ # SwipeCell 滑动单元格
2
+
3
+ ### 介绍
4
+
5
+ 可以左右滑动来展示操作按钮的单元格组件。
6
+
7
+ ### 引入
8
+
9
+ ```tsx
10
+ import { SwipeCell } from "@fjyueke/bify-core"
11
+ ```
12
+
13
+ ## 代码演示
14
+
15
+ ### 基础用法
16
+
17
+ `SwipeCell` 组件提供了 `SwipeCell.Actions` 组件,用于定义两侧滑动区域的内容。
18
+
19
+ ```tsx
20
+ <SwipeCell>
21
+ <SwipeCell.Actions side="left">
22
+ <Button variant="contained" shape="square" color="primary">选择</Button>
23
+ </SwipeCell.Actions>
24
+ <Cell bordered={false} title="单元格">
25
+ 内容
26
+ </Cell>
27
+ <SwipeCell.Actions side="right">
28
+ <Button variant="contained" shape="square" color="danger">删除</Button>
29
+ <Button variant="contained" shape="square" color="primary">收藏</Button>
30
+ </SwipeCell.Actions>
31
+ </SwipeCell>
32
+ ```
33
+
34
+ ### 自定义内容
35
+
36
+ `SwipeCell` 可以嵌套任意内容,比如嵌套一个商品卡片。
37
+
38
+ ```tsx
39
+ <SwipeCell className="custom-swipe-cell">
40
+ <View className="custom-card">
41
+ <Image className="custom-card__thumb" src="https://img01.yzcdn.cn/vant/ipad.jpeg" />
42
+ <View className="custom-card__content">
43
+ <View className="custom-card__title">商品标题</View>
44
+ </View>
45
+ </View>
46
+ <SwipeCell.Actions side="right">
47
+ <Button variant="contained" shape="square" color="danger">
48
+ 删除
49
+ </Button>
50
+ <Button variant="contained" shape="square" color="primary">
51
+ 收藏
52
+ </Button>
53
+ </SwipeCell.Actions>
54
+ </SwipeCell>
55
+ ```
56
+
57
+ ```scss
58
+ .custom-swipe-cell {
59
+
60
+ .taroify-swipe-cell__actions {
61
+ .taroify-button {
62
+ height: 100%;
63
+ }
64
+ }
65
+
66
+ .custom-card {
67
+ background: #fff;
68
+ position: relative;
69
+ box-sizing: border-box;
70
+ padding: 8px * 2 16px * 2;
71
+ color: #323233;
72
+ font-size: 12px;
73
+ display: flex;
74
+
75
+ &__thumb {
76
+ position: relative;
77
+ flex: none;
78
+ width: 88px * 2;
79
+ height: 88px * 2;
80
+ margin-right: 8px * 2;
81
+ }
82
+ }
83
+ }
84
+
85
+ ```
86
+
87
+ ## API
88
+
89
+ ### Props
90
+
91
+ | 参数 | 说明 | 类型 | 默认值 |
92
+ | --- | --- | --- | --- |
93
+ | defaultOpen | 默认是否打开滑动单元格,可选值:`left` `right` `outside` | _string_ | - |
94
+ | open | 是否打开滑动单元格,可选值:`left` `right` `outside` | _string_ | - |
95
+ | beforeClose | 关闭前的回调函数,返回 `false` 可阻止关闭,支持返回 Promise | _(args) => boolean \| Promise\<boolean\>_ | - |
96
+ | disabled | 是否禁用滑动 | _boolean_ | `false` |
97
+ | stopPropagation | 是否阻止滑动事件冒泡 | _boolean_ | `false` |
98
+ | catchMove | 是否捕获触摸移动事件 | _boolean_ | `false` |
99
+
100
+ ### Events
101
+
102
+ | 事件名 | 说明 | 回调参数 |
103
+ | --- | --- | --- |
104
+ | onOpen | 打开时触发 | _position: 'left' \| 'right'_ |
105
+ | onClose | 关闭时触发 | _position: 'left' \| 'right' \| 'cell' \| 'outside'_ |
@@ -0,0 +1,62 @@
1
+ import { Button, Cell, Image, SwipeCell } from "@fjyueke/bify-core"
2
+ import { View } from "@tarojs/components"
3
+ import Block from "../../../components/block"
4
+ import Page from "../../../components/page"
5
+ import "./index.scss"
6
+
7
+ function BasicSwipeCell() {
8
+ return (
9
+ <SwipeCell>
10
+ <SwipeCell.Actions side="left">
11
+ <Button variant="contained" shape="square" color="primary">
12
+ 选择
13
+ </Button>
14
+ </SwipeCell.Actions>
15
+ <Cell bordered={false} title="单元格">
16
+ 内容
17
+ </Cell>
18
+ <SwipeCell.Actions side="right">
19
+ <Button variant="contained" shape="square" color="danger">
20
+ 删除
21
+ </Button>
22
+ <Button variant="contained" shape="square" color="primary">
23
+ 收藏
24
+ </Button>
25
+ </SwipeCell.Actions>
26
+ </SwipeCell>
27
+ )
28
+ }
29
+
30
+ function SwipeCellWithCustomContent() {
31
+ return (
32
+ <SwipeCell className="custom-swipe-cell">
33
+ <View className="custom-card">
34
+ <Image className="custom-card__thumb" src="https://img01.yzcdn.cn/vant/ipad.jpeg" />
35
+ <View className="custom-card__content">
36
+ <View className="custom-card__title">商品标题</View>
37
+ </View>
38
+ </View>
39
+ <SwipeCell.Actions side="right">
40
+ <Button variant="contained" shape="square" color="danger">
41
+ 删除
42
+ </Button>
43
+ <Button variant="contained" shape="square" color="primary">
44
+ 收藏
45
+ </Button>
46
+ </SwipeCell.Actions>
47
+ </SwipeCell>
48
+ )
49
+ }
50
+
51
+ export default function SwipeCellDemo() {
52
+ return (
53
+ <Page title="SwipeCell 滑动单元格" className="swipe-cell-demo">
54
+ <Block title="基础用法">
55
+ <BasicSwipeCell />
56
+ </Block>
57
+ <Block title="自定义内容">
58
+ <SwipeCellWithCustomContent />
59
+ </Block>
60
+ </Page>
61
+ )
62
+ }
@@ -0,0 +1,22 @@
1
+ ## API
2
+
3
+ ### Swiper Props
4
+
5
+ | 参数 | 说明 | 类型 | 默认值 |
6
+ | ---------------- | ------------------------ | ------------------ | --------- |
7
+ | defaultValue | 默认位置索引值 | _number_ | `0` |
8
+ | value | 位置索引值 | _number_ | `0` |
9
+ | autoplay | 自动轮播间隔,单位为 ms | _number_ | - |
10
+ | duration | 动画时长,单位为 ms | _number_ | `500` |
11
+ | width | 滑块宽度,单位为 `px` | _number_ | `auto` |
12
+ | height | 滑块高度,单位为 `px` | _number_ | `auto` |
13
+ | direction | 轮播方向,可选值为 `vertical` | _string_ | `horizontal` |
14
+ | touchable | 是否可以通过手势滑动 | _boolean_ | `true` |
15
+ | lazyRender | 是否延迟渲染未展示的轮播 | _boolean_ | `false` |
16
+ | stopPropagation | 是否阻止滑动事件冒泡 | _boolean_ | `true` |
17
+
18
+ ### Swiper Events
19
+
20
+ | 事件名 | 说明 | 回调参数 |
21
+ | ------ | -------------------- | ------------------- |
22
+ | onChange | 每一页轮播结束后触发 | _(index: number)_ |
@@ -0,0 +1,228 @@
1
+ # Swiper 轮播
2
+
3
+ ### 介绍
4
+
5
+ 用于循环播放一组图片或内容。
6
+
7
+ ### 引入
8
+
9
+ ```tsx
10
+ import { Swiper } from "@fjyueke/bify-core"
11
+ ```
12
+
13
+ ## 代码演示
14
+
15
+ ### 基础用法
16
+
17
+ 每个 Swipe.Item 代表一张轮播卡片,可以通过 `autoplay` 属性设置自动轮播的间隔。
18
+
19
+ ```tsx
20
+ function BasicSwiper() {
21
+ return (
22
+ <Swiper className="basic-swiper" autoplay={4000}>
23
+ <Swiper.Indicator />
24
+ <Swiper.Item>1</Swiper.Item>
25
+ <Swiper.Item>2</Swiper.Item>
26
+ <Swiper.Item>3</Swiper.Item>
27
+ <Swiper.Item>4</Swiper.Item>
28
+ </Swiper>
29
+ )
30
+ }
31
+ ```
32
+
33
+ ```scss
34
+ .basic-swiper {
35
+ .taroify-swiper-item {
36
+ color: #fff;
37
+ font-size: 20px * 2;
38
+ background: #39a9ed;
39
+ display: flex;
40
+ justify-content: center;
41
+ align-items: center;
42
+ }
43
+ }
44
+ ```
45
+
46
+ ### 懒加载
47
+
48
+ 当 Swiper 中含有图片时,可以通过 `lazyRender` 属性来开启懒加载模式。在懒加载模式下,只会渲染当前页和下一页。
49
+
50
+ ```tsx
51
+ function ImageSwiper() {
52
+ return (
53
+ <Swiper className="image-swiper" lazyRender autoplay={4000}>
54
+ <Swiper.Indicator />
55
+ <Swiper.Item>
56
+ <Image className="image" src="https://img01.yzcdn.cn/vant/apple-1.jpg" />
57
+ </Swiper.Item>
58
+ <Swiper.Item>
59
+ <Image className="image" src="https://img01.yzcdn.cn/vant/apple-2.jpg" />
60
+ </Swiper.Item>
61
+ <Swiper.Item>
62
+ <Image className="image" src="https://img01.yzcdn.cn/vant/apple-3.jpg" />
63
+ </Swiper.Item>
64
+ <Swiper.Item>
65
+ <Image className="image" src="https://img01.yzcdn.cn/vant/apple-4.jpg" />
66
+ </Swiper.Item>
67
+ </Swiper>
68
+ )
69
+ }
70
+ ```
71
+
72
+ ```scss
73
+ .image-swiper {
74
+ .image {
75
+ display: block;
76
+ box-sizing: border-box;
77
+ width: 100%;
78
+ height: 240px * 2;
79
+ padding: 30px * 2 60px * 2;
80
+ background: #fff;
81
+ pointer-events: none;
82
+ }
83
+ }
84
+ ```
85
+
86
+ ### 监听 change 事件
87
+
88
+ 在每一页轮播结束后,会触发 `change` 事件。
89
+
90
+ ```tsx
91
+ function SwiperWithOnChange() {
92
+ return (
93
+ <>
94
+ <Toast id="toast" />
95
+ <Swiper
96
+ className="onchange-swiper"
97
+ onChange={(value) => Toast.open(`当前 Swipe 索引:${value}`)}
98
+ >
99
+ <Swiper.Indicator />
100
+ <Swiper.Item>1</Swiper.Item>
101
+ <Swiper.Item>2</Swiper.Item>
102
+ <Swiper.Item>3</Swiper.Item>
103
+ <Swiper.Item>4</Swiper.Item>
104
+ </Swiper>
105
+ </>
106
+ )
107
+ }
108
+ ```
109
+
110
+ ### 纵向滚动
111
+
112
+ 设置 `vertical` 属性后滑块会纵向排列,此时需要指定滑块容器的高度。
113
+
114
+ ```tsx
115
+ <Swiper className="vertical-swiper" direction="vertical">
116
+ <Swiper.Item>1</Swiper.Item>
117
+ <Swiper.Item>2</Swiper.Item>
118
+ <Swiper.Item>3</Swiper.Item>
119
+ <Swiper.Item>4</Swiper.Item>
120
+ </Swiper>
121
+ ```
122
+
123
+ ```scss
124
+ .vertical-swiper {
125
+ .taroify-swiper-item {
126
+ color: #fff;
127
+ font-size: 20px * 2;
128
+ background: #39a9ed;
129
+ display: flex;
130
+ justify-content: center;
131
+ align-items: center;
132
+ }
133
+ }
134
+ ```
135
+
136
+ ### 自定义滑块大小
137
+
138
+ 滑块默认宽度为 `100%`,可以通过 `width` 属性设置单个滑块的宽度。纵向滚动模式下,可以通过 `height` 属性设置单个滑块的高度。
139
+
140
+ ```tsx
141
+ function SwiperWithCustomWidth() {
142
+ return (
143
+ <Swiper loop={false} width={300}>
144
+ <Swiper.Indicator />
145
+ <Swiper.Item>1</Swiper.Item>
146
+ <Swiper.Item>2</Swiper.Item>
147
+ <Swiper.Item>3</Swiper.Item>
148
+ <Swiper.Item>4</Swiper.Item>
149
+ </Swiper>
150
+ )
151
+ }
152
+ ```
153
+
154
+ > 目前不支持在循环滚动模式下自定义滑块大小,因此需要将 loop 设置为 false。
155
+ >
156
+
157
+ ### 自定义指示器
158
+
159
+ 通过 `Swiper.Indicator` 组件可以自定义指示器的样式。
160
+
161
+ ```tsx
162
+ function SwiperWithCustomIndicator() {
163
+ const [value, setValue] = useState(0)
164
+
165
+ return (
166
+ <Swiper autoplay={4000} onChange={setValue}>
167
+ <Swiper.Item>1</Swiper.Item>
168
+ <Swiper.Item>2</Swiper.Item>
169
+ <Swiper.Item>3</Swiper.Item>
170
+ <Swiper.Item>4</Swiper.Item>
171
+ <Swiper.Indicator className="custom-indicator">{value + 1}/4</Swiper.Indicator>
172
+ </Swiper>
173
+ )
174
+ }
175
+ ```
176
+
177
+ ```scss
178
+ .custom-indicator {
179
+ position: absolute;
180
+ right: 5px * 2;
181
+ bottom: 5px * 2;
182
+ padding: 2px * 2 5px * 2;
183
+ font-size: 12px * 2;
184
+ color: #ffffff;
185
+ background: rgba(0, 0, 0, 0.1)_ | - |
186
+ }
187
+ ```
188
+
189
+ ## API
190
+
191
+ ### Swiper Props
192
+
193
+ | 参数 | 说明 | 类型 | 默认值 |
194
+ | ---------------- | ------------------------ | ------------------ | --------- |
195
+ | defaultValue | 默认位置索引值 | _number_ | `0` |
196
+ | value | 位置索引值 | _number_ | `0` |
197
+ | autoplay | 自动轮播间隔,单位为 ms | _number_ | - |
198
+ | duration | 动画时长,单位为 ms | _number_ | `500` |
199
+ | width | 滑块宽度,单位为 `px` | _number_ | `auto` |
200
+ | height | 滑块高度,单位为 `px` | _number_ | `auto` |
201
+ | direction | 轮播方向,可选值为 `vertical` | _string_ | `horizontal` |
202
+ | touchable | 是否可以通过手势滑动 | _boolean_ | `true` |
203
+ | lazyRender | 是否延迟渲染未展示的轮播 | _boolean_ | `false` |
204
+ | stopPropagation | 是否阻止滑动事件冒泡 | _boolean_ | `true` |
205
+
206
+ ### Swiper Events
207
+
208
+ | 事件名 | 说明 | 回调参数 |
209
+ | ------ | -------------------- | ------------------- |
210
+ | onChange | 每一页轮播结束后触发 | _(index: number)_ |
211
+
212
+ ## 主题定制
213
+
214
+ ### 样式变量
215
+
216
+ 组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 [ConfigProvider](/components/config-provider/) 组件。
217
+
218
+ | 名称 | 默认值 | 描述 |
219
+ |--------------------------------------------|----------------------------------|-----|
220
+ | --swiper-indicators-margin | _var(--padding-sm)_ | - |
221
+ | --swiper-indicator-size | _6px * $hd_ | - |
222
+ | --swiper-indicator-width | _var(--swiper-indicator-size)_ | - |
223
+ | --swiper-indicator-height | _var(--swiper-indicator-size)_ | - |
224
+ | --swiper-indicator-opacity | _0.3_ | - |
225
+ | --swiper-indicator-background-color | _var(--border-color)_ | - |
226
+ | --swiper-indicator-transition-duration | _var(--animation-duration-fast)_ | - |
227
+ | --swiper-indicator-active-opacity | _1_ | - |
228
+ | --swiper-indicator-active-background-color | _var(--blue)_ | - |