@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,138 @@
1
+ import { Cell, Dialog } from "@fjyueke/bify-core"
2
+ import Block from "../../../components/block"
3
+ import Page from "../../../components/page"
4
+ import "./index.scss"
5
+
6
+ function BasicDialog() {
7
+ return (
8
+ <>
9
+ <Cell
10
+ title="提示弹窗"
11
+ clickable
12
+ bordered
13
+ isLink
14
+ onClick={() => Dialog.alert({ title: "标题", message: "代码是写出来给人看的,附带能在机器上运行" })}
15
+ />
16
+ </>
17
+ )
18
+ // )
19
+ // return (
20
+ // <>
21
+ // <Dialog
22
+ // open
23
+ // title="标题"
24
+ // message="代码是写出来给人看的,附带能在机器上运行"
25
+ // messageAlign="left"
26
+ // confirm="ok"
27
+ // cancel="cancel"
28
+ // onConfirm={() => console.log("confirm")} onCancel={() => console.log("cancel")}
29
+ // />
30
+ // </>
31
+ // )
32
+ }
33
+
34
+ function NoTitleDialog() {
35
+ return (
36
+ <>
37
+ <Cell
38
+ title="提示弹窗(无标题)"
39
+ clickable
40
+ bordered
41
+ isLink
42
+ onClick={() => Dialog.alert("生命远不止连轴转和忙到极限,人类的体验远比这辽阔、丰富得多。")}
43
+ />
44
+ </>
45
+ )
46
+ }
47
+
48
+ function ConfirmDialog() {
49
+ return (
50
+ <>
51
+ <Cell
52
+ title="确认弹窗"
53
+ clickable
54
+ bordered
55
+ isLink
56
+ onClick={() => Dialog.confirm({ title: "标题", message: "代码是写出来给人看的,附带能在机器上运行" })}
57
+ />
58
+ </>
59
+ )
60
+ }
61
+
62
+ function RoundedDialog() {
63
+ return (
64
+ <>
65
+ <Cell
66
+ title="提示弹窗"
67
+ clickable
68
+ bordered
69
+ isLink
70
+ onClick={() => Dialog.confirm({ theme: "rounded", title: "标题", message: "代码是写出来给人看的,附带能在机器上运行" })}
71
+ />
72
+ </>
73
+ )
74
+ }
75
+
76
+ function RoundedNoTitleDialog() {
77
+ return (
78
+ <>
79
+ <Cell
80
+ title="提示弹窗(无标题)"
81
+ clickable
82
+ bordered
83
+ isLink
84
+ onClick={() => Dialog.alert({ theme: "rounded", title: "标题", message: "代码是写出来给人看的,附带能在机器上运行" })}
85
+ />
86
+ </>
87
+ )
88
+ }
89
+
90
+ function AsyncCloseDialog() {
91
+ return (
92
+ <>
93
+ <Cell
94
+ title="异步关闭"
95
+ clickable
96
+ bordered
97
+ isLink
98
+ onClick={() => Dialog.confirm({
99
+ title: "标题",
100
+ message: "如果解决方法是丑陋的,那就肯定还有更好的解决方法,只是还没有发现而已。",
101
+ async onBeforeClose(action) {
102
+ return new Promise((resolve) => {
103
+ setTimeout(() => {
104
+ // action !== 'confirm' 拦截取消操作
105
+ resolve(action === "confirm");
106
+ }, 1000);
107
+ });
108
+ },
109
+ onCancel() {
110
+ console.log("cancel")
111
+ },
112
+ onConfirm() {
113
+ console.log("confirm")
114
+ },
115
+ })}
116
+ />
117
+ </>
118
+ )
119
+ }
120
+
121
+ export default function DialogDemo() {
122
+ return (
123
+ <Page title="Dialog 弹出框" className="dialog-demo">
124
+ <Block variant="card" title="基础用法">
125
+ <BasicDialog />
126
+ <NoTitleDialog />
127
+ <ConfirmDialog />
128
+ </Block>
129
+ <Block variant="card" title="圆角按钮样式">
130
+ <RoundedDialog />
131
+ <RoundedNoTitleDialog />
132
+ </Block>
133
+ <Block variant="card" title="异步关闭">
134
+ <AsyncCloseDialog />
135
+ </Block>
136
+ </Page>
137
+ )
138
+ }
@@ -0,0 +1,15 @@
1
+ ## API
2
+
3
+ ### Divider Props
4
+
5
+ | 参数 | 说明 | 类型 | 默认值 |
6
+ |----------|--------------|-----------|---------|
7
+ | dashed | 是否使用虚线 | _boolean_ | `false` |
8
+ | hairline | 是否使用 0.5px 线 | _boolean_ | `true` |
9
+ | type `v0.7.0` | 水平还是垂直类型 | _horizontal \| vertical_ | `horizontal` |
10
+
11
+ ### Divider.Text Props
12
+
13
+ | 参数 | 说明 | 类型 | 默认值 |
14
+ |-------------|--------------------------|----------|----------|
15
+ | orientation | 内容位置,可选值为 `left` `right` | _string_ | `center` |
@@ -0,0 +1,108 @@
1
+ # Divider 分割线
2
+
3
+ ### 介绍
4
+
5
+ 用于将内容分隔为多个区域。
6
+
7
+ ### 引入
8
+
9
+ ```ts
10
+ import { Divider } from "@fjyueke/bify-core"
11
+ ```
12
+
13
+ ## 代码演示
14
+
15
+ ### 基础用法
16
+
17
+ 默认渲染一条水平分割线。
18
+
19
+ ```tsx
20
+ <Divider />
21
+ ```
22
+
23
+ ### 展示文字
24
+
25
+ 通过插槽在可以分割线中间插入内容。
26
+
27
+ ```tsx
28
+ <Divider>文本</Divider>
29
+ ```
30
+
31
+ ### 内容位置
32
+
33
+ 通过 `orientation` 指定内容所在位置。
34
+
35
+ ```tsx
36
+ <Divider>
37
+ <Divider.Text orientation="left">文字</Divider.Text>
38
+ </Divider>
39
+ <Divider>
40
+ <Divider.Text orientation="right">文字</Divider.Text>
41
+ </Divider>
42
+ ```
43
+
44
+ ### 虚线
45
+
46
+ 添加 `dashed` 属性使分割线渲染为虚线。
47
+
48
+ ```tsx
49
+ <Divider dashed>文本</Divider>
50
+ ```
51
+
52
+ ### 自定义样式
53
+
54
+ 可以使用 `className` 属性,也可以直接通过 `style` 属性设置分割线的样式。
55
+
56
+ ```tsx
57
+ <Divider style={{ color: "#1989fa", borderColor: "#1989fa", padding: "0 16px" }}>
58
+ 文本
59
+ </Divider>
60
+ ```
61
+
62
+ ### 垂直
63
+
64
+ 添加 `type` 属性使分割线垂直展示。
65
+
66
+ ```tsx
67
+ <Divider type='vertical'>文本</Divider>
68
+ <Divider type='vertical' dashed>文本</Divider>
69
+ <Divider type='vertical' dashed hairline>文本</Divider>
70
+ <Divider type="vertical" style={{ color: "#1989fa", borderColor: "#1989fa" }}>
71
+ 文本
72
+ </Divider>
73
+ ```
74
+
75
+ ## API
76
+
77
+ ### Divider Props
78
+
79
+ | 参数 | 说明 | 类型 | 默认值 |
80
+ |----------|--------------|-----------|---------|
81
+ | dashed | 是否使用虚线 | _boolean_ | `false` |
82
+ | hairline | 是否使用 0.5px 线 | _boolean_ | `true` |
83
+ | type `v0.7.0` | 水平还是垂直类型 | _horizontal \| vertical_ | `horizontal` |
84
+
85
+ ### Divider.Text Props
86
+
87
+ | 参数 | 说明 | 类型 | 默认值 |
88
+ |-------------|--------------------------|----------|----------|
89
+ | orientation | 内容位置,可选值为 `left` `right` | _string_ | `center` |
90
+
91
+ ## 主题定制
92
+
93
+ ### 样式变量
94
+
95
+ 组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 [ConfigProvider](/components/config-provider/) 组件。
96
+
97
+ | 名称 | 默认值 | 描述 |
98
+ |-------------------------------|--------------------------------|-----|
99
+ | --divider-margin | _var(--padding-md) 0_ | - |
100
+ | --divider-vertical-padding | _0 var(--padding-xs)_ | - |
101
+ | --divider-color | _var(--gray-6)_ | - |
102
+ | --divider-font-size | _var(--font-size-md)_ | - |
103
+ | --divider-line-height | _24px * $hd_ | - |
104
+ | --divider-border-color | _var(--border-color)_ | - |
105
+ | --divider-border-width | _var(--border-width-base) 0 0_ | - |
106
+ | --divider-content-padding | _var(--padding-md)_ | - |
107
+ | --divider-content-left-width | _10%_ | - |
108
+ | --divider-content-right-width | _10%_ | - |
@@ -0,0 +1,45 @@
1
+ import { Divider } from "@fjyueke/bify-core"
2
+ import Block from "../../../components/block"
3
+ import Page from "../../../components/page"
4
+ import "./index.scss"
5
+
6
+ export default function DividerDemo() {
7
+ return (
8
+ <Page title="Divider 分割线" className="divider-demo">
9
+ <Block title="基础用法">
10
+ <Divider />
11
+ </Block>
12
+ <Block title="展示文字">
13
+ <Divider>文本</Divider>
14
+ </Block>
15
+ <Block title="内容位置">
16
+ <Divider>
17
+ <Divider.Text orientation="left">文字</Divider.Text>
18
+ </Divider>
19
+ <Divider>
20
+ <Divider.Text orientation="right">文字</Divider.Text>
21
+ </Divider>
22
+ </Block>
23
+ <Block title="虚线">
24
+ <Divider dashed>文本</Divider>
25
+ </Block>
26
+ <Block title="自定义样式">
27
+ <Divider style={{ color: "#1989fa", borderColor: "#1989fa", padding: "0 16px" }}>
28
+ 文本
29
+ </Divider>
30
+ </Block>
31
+ <Block title="垂直分割线">
32
+ <Divider type="vertical">文本</Divider>
33
+ <Divider type="vertical" dashed>
34
+ 文本
35
+ </Divider>
36
+ <Divider type="vertical" hairline>
37
+ 文本
38
+ </Divider>
39
+ <Divider type="vertical" style={{ color: "#1989fa", borderColor: "#1989fa" }}>
40
+ 文本
41
+ </Divider>
42
+ </Block>
43
+ </Page>
44
+ )
45
+ }
@@ -0,0 +1,37 @@
1
+ ## API
2
+
3
+ ### DropdownMenu Props
4
+
5
+ | 参数 | 说明 | 类型 | 默认值 |
6
+ | --------------------------------- | ---------------------------------- | -------- | ------- |
7
+ | direction | 菜单展开方向,可选值为`up` | _string_ | `down` |
8
+ | backdropType <br>`v0.2.3-alpha.0` | 背景板位置,可选值 `inner` `outer` | _string_ | `inner` |
9
+
10
+ ### DropdownMenu.Item Props
11
+
12
+ | 参数 | 说明 | 类型 | 默认值 |
13
+ | ---------------------------- | ---------------------- | -------------------------------- | -------------- |
14
+ | defaultValue | 默认选中项对应的 value | _any_ | - |
15
+ | value | 当前选中项对应的 value | _any_ | - |
16
+ | title | 菜单项标题 | _string_ | 当前选中项文字 |
17
+ | disabled | 是否禁用菜单 | _boolean_ | `false` |
18
+ | lock <br>`v0.1.7-alpha.0` | 是否锁定背景滚动 | _boolean_ | `false` |
19
+ | options <br>`v0.1.7-alpha.0` | 选项数组 | 同下方 DropdownMenu.Option Props | - |
20
+
21
+ ### DropdownMenu.Item Events
22
+
23
+ | 事件名 | 说明 | 回调参数 |
24
+ | ------------------------- | ----------------------------- | ------------ |
25
+ | onChange | 点击选项导致 value 变化时触发 | _value: any_ |
26
+ | onOpen `v0.1.1-alpha.1` | 打开菜单栏时触发 | - |
27
+ | onClose `v0.1.1-alpha.1` | 关闭菜单栏时触发 | - |
28
+ | onOpened `v0.1.1-alpha.1` | 打开菜单栏且动画结束后触发 | - |
29
+ | onClosed `v0.1.1-alpha.1` | 关闭菜单栏且动画结束后触发 | - |
30
+
31
+ ### DropdownMenu.Option Props
32
+
33
+ | 键名 | 说明 | 类型 |
34
+ | ----- | ------------------------------------------------------- | ----------- |
35
+ | value | 标识符 | _any_ |
36
+ | icon | 左侧[图标](/components/icon)或[图片](/components/image) | _ReactNode_ |
37
+ | title | 展示 DropdownMenu 选中的 title 内容 | _ReactNode_ |
@@ -0,0 +1,279 @@
1
+ # DropdownMenu 下拉菜单
2
+
3
+ ### 介绍
4
+
5
+ 向下弹出的菜单列表。
6
+
7
+ ### 引入
8
+
9
+ ```tsx
10
+ import { DropdownMenu } from "@fjyueke/bify-core"
11
+ ```
12
+
13
+ ## 代码演示
14
+
15
+ ### 基础用法
16
+
17
+ ```tsx
18
+ import { DropdownMenu } from "@fjyueke/bify-core"
19
+
20
+ function BasicDropdownMenu() {
21
+ const [options] = useState([
22
+ { title: "默认排序", value: 0 },
23
+ { title: "好评排序", value: 1 },
24
+ { title: "销量排序", value: 2 },
25
+ ])
26
+ return (
27
+ <DropdownMenu>
28
+ <DropdownMenu.Item>
29
+ <DropdownMenu.Option value={0}>全部商品</DropdownMenu.Option>
30
+ <DropdownMenu.Option value={1}>新款商品</DropdownMenu.Option>
31
+ <DropdownMenu.Option value={2}>活动商品</DropdownMenu.Option>
32
+ </DropdownMenu.Item>
33
+ <DropdownMenu.Item options={options} />
34
+ </DropdownMenu>
35
+ )
36
+ }
37
+ ```
38
+
39
+ ### 自定义菜单内容
40
+
41
+ 可以通过 `DropdownMenu.Item` 组件自定义内容。
42
+
43
+ ```tsx
44
+ import { DropdownMenu } from "@fjyueke/bify-core"
45
+ import { Key } from "react"
46
+
47
+ function DropdownMenuWithCustomContent() {
48
+ const [value, setValue] = useState<Key | false>()
49
+ const [option1, setOption1] = useState(0)
50
+ const [switch1, setSwitch1] = useState(true)
51
+ const [switch2, setSwitch2] = useState(false)
52
+ const [options] = useState([
53
+ {
54
+ title: (
55
+ <View>
56
+ 默认<View>排序</View>
57
+ </View>
58
+ ),
59
+ value: 0,
60
+ },
61
+ { title: "好评排序", value: 1 },
62
+ { title: "销量排序", value: 2 },
63
+ ])
64
+ return (
65
+ <DropdownMenu value={value} onChange={setValue}>
66
+ <DropdownMenu.Item
67
+ value={option1}
68
+ onChange={setOption1}
69
+ options={options}
70
+ ></DropdownMenu.Item>
71
+ <DropdownMenu.Item title="筛选">
72
+ <Cell title="包邮" align="center">
73
+ <Switch size="24" checked={switch1} onChange={setSwitch1} />
74
+ </Cell>
75
+ <Cell title="团购" align="center">
76
+ <Switch size="24" checked={switch2} onChange={setSwitch2} />
77
+ </Cell>
78
+ <View style="padding: 5px 16px;">
79
+ <Button color="danger" block shape="round" onClick={() => setValue(false)}>
80
+ 确认
81
+ </Button>
82
+ </View>
83
+ </DropdownMenu.Item>
84
+ </DropdownMenu>
85
+ )
86
+ }
87
+ ```
88
+
89
+ ### 自定义选中态颜色
90
+
91
+ 通过 `css` 可以自定义菜单标题和选项的选中态颜色。
92
+
93
+ ```tsx
94
+ import { DropdownMenu } from "@fjyueke/bify-core"
95
+
96
+ function DropdownMenuWithCustomColor() {
97
+ return (
98
+ <DropdownMenu className="custom-color">
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.Item>
105
+ <DropdownMenu.Option value={0}>默认排序</DropdownMenu.Option>
106
+ <DropdownMenu.Option value={1}>好评排序</DropdownMenu.Option>
107
+ <DropdownMenu.Option value={2}>销量排序</DropdownMenu.Option>
108
+ </DropdownMenu.Item>
109
+ </DropdownMenu>
110
+ )
111
+ }
112
+ ```
113
+
114
+ ```scss
115
+ .custom-color {
116
+ --dropdown-menu-title-active-color: #1989fa;
117
+ --dropdown-menu-option-active-color: #1989fa;
118
+ }
119
+ ```
120
+
121
+ ### 向上展开
122
+
123
+ 将 `direction` 属性值设置为 `up`,菜单即可向上展开。
124
+
125
+ ```tsx
126
+ import { DropdownMenu } from "@fjyueke/bify-core"
127
+
128
+ function UpDropdownMenu() {
129
+ return (
130
+ <DropdownMenu direction="up">
131
+ <DropdownMenu.Item>
132
+ <DropdownMenu.Option value={0}>全部商品</DropdownMenu.Option>
133
+ <DropdownMenu.Option value={1}>新款商品</DropdownMenu.Option>
134
+ <DropdownMenu.Option value={2}>活动商品</DropdownMenu.Option>
135
+ </DropdownMenu.Item>
136
+ <DropdownMenu.Item>
137
+ <DropdownMenu.Option value={0}>默认排序</DropdownMenu.Option>
138
+ <DropdownMenu.Option value={1}>好评排序</DropdownMenu.Option>
139
+ <DropdownMenu.Option value={2}>销量排序</DropdownMenu.Option>
140
+ </DropdownMenu.Item>
141
+ </DropdownMenu>
142
+ )
143
+ }
144
+ ```
145
+
146
+ ### 禁用菜单
147
+
148
+ ```tsx
149
+ import { DropdownMenu } from "@fjyueke/bify-core"
150
+
151
+ function DisabledDropdownMenu() {
152
+ return (
153
+ <DropdownMenu>
154
+ <DropdownMenu.Item disabled>
155
+ <DropdownMenu.Option value={0}>全部商品</DropdownMenu.Option>
156
+ <DropdownMenu.Option value={1}>新款商品</DropdownMenu.Option>
157
+ <DropdownMenu.Option value={2}>活动商品</DropdownMenu.Option>
158
+ </DropdownMenu.Item>
159
+ <DropdownMenu.Item disabled>
160
+ <DropdownMenu.Option value={0}>默认排序</DropdownMenu.Option>
161
+ <DropdownMenu.Option value={1}>好评排序</DropdownMenu.Option>
162
+ <DropdownMenu.Option value={2}>销量排序</DropdownMenu.Option>
163
+ </DropdownMenu.Item>
164
+ </DropdownMenu>
165
+ )
166
+ }
167
+ ```
168
+
169
+ ### 阻止滑动穿透
170
+
171
+ 在 h5 上设置 lock 即可阻止滑动穿透 \
172
+ 若要在微信小程序上支持,还需下面两项设置 \
173
+ 1.设置滑动容器高度(--dropdown-menu-item-content-max-height),不设置超长时无法滑动 \
174
+ 2.当下拉展开时,禁用外层滑动(通过 PageMeta,或者你包裹的滑动容器),不设置无法阻止下拉反方向的滑动
175
+
176
+ ```tsx
177
+ function BasicDropdownMenu() {
178
+ const [options] = useState(
179
+ [
180
+ { title: "默认排序", value: 0 },
181
+ { title: "好评排序", value: 1 },
182
+ { title: "销量排序", value: 2 },
183
+ ].concat(Array.from({ length: 20 }, (_, i) => ({ title: "选项" + i, value: 3 + i }))),
184
+ )
185
+ const [opened, setOpened] = useState(false)
186
+ const getScrollHeight = useCallback((len) => {
187
+ return len < 5 ? len * 46 : 5 * 46
188
+ }, [])
189
+ return (
190
+ <>
191
+ <PageMeta pageStyle={opened ? "overflow: hidden;" : ""} />
192
+ <DropdownMenu>
193
+ {/* @ts-ignore */}
194
+ <DropdownMenu.Item
195
+ style={{ "--dropdown-menu-item-content-max-height": getScrollHeight(23) + "px" }}
196
+ options={options}
197
+ lock
198
+ onOpen={() => setOpened(true)}
199
+ onClose={() => setOpened(false)}
200
+ />
201
+ {/* @ts-ignore */}
202
+ <DropdownMenu.Item
203
+ style={{ "--dropdown-menu-item-content-max-height": getScrollHeight(4) + "px" }}
204
+ lock
205
+ onOpen={() => setOpened(true)}
206
+ onClose={() => setOpened(false)}
207
+ >
208
+ <DropdownMenu.Option value={0}>全部商品</DropdownMenu.Option>
209
+ <DropdownMenu.Option value={1}>新款商品</DropdownMenu.Option>
210
+ <DropdownMenu.Option value={2}>活动商品</DropdownMenu.Option>
211
+ <DropdownMenu.Option value={3}>活动商品2</DropdownMenu.Option>
212
+ </DropdownMenu.Item>
213
+ </DropdownMenu>
214
+ </>
215
+ )
216
+ }
217
+ ```
218
+
219
+ ## API
220
+
221
+ ### DropdownMenu Props
222
+
223
+ | 参数 | 说明 | 类型 | 默认值 |
224
+ | --------------------------------- | ---------------------------------- | -------- | ------- |
225
+ | direction | 菜单展开方向,可选值为`up` | _string_ | `down` |
226
+ | backdropType <br>`v0.2.3-alpha.0` | 背景板位置,可选值 `inner` `outer` | _string_ | `inner` |
227
+
228
+ ### DropdownMenu.Item Props
229
+
230
+ | 参数 | 说明 | 类型 | 默认值 |
231
+ | ---------------------------- | ---------------------- | -------------------------------- | -------------- |
232
+ | defaultValue | 默认选中项对应的 value | _any_ | - |
233
+ | value | 当前选中项对应的 value | _any_ | - |
234
+ | title | 菜单项标题 | _string_ | 当前选中项文字 |
235
+ | disabled | 是否禁用菜单 | _boolean_ | `false` |
236
+ | lock <br>`v0.1.7-alpha.0` | 是否锁定背景滚动 | _boolean_ | `false` |
237
+ | options <br>`v0.1.7-alpha.0` | 选项数组 | 同下方 DropdownMenu.Option Props | - |
238
+
239
+ ### DropdownMenu.Item Events
240
+
241
+ | 事件名 | 说明 | 回调参数 |
242
+ | ------------------------- | ----------------------------- | ------------ |
243
+ | onChange | 点击选项导致 value 变化时触发 | _value: any_ |
244
+ | onOpen `v0.1.1-alpha.1` | 打开菜单栏时触发 | - |
245
+ | onClose `v0.1.1-alpha.1` | 关闭菜单栏时触发 | - |
246
+ | onOpened `v0.1.1-alpha.1` | 打开菜单栏且动画结束后触发 | - |
247
+ | onClosed `v0.1.1-alpha.1` | 关闭菜单栏且动画结束后触发 | - |
248
+
249
+ ### DropdownMenu.Option Props
250
+
251
+ | 键名 | 说明 | 类型 |
252
+ | ----- | ------------------------------------------------------- | ----------- |
253
+ | value | 标识符 | _any_ |
254
+ | icon | 左侧[图标](/components/icon)或[图片](/components/image) | _ReactNode_ |
255
+ | title | 展示 DropdownMenu 选中的 title 内容 | _ReactNode_ |
256
+
257
+ ## 主题定制
258
+
259
+ ### 样式变量
260
+
261
+ 组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 [ConfigProvider](/components/config-provider/) 组件。
262
+
263
+ | 名称 | 默认值 | 描述 |
264
+ | ----------------------------------------------- | -------------------------------------------------- | ---- |
265
+ | --dropdown-menu-height | _48px \* $hd_ | - |
266
+ | --dropdown-menu-background-color | _var(--white)_ | - |
267
+ | --dropdown-menu-z-index | _11_ | - |
268
+ | --dropdown-menu-box-shadow | _0 2px * $hd 12px * $hd rgba(100, 101, 102, 0.12)_ | - |
269
+ | --dropdown-menu-title-font-size | _15px \* $hd_ | - |
270
+ | --dropdown-menu-title-color | _var(--text-color)_ | - |
271
+ | --dropdown-menu-title-padding | _0 var(--padding-xs)_ | - |
272
+ | --dropdown-menu-title-line-height | _var(--line-height-lg)_ | - |
273
+ | --dropdown-menu-title-active-opacity | _var(--active-opacity)_ | - |
274
+ | --dropdown-menu-title-active-color | _var(--danger-color)_ | - |
275
+ | --dropdown-menu-title-disabled-color | _var(--gray-6)_ | - |
276
+ | --dropdown-menu-item-z-index | _calc(var(--dropdown-menu-z-index) - 1)_ | - |
277
+ | --dropdown-menu-item-content-max-height | _80%_ | - |
278
+ | --dropdown-menu-item-content-animation-duration | _var(--animation-duration-fast)_ | - |
279
+ | --dropdown-menu-option-active-color | _var(--danger-color)_ | - |