@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,265 @@
1
+ import { DatetimePicker } from "@fjyueke/bify-core"
2
+ import { useState } from "react"
3
+ import Block from "../../../components/block"
4
+ import CustomWrapper from "../../../components/custom-wrapper"
5
+ import Page from "../../../components/page"
6
+ import "./index.scss"
7
+
8
+ function DatePicker() {
9
+ const [minDate] = useState(new Date(2019, 0, 1))
10
+ const [maxDate] = useState(new Date(2023, 11, 12))
11
+ const [defaultValue] = useState(new Date(2021, 12, 14))
12
+ const [value, setValue] = useState(new Date(2022, 10, 14))
13
+ return (
14
+ <DatetimePicker
15
+ type="date"
16
+ min={minDate}
17
+ max={maxDate}
18
+ defaultValue={defaultValue}
19
+ value={value}
20
+ onChange={setValue}
21
+ >
22
+ <DatetimePicker.Toolbar>
23
+ <DatetimePicker.Button>取消</DatetimePicker.Button>
24
+ <DatetimePicker.Title>选择年月日</DatetimePicker.Title>
25
+ <DatetimePicker.Button>确认</DatetimePicker.Button>
26
+ </DatetimePicker.Toolbar>
27
+ </DatetimePicker>
28
+ )
29
+ }
30
+
31
+ function YearMonthPicker() {
32
+ const [minDate] = useState(new Date(2020, 0, 1))
33
+ const [maxDate] = useState(new Date(2025, 10, 1))
34
+ const [defaultValue] = useState(new Date(2021, 0, 17))
35
+
36
+ return (
37
+ <DatetimePicker
38
+ type="year-month"
39
+ min={minDate}
40
+ max={maxDate}
41
+ defaultValue={defaultValue}
42
+ formatter={(type, val) => {
43
+ if (type === "year") {
44
+ return `${val}年`
45
+ }
46
+ if (type === "month") {
47
+ return `${val}月`
48
+ }
49
+ return val
50
+ }}
51
+ >
52
+ <DatetimePicker.Toolbar>
53
+ <DatetimePicker.Button>取消</DatetimePicker.Button>
54
+ <DatetimePicker.Title>选择年月</DatetimePicker.Title>
55
+ <DatetimePicker.Button>确认</DatetimePicker.Button>
56
+ </DatetimePicker.Toolbar>
57
+ </DatetimePicker>
58
+ )
59
+ }
60
+
61
+ function MonthDayPicker() {
62
+ const [minDate] = useState(new Date(2020, 0, 1))
63
+ const [maxDate] = useState(new Date(2025, 10, 1))
64
+ const [defaultValue] = useState(new Date(2021, 0, 17))
65
+
66
+ return (
67
+ <DatetimePicker
68
+ type="month-day"
69
+ min={minDate}
70
+ max={maxDate}
71
+ defaultValue={defaultValue}
72
+ formatter={(type, val) => {
73
+ if (type === "month") {
74
+ return `${val}月`
75
+ }
76
+ if (type === "day") {
77
+ return `${val}日`
78
+ }
79
+ return val
80
+ }}
81
+ >
82
+ <DatetimePicker.Toolbar>
83
+ <DatetimePicker.Button>取消</DatetimePicker.Button>
84
+ <DatetimePicker.Title>选择年月</DatetimePicker.Title>
85
+ <DatetimePicker.Button>确认</DatetimePicker.Button>
86
+ </DatetimePicker.Toolbar>
87
+ </DatetimePicker>
88
+ )
89
+ }
90
+
91
+ function TimePicker() {
92
+ const [minDate] = useState(new Date(2020, 0, 1, 10, 0, 0))
93
+ const [maxDate] = useState(new Date(2020, 0, 1, 20, 59, 59))
94
+ const [defaultValue] = useState(new Date(2020, 0, 1, 12, 0, 0))
95
+
96
+ return (
97
+ <DatetimePicker type="time" min={minDate} max={maxDate} defaultValue={defaultValue}>
98
+ <DatetimePicker.Toolbar>
99
+ <DatetimePicker.Button>取消</DatetimePicker.Button>
100
+ <DatetimePicker.Title>选择时间</DatetimePicker.Title>
101
+ <DatetimePicker.Button>确认</DatetimePicker.Button>
102
+ </DatetimePicker.Toolbar>
103
+ </DatetimePicker>
104
+ )
105
+ }
106
+
107
+ function DateTimePicker() {
108
+ const [minDate] = useState(new Date(2020, 0, 1, 10, 0, 0))
109
+ const [maxDate] = useState(new Date(2025, 10, 1, 20, 59, 59))
110
+ const [defaultValue] = useState(new Date(2021, 2, 3, 12, 12, 12))
111
+
112
+ return (
113
+ <DatetimePicker type="datetime" min={minDate} max={maxDate} defaultValue={defaultValue}>
114
+ <DatetimePicker.Toolbar>
115
+ <DatetimePicker.Button>取消</DatetimePicker.Button>
116
+ <DatetimePicker.Title>选择完整时间</DatetimePicker.Title>
117
+ <DatetimePicker.Button>确认</DatetimePicker.Button>
118
+ </DatetimePicker.Toolbar>
119
+ </DatetimePicker>
120
+ )
121
+ }
122
+
123
+ function DateHourPicker() {
124
+ const [minDate] = useState(new Date(2020, 0, 1, 0))
125
+ const [maxDate] = useState(new Date(2025, 10, 1, 23))
126
+ const [defaultValue] = useState(new Date())
127
+
128
+ return (
129
+ <DatetimePicker type="date-hour" min={minDate} max={maxDate} defaultValue={defaultValue}>
130
+ <DatetimePicker.Toolbar>
131
+ <DatetimePicker.Button>取消</DatetimePicker.Button>
132
+ <DatetimePicker.Title>选择年月日小时</DatetimePicker.Title>
133
+ <DatetimePicker.Button>确认</DatetimePicker.Button>
134
+ </DatetimePicker.Toolbar>
135
+ </DatetimePicker>
136
+ )
137
+ }
138
+
139
+ function DateMinutePicker() {
140
+ const [minDate] = useState(new Date(2020, 0, 1, 0, 0))
141
+ const [maxDate] = useState(new Date(2025, 10, 1, 23, 59))
142
+ const [defaultValue] = useState(new Date())
143
+
144
+ return (
145
+ <DatetimePicker type="date-minute" min={minDate} max={maxDate} defaultValue={defaultValue}>
146
+ <DatetimePicker.Toolbar>
147
+ <DatetimePicker.Button>取消</DatetimePicker.Button>
148
+ <DatetimePicker.Title>选择年月日时分</DatetimePicker.Title>
149
+ <DatetimePicker.Button>确认</DatetimePicker.Button>
150
+ </DatetimePicker.Toolbar>
151
+ </DatetimePicker>
152
+ )
153
+ }
154
+
155
+ function TimePickerWithFilter() {
156
+ const [minDate] = useState(new Date(2020, 0, 1, 0, 0, 0))
157
+ const [maxDate] = useState(new Date(2020, 0, 1, 23, 59, 59))
158
+ const [defaultValue] = useState(new Date(2020, 0, 1, 12, 0, 0))
159
+
160
+ return (
161
+ <DatetimePicker
162
+ type="time"
163
+ min={minDate}
164
+ max={maxDate}
165
+ defaultValue={defaultValue}
166
+ filter={(type, options) => {
167
+ if (type === "minute") {
168
+ return options.filter((option) => Number(option) % 5 === 0)
169
+ }
170
+ return options
171
+ }}
172
+ >
173
+ <DatetimePicker.Toolbar>
174
+ <DatetimePicker.Button>取消</DatetimePicker.Button>
175
+ <DatetimePicker.Title>选项过滤器</DatetimePicker.Title>
176
+ <DatetimePicker.Button>确认</DatetimePicker.Button>
177
+ </DatetimePicker.Toolbar>
178
+ </DatetimePicker>
179
+ )
180
+ }
181
+
182
+ function DatePickerWithFields() {
183
+ const [minDate] = useState(new Date(2020, 0, 1))
184
+ const [maxDate] = useState(new Date(2025, 10, 1))
185
+ const [defaultValue] = useState(new Date(2021, 0, 17))
186
+ return (
187
+ <DatetimePicker
188
+ type="date"
189
+ fields={["month", "day", "year"]}
190
+ defaultValue={defaultValue}
191
+ min={minDate}
192
+ max={maxDate}
193
+ formatter={(type, val) => {
194
+ if (type === "year") {
195
+ return val + "年"
196
+ }
197
+ if (type === "month") {
198
+ return val + "月"
199
+ }
200
+ if (type === "day") {
201
+ return val + "日"
202
+ }
203
+ return val
204
+ }}
205
+ >
206
+ <DatetimePicker.Toolbar>
207
+ <DatetimePicker.Button>取消</DatetimePicker.Button>
208
+ <DatetimePicker.Title>自定义列排序</DatetimePicker.Title>
209
+ <DatetimePicker.Button>确认</DatetimePicker.Button>
210
+ </DatetimePicker.Toolbar>
211
+ </DatetimePicker>
212
+ )
213
+ }
214
+
215
+ export default function PickerDemo() {
216
+ return (
217
+ <Page title="DatetimePicker 时间选择" className="datetime-picker-demo">
218
+ <Block variant="card" title="选择年月日">
219
+ <CustomWrapper>
220
+ <DatePicker />
221
+ </CustomWrapper>
222
+ </Block>
223
+ <Block variant="card" title="选择年月">
224
+ <CustomWrapper>
225
+ <YearMonthPicker />
226
+ </CustomWrapper>
227
+ </Block>
228
+ <Block variant="card" title="选择月日">
229
+ <CustomWrapper>
230
+ <MonthDayPicker />
231
+ </CustomWrapper>
232
+ </Block>
233
+ <Block variant="card" title="选择时间">
234
+ <CustomWrapper>
235
+ <TimePicker />
236
+ </CustomWrapper>
237
+ </Block>
238
+ <Block variant="card" title="选择完整时间">
239
+ <CustomWrapper>
240
+ <DateTimePicker />
241
+ </CustomWrapper>
242
+ </Block>
243
+ <Block variant="card" title="选择年月日小时">
244
+ <CustomWrapper>
245
+ <DateHourPicker />
246
+ </CustomWrapper>
247
+ </Block>
248
+ <Block variant="card" title="选择年月日时分">
249
+ <CustomWrapper>
250
+ <DateMinutePicker />
251
+ </CustomWrapper>
252
+ </Block>
253
+ <Block variant="card" title="选项过滤器">
254
+ <CustomWrapper>
255
+ <TimePickerWithFilter />
256
+ </CustomWrapper>
257
+ </Block>
258
+ <Block variant="card" title="自定义列排序">
259
+ <CustomWrapper>
260
+ <DatePickerWithFields />
261
+ </CustomWrapper>
262
+ </Block>
263
+ </Page>
264
+ )
265
+ }
@@ -0,0 +1,66 @@
1
+ ## API
2
+
3
+ ### Dialog Props
4
+
5
+ | 参数 | 说明 | 类型 | 默认值 |
6
+ | ----------------------------- | ------------------------------------- | --------------------------------------------- | -------- |
7
+ | defaultOpen | 默认是否显示弹窗 | _boolean_ | - |
8
+ | open | 是否显示弹窗 | _boolean_ | - |
9
+ | children | 组件内容 | _ReactNode_ | - |
10
+ | backdrop `v0.6.0-alpha.0` | 遮罩层相关配置 | _boolean \| Omit<PopupBackdropProps, "open">_ | - |
11
+ | title `v0.6.0-alpha.0` | 标题 | _ReactNode_ | - |
12
+ | message `v0.6.0-alpha.0` | 文本内容,支持通过 `\n` 换行 | _ReactNode_ | - |
13
+ | messageAlign `v0.6.0-alpha.0` | 内容对齐方式,可选值为 `left` `right` | _string_ | `center` |
14
+ | confirm `v0.6.0-alpha.0` | 确认按钮 | _string \| ButtonProps_ | - |
15
+ | cancel `v0.6.0-alpha.0` | 取消按钮 | _string \| ButtonProps_ | - |
16
+
17
+ ### Dialog Event
18
+
19
+ | 事件名 | 说明 | 回调参数 |
20
+ | --------- | -------------- | -------- |
21
+ | onConfirm | 点击确认时触发 | - |
22
+ | onCancel | 点击取消时触发 | - |
23
+
24
+ ### Dialog.Header Props
25
+
26
+ | 参数 | 说明 | 类型 | 默认值 |
27
+ | -------- | -------- | ----------- | ------ |
28
+ | children | 标题内容 | _ReactNode_ | - |
29
+
30
+ ### Dialog.Content Props
31
+
32
+ | 参数 | 说明 | 类型 | 默认值 |
33
+ | -------- | ------------------------------------- | ----------- | -------- |
34
+ | align | 文本对齐方式,可选值为 `left` `right` | _string_ | `center` |
35
+ | children | 文本内容 | _ReactNode_ | - |
36
+
37
+ ### Dialog.Actions Props
38
+
39
+ | 参数 | 说明 | 类型 | 默认值 |
40
+ | -------- | ---------------------------- | ----------- | --------- |
41
+ | variant | 样式风格,可选值为 `rounded` | _string_ | `default` |
42
+ | children | 按钮内容 | _ReactNode_ | - |
43
+
44
+ ### Dialog Options
45
+
46
+ | 参数 | 说明 | 类型 | 默认值 |
47
+ | ------------------------- | ------------------------------------- | --------------------------------------------- | -------- |
48
+ | selector | 自定义节点选择器 | _string_ | `toast` |
49
+ | className | 自定义类名 | _string_ | - |
50
+ | style | 自定义样式 | _CSSProperties_ | - |
51
+ | title | 标题 | _ReactNode_ | - |
52
+ | message | 文本内容,支持通过 `\n` 换行 | _ReactNode_ | - |
53
+ | messageAlign | 内容对齐方式,可选值为 `left` `right` | _string_ | `center` |
54
+ | backdrop `v0.6.0-alpha.0` | 遮罩层相关配置 | _boolean \| Omit<PopupBackdropProps, "open">_ | - |
55
+ | confirm | 确认按钮 | _string \| ButtonProps_ | - |
56
+ | cancel | 取消按钮 | _string \| ButtonProps_ | - |
57
+ | onConfirm | 确认事件 | _() => void_ | - |
58
+ | onCancel | 取消事件 | _() => void_ | - |
59
+
60
+ ### Dialog Methods
61
+
62
+ | 方法名 | 参数 | 返回值 | 介绍 |
63
+ | -------------- | -------------------- | ------ | ---------------- |
64
+ | Dialog.open | _options \| message_ | - | 展示弹窗 |
65
+ | Dialog.alert | _options \| message_ | - | 展示消息提示弹窗 |
66
+ | Dialog.confirm | _options \| message_ | - | 展示消息确认弹窗 |
@@ -0,0 +1,292 @@
1
+ # Dialog 弹出框
2
+
3
+ ### 介绍
4
+
5
+ 弹出模态框,常用于消息提示、消息确认,或在当前页面内完成特定的交互操作,支持函数调用和组件调用两种方式。
6
+
7
+ ### 函数调用
8
+
9
+ 版本 >= `v0.6.0-alpha.0`可以直接调用。低版本需要手动在页面(page)里挂载一个 Dialog 组件并指定 id 为 `dialog`。
10
+
11
+ ```tsx
12
+ function ImperativeDialog() {
13
+ return (
14
+ <>
15
+ {/* <Dialog id="dialog" /> */}
16
+ <Cell
17
+ title="提示弹窗"
18
+ clickable
19
+ bordered
20
+ isLink
21
+ onClick={() =>
22
+ Dialog.alert({ title: "标题", message: "代码是写出来给人看的,附带能在机器上运行" })
23
+ }
24
+ />
25
+ </>
26
+ )
27
+ }
28
+ ```
29
+
30
+ ### 组件调用
31
+
32
+ 通过组件组合的方式调用 Dialog。
33
+
34
+ ```tsx
35
+ <Dialog
36
+ open
37
+ title="标题"
38
+ message="代码是写出来给人看的,附带能在机器上运行"
39
+ messageAlign="left"
40
+ confirm="ok"
41
+ cancel="cancel"
42
+ onConfirm={() => console.log("confirm")}
43
+ onCancel={() => console.log("cancel")}
44
+ />
45
+ ```
46
+
47
+ ```tsx
48
+ function TextDialog() {
49
+ const [open, setOpen] = useState(false)
50
+ return (
51
+ <>
52
+ <Cell title="提示弹窗" clickable bordered isLink onClick={() => setOpen(true)} />
53
+ <Dialog open={open} onClose={setOpen}>
54
+ <Dialog.Header>标题</Dialog.Header>
55
+ <Dialog.Content>代码是写出来给人看的,附带能在机器上运行</Dialog.Content>
56
+ <Dialog.Actions>
57
+ <Button onClick={() => setOpen(false)}>取消</Button>
58
+ <Button onClick={() => setOpen(false)}>确认</Button>
59
+ </Dialog.Actions>
60
+ </Dialog>
61
+ </>
62
+ )
63
+ }
64
+ ```
65
+
66
+ ## 代码演示
67
+
68
+ ### 消息提示
69
+
70
+ 用于提示一些消息,只包含一个确认按钮。
71
+
72
+ ```ts
73
+ Dialog.alert("生命远不止连轴转和忙到极限,人类的体验远比这辽阔、丰富得多。")
74
+ ```
75
+
76
+ ```tsx
77
+ function BasicDialog() {
78
+ const [open, setOpen] = useState(false)
79
+ return (
80
+ <>
81
+ <Cell title="提示弹窗" clickable bordered isLink onClick={() => setOpen(true)} />
82
+ <Dialog open={open} onClose={setOpen}>
83
+ <Dialog.Header>标题</Dialog.Header>
84
+ <Dialog.Content>代码是写出来给人看的,附带能在机器上运行</Dialog.Content>
85
+ <Dialog.Actions>
86
+ <Button onClick={() => setOpen(false)}>确认</Button>
87
+ </Dialog.Actions>
88
+ </Dialog>
89
+ </>
90
+ )
91
+ }
92
+ ```
93
+
94
+ ### 消息确认
95
+
96
+ 用于确认消息,包含取消和确认按钮。
97
+
98
+ ```ts
99
+ Dialog.confirm({ title: "标题", message: "代码是写出来给人看的,附带能在机器上运行" })
100
+ ```
101
+
102
+ ```tsx
103
+ function ConfirmDialog() {
104
+ const [open, setOpen] = useState(false)
105
+ return (
106
+ <>
107
+ <Cell title="确认弹窗" clickable bordered isLink onClick={() => setOpen(true)} />
108
+ <Dialog open={open} onClose={setOpen}>
109
+ <Dialog.Header>标题</Dialog.Header>
110
+ <Dialog.Content>代码是写出来给人看的,附带能在机器上运行</Dialog.Content>
111
+ <Dialog.Actions>
112
+ <Button onClick={() => setOpen(false)}>取消</Button>
113
+ <Button onClick={() => setOpen(false)}>确认</Button>
114
+ </Dialog.Actions>
115
+ </Dialog>
116
+ </>
117
+ )
118
+ }
119
+ ```
120
+
121
+ ### 圆角按钮风格
122
+
123
+ 设置 `theme` 为 `rounded` 可以展示圆角按钮风格的弹窗
124
+
125
+ ```ts
126
+ Dialog.confirm({
127
+ theme: "rounded",
128
+ title: "标题",
129
+ message: "代码是写出来给人看的,附带能在机器上运行",
130
+ })
131
+ ```
132
+
133
+ 将 `actions.variant ` 选项设置为 `rounded` 可以展示圆角按钮风格的弹窗。
134
+
135
+ ```tsx
136
+ function RoundedDialog() {
137
+ const [open, setOpen] = useState(false)
138
+ return (
139
+ <>
140
+ <Cell title="提示弹窗" clickable bordered isLink onClick={() => setOpen(true)} />
141
+ <Dialog open={open} onClose={setOpen}>
142
+ <Dialog.Header>标题</Dialog.Header>
143
+ <Dialog.Content>代码是写出来给人看的,附带能在机器上运行</Dialog.Content>
144
+ <Dialog.Actions variant="rounded">
145
+ <Button onClick={() => setOpen(false)}>取消</Button>
146
+ <Button onClick={() => setOpen(false)}>确认</Button>
147
+ </Dialog.Actions>
148
+ </Dialog>
149
+ </>
150
+ )
151
+ }
152
+ ```
153
+
154
+ ### 异步关闭
155
+
156
+ ```tsx
157
+ function AsyncCloseDialog() {
158
+ return (
159
+ <>
160
+ <Cell
161
+ title="异步关闭"
162
+ clickable
163
+ bordered
164
+ isLink
165
+ onClick={() =>
166
+ Dialog.confirm({
167
+ title: "标题",
168
+ message: "如果解决方法是丑陋的,那就肯定还有更好的解决方法,只是还没有发现而已。",
169
+ async onBeforeClose(action) {
170
+ return new Promise((resolve) => {
171
+ setTimeout(() => {
172
+ // action !== 'confirm' 拦截取消操作
173
+ resolve(action === "confirm")
174
+ }, 1000)
175
+ })
176
+ },
177
+ onCancel() {
178
+ console.log("cancel")
179
+ },
180
+ onConfirm() {
181
+ console.log("confirm")
182
+ },
183
+ })
184
+ }
185
+ />
186
+ </>
187
+ )
188
+ }
189
+ ```
190
+
191
+ ## API
192
+
193
+ ### Dialog Props
194
+
195
+ | 参数 | 说明 | 类型 | 默认值 |
196
+ | ----------------------------- | ------------------------------------- | --------------------------------------------- | -------- |
197
+ | defaultOpen | 默认是否显示弹窗 | _boolean_ | - |
198
+ | open | 是否显示弹窗 | _boolean_ | - |
199
+ | children | 组件内容 | _ReactNode_ | - |
200
+ | backdrop `v0.6.0-alpha.0` | 遮罩层相关配置 | _boolean \| Omit<PopupBackdropProps, "open">_ | - |
201
+ | title `v0.6.0-alpha.0` | 标题 | _ReactNode_ | - |
202
+ | message `v0.6.0-alpha.0` | 文本内容,支持通过 `\n` 换行 | _ReactNode_ | - |
203
+ | messageAlign `v0.6.0-alpha.0` | 内容对齐方式,可选值为 `left` `right` | _string_ | `center` |
204
+ | confirm `v0.6.0-alpha.0` | 确认按钮 | _string \| ButtonProps_ | - |
205
+ | cancel `v0.6.0-alpha.0` | 取消按钮 | _string \| ButtonProps_ | - |
206
+
207
+ ### Dialog Event
208
+
209
+ | 事件名 | 说明 | 回调参数 |
210
+ | --------- | -------------- | -------- |
211
+ | onConfirm | 点击确认时触发 | - |
212
+ | onCancel | 点击取消时触发 | - |
213
+
214
+ ### Dialog.Header Props
215
+
216
+ | 参数 | 说明 | 类型 | 默认值 |
217
+ | -------- | -------- | ----------- | ------ |
218
+ | children | 标题内容 | _ReactNode_ | - |
219
+
220
+ ### Dialog.Content Props
221
+
222
+ | 参数 | 说明 | 类型 | 默认值 |
223
+ | -------- | ------------------------------------- | ----------- | -------- |
224
+ | align | 文本对齐方式,可选值为 `left` `right` | _string_ | `center` |
225
+ | children | 文本内容 | _ReactNode_ | - |
226
+
227
+ ### Dialog.Actions Props
228
+
229
+ | 参数 | 说明 | 类型 | 默认值 |
230
+ | -------- | ---------------------------- | ----------- | --------- |
231
+ | variant | 样式风格,可选值为 `rounded` | _string_ | `default` |
232
+ | children | 按钮内容 | _ReactNode_ | - |
233
+
234
+ ### Dialog Options
235
+
236
+ | 参数 | 说明 | 类型 | 默认值 |
237
+ | ------------------------- | ------------------------------------- | --------------------------------------------- | -------- |
238
+ | selector | 自定义节点选择器 | _string_ | `toast` |
239
+ | className | 自定义类名 | _string_ | - |
240
+ | style | 自定义样式 | _CSSProperties_ | - |
241
+ | title | 标题 | _ReactNode_ | - |
242
+ | message | 文本内容,支持通过 `\n` 换行 | _ReactNode_ | - |
243
+ | messageAlign | 内容对齐方式,可选值为 `left` `right` | _string_ | `center` |
244
+ | backdrop `v0.6.0-alpha.0` | 遮罩层相关配置 | _boolean \| Omit<PopupBackdropProps, "open">_ | - |
245
+ | confirm | 确认按钮 | _string \| ButtonProps_ | - |
246
+ | cancel | 取消按钮 | _string \| ButtonProps_ | - |
247
+ | onConfirm | 确认事件 | _() => void_ | - |
248
+ | onCancel | 取消事件 | _() => void_ | - |
249
+
250
+ ### Dialog Methods
251
+
252
+ | 方法名 | 参数 | 返回值 | 介绍 |
253
+ | -------------- | -------------------- | ------ | ---------------- |
254
+ | Dialog.open | _options \| message_ | - | 展示弹窗 |
255
+ | Dialog.alert | _options \| message_ | - | 展示消息提示弹窗 |
256
+ | Dialog.confirm | _options \| message_ | - | 展示消息确认弹窗 |
257
+
258
+ ## 主题定制
259
+
260
+ ### 样式变量
261
+
262
+ 组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 [ConfigProvider](/components/config-provider/) 组件。
263
+
264
+ | 名称 | 默认值 | 描述 |
265
+ | ------------------------------------------------ | ------------------------------------------------------- | ---- |
266
+ | --dialog-width | _320px \* $hd_ | - |
267
+ | --dialog-small-screen-width | _90%_ | - |
268
+ | --dialog-font-size | _var(--font-size-lg)_ | - |
269
+ | --dialog-transition | _var(--animation-duration-base)_ | - |
270
+ | --dialog-border-radius | _16px \* $hd_ | - |
271
+ | --dialog-background-color | _var(--white)_ | - |
272
+ | --dialog-header-font-weight | _var(--font-weight-bold)_ | - |
273
+ | --dialog-header-line-height | _24px \* $hd_ | - |
274
+ | --dialog-header-padding-top | _26px \* $hd_ | - |
275
+ | --dialog-header-isolated-padding | _var(--padding-lg) 0_ | - |
276
+ | --dialog-message-padding | _26px \* $hd var(--padding-lg)_ | - |
277
+ | --dialog-message-font-size | _var(--font-size-md)_ | - |
278
+ | --dialog-message-line-height | _var(--line-height-md)_ | - |
279
+ | --dialog-message-font-weight | _var(--dialog-message-font-weight)_ | - |
280
+ | --dialog-message-max-height | _60vh_ | - |
281
+ | --dialog-has-title-message-color | _var(--gray-7)_ | - |
282
+ | --dialog-has-title-message-padding-top | _var(--padding-xs)_ | - |
283
+ | --dialog-has-title-message-font-weight | _var(--dialog-has-title-message-font-weight)_ | - |
284
+ | --dialog-button-height | _48px \* $hd_ | - |
285
+ | --dialog-confirm-button-color | _var(--primary-color)_ | - |
286
+ | --dialog-footer-rounded-padding | _var(--padding-xs) var(--padding-lg) var(--padding-md)_ | - |
287
+ | --dialog-rounded-button-active-color | _var(--white)_ | - |
288
+ | --dialog-rounded-button-font-size | _var(--font-size-md)_ | - |
289
+ | --dialog-rounded-button-height | _36px \* $hd_ | - |
290
+ | --dialog-rounded-button-border-radius | _var(--border-radius-max)_ | - |
291
+ | --dialog-rounded-confirm-button-background-color | _var(--gradient-red)_ | - |
292
+ | --dialog-rounded-cancel-button-background-color | _var(--gradient-orange)_ | - |