@a2simcode/ui 0.0.46 → 0.0.47

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 (331) hide show
  1. package/.cursor/skills/ui-component-helper/README.md +43 -0
  2. package/.cursor/skills/ui-component-helper/SKILL.md +81 -0
  3. package/docs/components/autocomplete.md +89 -0
  4. package/docs/components/barcode.md +101 -0
  5. package/docs/components/button-select.md +24 -0
  6. package/docs/components/button.md +117 -0
  7. package/docs/components/buttons.md +119 -0
  8. package/docs/components/cascader-select.md +114 -0
  9. package/docs/components/checkbox.md +114 -0
  10. package/docs/components/code-mirror.md +85 -0
  11. package/docs/components/collapse.md +26 -0
  12. package/docs/components/comp.md +71 -0
  13. package/docs/components/count-up.md +24 -0
  14. package/docs/components/count.md +24 -0
  15. package/docs/components/data-panel.md +24 -0
  16. package/docs/components/dialog-full.md +112 -0
  17. package/docs/components/dialog.md +127 -0
  18. package/docs/components/divider.md +24 -0
  19. package/docs/components/drawer.md +127 -0
  20. package/docs/components/dynamic-layer.md +118 -0
  21. package/docs/components/echarts.md +72 -0
  22. package/docs/components/editor.md +24 -0
  23. package/docs/components/form.md +27 -0
  24. package/docs/components/guid.md +39 -0
  25. package/docs/components/hpanel.md +24 -0
  26. package/docs/components/icon.md +56 -0
  27. package/docs/components/input-button.md +24 -0
  28. package/docs/components/input-code.md +24 -0
  29. package/docs/components/input-color.md +114 -0
  30. package/docs/components/input-layer.md +26 -0
  31. package/docs/components/input-rows.md +370 -0
  32. package/docs/components/input-tag.md +50 -0
  33. package/docs/components/input.md +129 -0
  34. package/docs/components/layer-form.md +61 -0
  35. package/docs/components/layer.md +127 -0
  36. package/docs/components/layout.md +132 -0
  37. package/docs/components/map.md +24 -0
  38. package/docs/components/menu.md +121 -0
  39. package/docs/components/meta/autocomplete.ts +335 -0
  40. package/docs/components/meta/barcode.ts +216 -0
  41. package/docs/components/meta/button-select.ts +94 -0
  42. package/docs/components/meta/button.ts +123 -0
  43. package/docs/components/meta/buttons.ts +56 -0
  44. package/docs/components/meta/cascader-select.ts +328 -0
  45. package/docs/components/meta/checkbox.ts +194 -0
  46. package/docs/components/meta/code-mirror.ts +108 -0
  47. package/docs/components/meta/collapse.ts +52 -0
  48. package/docs/components/meta/comp.ts +224 -0
  49. package/docs/components/meta/count-up.ts +126 -0
  50. package/docs/components/meta/count.ts +113 -0
  51. package/docs/components/meta/data-panel.ts +34 -0
  52. package/docs/components/meta/dialog-full.ts +133 -0
  53. package/docs/components/meta/dialog.ts +175 -0
  54. package/docs/components/meta/divider.ts +66 -0
  55. package/docs/components/meta/drawer.ts +158 -0
  56. package/docs/components/meta/dynamic-layer.ts +99 -0
  57. package/docs/components/meta/echarts.ts +64 -0
  58. package/docs/components/meta/editor.ts +67 -0
  59. package/docs/components/meta/form-item.ts +50 -0
  60. package/docs/components/meta/form.ts +160 -0
  61. package/docs/components/meta/guid.ts +42 -0
  62. package/docs/components/meta/hpanel.ts +20 -0
  63. package/docs/components/meta/icon.ts +68 -0
  64. package/docs/components/meta/input-button.ts +165 -0
  65. package/docs/components/meta/input-code.ts +151 -0
  66. package/docs/components/meta/input-color.ts +243 -0
  67. package/docs/components/meta/input-layer.ts +336 -0
  68. package/docs/components/meta/input-rows.ts +113 -0
  69. package/docs/components/meta/input-tag.ts +112 -0
  70. package/docs/components/meta/input.ts +411 -0
  71. package/docs/components/meta/layer-form.ts +56 -0
  72. package/docs/components/meta/layer.ts +122 -0
  73. package/docs/components/meta/layout.ts +101 -0
  74. package/docs/components/meta/map.ts +68 -0
  75. package/docs/components/meta/menu.ts +43 -0
  76. package/docs/components/meta/number.ts +296 -0
  77. package/docs/components/meta/page.ts +67 -0
  78. package/docs/components/meta/radio.ts +55 -0
  79. package/docs/components/meta/rate.ts +124 -0
  80. package/docs/components/meta/select.ts +279 -0
  81. package/docs/components/meta/slider-captcha.ts +70 -0
  82. package/docs/components/meta/slider.ts +270 -0
  83. package/docs/components/meta/switch.ts +272 -0
  84. package/docs/components/meta/table-panel.ts +154 -0
  85. package/docs/components/meta/table.ts +328 -0
  86. package/docs/components/meta/tabs.ts +136 -0
  87. package/docs/components/meta/title.ts +80 -0
  88. package/docs/components/meta/tree.ts +242 -0
  89. package/docs/components/meta/upload.ts +186 -0
  90. package/docs/components/meta/workflow-viewer.ts +55 -0
  91. package/docs/components/meta/workflow.ts +113 -0
  92. package/docs/components/number.md +124 -0
  93. package/docs/components/page.md +42 -0
  94. package/docs/components/radio.md +87 -0
  95. package/docs/components/rate.md +71 -0
  96. package/docs/components/select.md +133 -0
  97. package/docs/components/slider-captcha.md +41 -0
  98. package/docs/components/slider.md +101 -0
  99. package/docs/components/switch.md +90 -0
  100. package/docs/components/table-panel.md +199 -0
  101. package/docs/components/table.md +202 -0
  102. package/docs/components/tabs.md +26 -0
  103. package/docs/components/title.md +24 -0
  104. package/docs/components/tree.md +207 -0
  105. package/docs/components/upload.md +117 -0
  106. package/docs/components/workflow-viewer.md +21 -0
  107. package/docs/components/workflow.md +21 -0
  108. package/docs/examples/autocomplete/advanced.vue +35 -0
  109. package/docs/examples/autocomplete/basic.vue +32 -0
  110. package/docs/examples/autocomplete/clearable.vue +33 -0
  111. package/docs/examples/autocomplete/custom-template.vue +49 -0
  112. package/docs/examples/autocomplete/disabled.vue +33 -0
  113. package/docs/examples/autocomplete/icon.vue +37 -0
  114. package/docs/examples/barcode/all-types.vue +380 -0
  115. package/docs/examples/barcode/basic.vue +14 -0
  116. package/docs/examples/barcode/props-appearance.vue +243 -0
  117. package/docs/examples/barcode/props-geometry.vue +143 -0
  118. package/docs/examples/barcode/props-logic.vue +216 -0
  119. package/docs/examples/barcode/props-symbology.vue +199 -0
  120. package/docs/examples/barcode/props-text.vue +268 -0
  121. package/docs/examples/button/basic.vue +7 -0
  122. package/docs/examples/button/danger-ghost.vue +17 -0
  123. package/docs/examples/button/disabled.vue +10 -0
  124. package/docs/examples/button/loading.vue +6 -0
  125. package/docs/examples/button/shape.vue +7 -0
  126. package/docs/examples/button/size.vue +14 -0
  127. package/docs/examples/button/type.vue +9 -0
  128. package/docs/examples/button-select/basic.vue +19 -0
  129. package/docs/examples/buttons/basic.vue +45 -0
  130. package/docs/examples/buttons/disabled.vue +36 -0
  131. package/docs/examples/buttons/dropdown.vue +63 -0
  132. package/docs/examples/buttons/group.vue +52 -0
  133. package/docs/examples/buttons/link.vue +47 -0
  134. package/docs/examples/buttons/popup.vue +39 -0
  135. package/docs/examples/buttons/size.vue +45 -0
  136. package/docs/examples/cascader-select/basic.vue +28 -0
  137. package/docs/examples/cascader-select/clearable.vue +34 -0
  138. package/docs/examples/cascader-select/disabled.vue +43 -0
  139. package/docs/examples/cascader-select/filterable.vue +37 -0
  140. package/docs/examples/cascader-select/methods.vue +84 -0
  141. package/docs/examples/cascader-select/multiple.vue +38 -0
  142. package/docs/examples/cascader-select/slot.vue +45 -0
  143. package/docs/examples/checkbox/basic.vue +18 -0
  144. package/docs/examples/checkbox/button.vue +19 -0
  145. package/docs/examples/checkbox/color.vue +25 -0
  146. package/docs/examples/checkbox/disabled.vue +17 -0
  147. package/docs/examples/checkbox/min-max.vue +20 -0
  148. package/docs/examples/checkbox/mixed.vue +56 -0
  149. package/docs/examples/checkbox/size.vue +28 -0
  150. package/docs/examples/code-mirror/basic.vue +11 -0
  151. package/docs/examples/code-mirror/events.vue +42 -0
  152. package/docs/examples/code-mirror/height.vue +25 -0
  153. package/docs/examples/code-mirror/mode.vue +33 -0
  154. package/docs/examples/code-mirror/readonly.vue +14 -0
  155. package/docs/examples/collapse/basic.vue +82 -0
  156. package/docs/examples/comp/basic.vue +7 -0
  157. package/docs/examples/comp/collapse.vue +38 -0
  158. package/docs/examples/comp/tabs.vue +38 -0
  159. package/docs/examples/count/basic.vue +54 -0
  160. package/docs/examples/count-up/basic.vue +89 -0
  161. package/docs/examples/data-panel/basic.vue +110 -0
  162. package/docs/examples/dialog/basic.vue +36 -0
  163. package/docs/examples/dialog/custom-buttons.vue +44 -0
  164. package/docs/examples/dialog/fullscreen.vue +23 -0
  165. package/docs/examples/dialog/no-mask.vue +17 -0
  166. package/docs/examples/dialog/size.vue +44 -0
  167. package/docs/examples/dialog/steps.vue +57 -0
  168. package/docs/examples/dialog-full/basic.vue +29 -0
  169. package/docs/examples/dialog-full/custom-buttons.vue +45 -0
  170. package/docs/examples/dialog-full/no-buttons.vue +18 -0
  171. package/docs/examples/dialog-full/no-header.vue +27 -0
  172. package/docs/examples/dialog-full/steps.vue +71 -0
  173. package/docs/examples/divider/basic.vue +52 -0
  174. package/docs/examples/drawer/basic.vue +35 -0
  175. package/docs/examples/drawer/custom-buttons.vue +34 -0
  176. package/docs/examples/drawer/direction.vue +47 -0
  177. package/docs/examples/drawer/mask.vue +36 -0
  178. package/docs/examples/drawer/no-buttons.vue +20 -0
  179. package/docs/examples/drawer/size.vue +28 -0
  180. package/docs/examples/dynamic-layer/basic.vue +33 -0
  181. package/docs/examples/dynamic-layer/custom-buttons.vue +43 -0
  182. package/docs/examples/dynamic-layer/form.vue +73 -0
  183. package/docs/examples/dynamic-layer/steps.vue +52 -0
  184. package/docs/examples/dynamic-layer/types.vue +40 -0
  185. package/docs/examples/echarts/basic.vue +31 -0
  186. package/docs/examples/echarts/dynamic.vue +43 -0
  187. package/docs/examples/echarts/line.vue +46 -0
  188. package/docs/examples/echarts/pie.vue +44 -0
  189. package/docs/examples/editor/basic.vue +15 -0
  190. package/docs/examples/form/basic.vue +224 -0
  191. package/docs/examples/guid/basic.vue +10 -0
  192. package/docs/examples/guid/size.vue +13 -0
  193. package/docs/examples/hpanel/basic.vue +79 -0
  194. package/docs/examples/icon/basic.vue +9 -0
  195. package/docs/examples/icon/rotate-flip.vue +9 -0
  196. package/docs/examples/icon/size.vue +7 -0
  197. package/docs/examples/input/basic.vue +10 -0
  198. package/docs/examples/input/clearable.vue +12 -0
  199. package/docs/examples/input/disabled.vue +6 -0
  200. package/docs/examples/input/icon.vue +23 -0
  201. package/docs/examples/input/password.vue +18 -0
  202. package/docs/examples/input/size.vue +13 -0
  203. package/docs/examples/input/textarea.vue +25 -0
  204. package/docs/examples/input/word-limit.vue +28 -0
  205. package/docs/examples/input-button/basic.vue +33 -0
  206. package/docs/examples/input-code/basic.vue +29 -0
  207. package/docs/examples/input-color/basic.vue +10 -0
  208. package/docs/examples/input-color/disabled.vue +13 -0
  209. package/docs/examples/input-color/format.vue +17 -0
  210. package/docs/examples/input-color/no-alpha.vue +13 -0
  211. package/docs/examples/input-color/only-button.vue +15 -0
  212. package/docs/examples/input-color/predefine.vue +31 -0
  213. package/docs/examples/input-color/size.vue +15 -0
  214. package/docs/examples/input-layer/basic.vue +69 -0
  215. package/docs/examples/input-rows/basic.vue +73 -0
  216. package/docs/examples/input-rows/drag.vue +48 -0
  217. package/docs/examples/input-rows/layer-form.vue +85 -0
  218. package/docs/examples/input-rows/nested.vue +91 -0
  219. package/docs/examples/input-tag/basic.vue +27 -0
  220. package/docs/examples/input-tag/colors.vue +23 -0
  221. package/docs/examples/input-tag/readonly.vue +17 -0
  222. package/docs/examples/layer/basic.vue +43 -0
  223. package/docs/examples/layer/custom-buttons.vue +61 -0
  224. package/docs/examples/layer/drawer.vue +37 -0
  225. package/docs/examples/layer/full.vue +38 -0
  226. package/docs/examples/layer/modal.vue +34 -0
  227. package/docs/examples/layer/steps.vue +46 -0
  228. package/docs/examples/layer-form/basic.vue +76 -0
  229. package/docs/examples/layer-form/config.vue +82 -0
  230. package/docs/examples/layer-form/size.vue +72 -0
  231. package/docs/examples/layout/basic.vue +36 -0
  232. package/docs/examples/layout/custom-size.vue +50 -0
  233. package/docs/examples/layout/disable-move.vue +37 -0
  234. package/docs/examples/layout/hide-mid-when-narrow.vue +96 -0
  235. package/docs/examples/layout/min-size.vue +73 -0
  236. package/docs/examples/layout/percent-size.vue +80 -0
  237. package/docs/examples/layout/simple.vue +22 -0
  238. package/docs/examples/layout/top-side.vue +34 -0
  239. package/docs/examples/map/basic.vue +22 -0
  240. package/docs/examples/menu/basic.vue +58 -0
  241. package/docs/examples/menu/collapsed.vue +49 -0
  242. package/docs/examples/menu/horizontal.vue +44 -0
  243. package/docs/examples/menu/selection-test.vue +104 -0
  244. package/docs/examples/menu/theme.vue +46 -0
  245. package/docs/examples/menu/vertical.vue +46 -0
  246. package/docs/examples/number/advanced.vue +143 -0
  247. package/docs/examples/number/basic.vue +63 -0
  248. package/docs/examples/number/disabled.vue +49 -0
  249. package/docs/examples/number/size.vue +42 -0
  250. package/docs/examples/number/slots.vue +123 -0
  251. package/docs/examples/number/step-strictly.vue +41 -0
  252. package/docs/examples/number/step.vue +47 -0
  253. package/docs/examples/page/basic.vue +41 -0
  254. package/docs/examples/page/init.vue +87 -0
  255. package/docs/examples/radio/basic.vue +17 -0
  256. package/docs/examples/radio/button.vue +17 -0
  257. package/docs/examples/radio/color.vue +18 -0
  258. package/docs/examples/radio/disabled.vue +17 -0
  259. package/docs/examples/radio/size.vue +29 -0
  260. package/docs/examples/rate/basic.vue +24 -0
  261. package/docs/examples/rate/half.vue +24 -0
  262. package/docs/examples/rate/readonly.vue +11 -0
  263. package/docs/examples/rate/text.vue +32 -0
  264. package/docs/examples/select/basic.vue +16 -0
  265. package/docs/examples/select/clearable.vue +22 -0
  266. package/docs/examples/select/disabled.vue +31 -0
  267. package/docs/examples/select/filterable.vue +24 -0
  268. package/docs/examples/select/group.vue +23 -0
  269. package/docs/examples/select/icon.vue +16 -0
  270. package/docs/examples/select/multiple.vue +18 -0
  271. package/docs/examples/select/size.vue +39 -0
  272. package/docs/examples/slider/basic.vue +42 -0
  273. package/docs/examples/slider/disabled.vue +17 -0
  274. package/docs/examples/slider/marks.vue +30 -0
  275. package/docs/examples/slider/size.vue +37 -0
  276. package/docs/examples/slider/tooltip.vue +36 -0
  277. package/docs/examples/slider/vertical.vue +26 -0
  278. package/docs/examples/slider-captcha/basic.vue +44 -0
  279. package/docs/examples/slider-captcha/custom.vue +48 -0
  280. package/docs/examples/switch/basic.vue +16 -0
  281. package/docs/examples/switch/disabled.vue +13 -0
  282. package/docs/examples/switch/loading.vue +13 -0
  283. package/docs/examples/switch/size.vue +15 -0
  284. package/docs/examples/switch/text.vue +13 -0
  285. package/docs/examples/table/actions.vue +116 -0
  286. package/docs/examples/table/add-row.vue +103 -0
  287. package/docs/examples/table/basic.vue +168 -0
  288. package/docs/examples/table/editable.vue +261 -0
  289. package/docs/examples/table/field-selection.vue +87 -0
  290. package/docs/examples/table/frozen-column.vue +140 -0
  291. package/docs/examples/table/height-mode.vue +99 -0
  292. package/docs/examples/table/multiple.vue +178 -0
  293. package/docs/examples/table/pagination.vue +151 -0
  294. package/docs/examples/table/single-selection.vue +64 -0
  295. package/docs/examples/table/tree-column.vue +119 -0
  296. package/docs/examples/table/tree-data.vue +141 -0
  297. package/docs/examples/table-panel/basic.vue +228 -0
  298. package/docs/examples/table-panel/batch-operations.vue +285 -0
  299. package/docs/examples/table-panel/filter.vue +209 -0
  300. package/docs/examples/table-panel/multiple-selection.vue +243 -0
  301. package/docs/examples/table-panel/pagination.vue +133 -0
  302. package/docs/examples/tabs/basic.vue +98 -0
  303. package/docs/examples/title/basic.vue +80 -0
  304. package/docs/examples/tree/accordion.vue +46 -0
  305. package/docs/examples/tree/basic.vue +50 -0
  306. package/docs/examples/tree/buttons.vue +53 -0
  307. package/docs/examples/tree/checkable.vue +52 -0
  308. package/docs/examples/tree/custom-keys.vue +39 -0
  309. package/docs/examples/tree/default-expanded.vue +52 -0
  310. package/docs/examples/tree/draggable.vue +29 -0
  311. package/docs/examples/tree/expand-on-click.vue +39 -0
  312. package/docs/examples/tree/flat-data.vue +20 -0
  313. package/docs/examples/tree/icon.vue +40 -0
  314. package/docs/examples/tree/load-data.vue +37 -0
  315. package/docs/examples/tree/methods.vue +74 -0
  316. package/docs/examples/tree/theme.vue +33 -0
  317. package/docs/examples/upload/accept.vue +31 -0
  318. package/docs/examples/upload/basic.vue +12 -0
  319. package/docs/examples/upload/drag.vue +11 -0
  320. package/docs/examples/upload/image.vue +17 -0
  321. package/docs/examples/upload/limit.vue +20 -0
  322. package/docs/examples/upload/multiple.vue +17 -0
  323. package/docs/examples/upload/readonly.vue +17 -0
  324. package/docs/examples/utils/cipher.vue +160 -0
  325. package/docs/examples/utils/common.vue +153 -0
  326. package/docs/examples/utils/date.vue +56 -0
  327. package/docs/examples/utils/dom.vue +52 -0
  328. package/docs/examples/utils/is.vue +70 -0
  329. package/docs/examples/workflow/basic.vue +265 -0
  330. package/docs/examples/workflow-viewer/basic.vue +248 -0
  331. package/package.json +6 -2
@@ -0,0 +1,129 @@
1
+ # Input 输入框
2
+
3
+ 通过鼠标或键盘输入字符。
4
+
5
+ ## 基础用法
6
+
7
+ <Demo :source-code="inputBasicCode">
8
+ <template #source>
9
+ <input-basic />
10
+ </template>
11
+ <template #description>
12
+ 使用 v-model 实现双向数据绑定。
13
+ </template>
14
+ </Demo>
15
+
16
+ ## 不同尺寸
17
+
18
+ Input 组件提供三种尺寸。
19
+
20
+ <Demo :source-code="inputSizeCode">
21
+ <template #source>
22
+ <input-size />
23
+ </template>
24
+ <template #description>
25
+ 使用 size 属性改变输入框大小。除了默认大小外,还有另外两个选项: large, small。
26
+ </template>
27
+ </Demo>
28
+
29
+ ## 禁用和只读
30
+
31
+ 通过 `disabled` 和 `readonly` 属性指定输入框的状态。
32
+
33
+ <Demo :source-code="inputDisabledCode">
34
+ <template #source>
35
+ <input-disabled />
36
+ </template>
37
+ <template #description>
38
+ 通过 disabled 属性指定是否禁用 input 组件,通过 readonly 属性指定是否只读。
39
+ </template>
40
+ </Demo>
41
+
42
+ ## 可清除
43
+
44
+ 使用 `clearable` 属性即可得到一个可清除的输入框。
45
+
46
+ <Demo :source-code="inputClearableCode">
47
+ <template #source>
48
+ <input-clearable />
49
+ </template>
50
+ <template #description>
51
+ 设置 `clearable` 属性为 `true` 即可显示清除按钮。
52
+ </template>
53
+ </Demo>
54
+
55
+ ## 密码框
56
+
57
+ 使用 `show-password` 属性即可得到一个可切换显示隐藏的密码框。
58
+
59
+ <Demo :source-code="inputPasswordCode">
60
+ <template #source>
61
+ <input-password />
62
+ </template>
63
+ <template #description>
64
+ 设置 `show-password` 属性为 `true` 即可显示密码切换图标。
65
+ </template>
66
+ </Demo>
67
+
68
+ ## 字数统计
69
+
70
+ 设置 `show-word-limit` 属性来展示字数统计。
71
+
72
+ <Demo :source-code="inputWordLimitCode">
73
+ <template #source>
74
+ <input-word-limit />
75
+ </template>
76
+ <template #description>
77
+ 使用 `maxlength` 和 `show-word-limit` 属性来限制输入字数。通过 `word-limit-position` 可以设置字数统计的位置。
78
+ </template>
79
+ </Demo>
80
+
81
+ ## 文本域
82
+
83
+ 用于输入多行文本信息可缩放的输入框。添加 `type="textarea"` 属性即可将输入框转换为文本域。
84
+
85
+ <Demo :source-code="inputTextareaCode">
86
+ <template #source>
87
+ <input-textarea />
88
+ </template>
89
+ <template #description>
90
+ 通过 `rows` 控制文本域行数,或使用 `autosize` 属性设置自适应高度。
91
+ </template>
92
+ </Demo>
93
+
94
+ ## 带图标的输入框
95
+
96
+ 可以通过 `prefix-icon` 和 `suffix-icon` 属性在输入框中显示图标。
97
+
98
+ <Demo :source-code="inputIconCode">
99
+ <template #source>
100
+ <input-icon />
101
+ </template>
102
+ <template #description>
103
+ 使用 `prefix-icon` 设置前缀图标,使用 `suffix-icon` 设置后缀图标。
104
+ </template>
105
+ </Demo>
106
+
107
+ ## API
108
+
109
+ <ApiTable :data="inputApi" componentName="input" />
110
+
111
+ <script setup>
112
+ import InputBasic from '../examples/input/basic.vue'
113
+ import InputSize from '../examples/input/size.vue'
114
+ import InputDisabled from '../examples/input/disabled.vue'
115
+ import InputClearable from '../examples/input/clearable.vue'
116
+ import InputPassword from '../examples/input/password.vue'
117
+ import InputWordLimit from '../examples/input/word-limit.vue'
118
+ import InputTextarea from '../examples/input/textarea.vue'
119
+ import InputIcon from '../examples/input/icon.vue'
120
+ import inputApi from './meta/input'
121
+ import inputBasicCode from '../examples/input/basic.vue?raw'
122
+ import inputSizeCode from '../examples/input/size.vue?raw'
123
+ import inputDisabledCode from '../examples/input/disabled.vue?raw'
124
+ import inputClearableCode from '../examples/input/clearable.vue?raw'
125
+ import inputPasswordCode from '../examples/input/password.vue?raw'
126
+ import inputWordLimitCode from '../examples/input/word-limit.vue?raw'
127
+ import inputTextareaCode from '../examples/input/textarea.vue?raw'
128
+ import inputIconCode from '../examples/input/icon.vue?raw'
129
+ </script>
@@ -0,0 +1,61 @@
1
+ # LayerForm 弹窗表单
2
+
3
+ 通过点击按钮打开一个弹窗,在弹窗中通过 JSON Schema 配置渲染表单。
4
+
5
+ ::: warning 重要提示
6
+ `j-layer-form` 组件不是单独使用的,需要结合 `j-form` 组件使用。`j-layer-form` 应该作为 `j-form` 的 `schema` 配置中的一项,通过 `type: 'j-layer-form'` 来指定。`j-layer-form` 依赖 `j-form` 提供的表单上下文(通过 `useFormInject` 获取),用于获取表单配置信息如 `labelWidth`、`labelPosition` 等。
7
+ :::
8
+
9
+ ## 基础用法
10
+
11
+ `j-layer-form` 需要作为 `j-form` 的 `schema` 配置中的一项使用。弹窗内的表单字段通过 `children` 配置。
12
+
13
+ <Demo :source-code="layerFormBasicCode">
14
+ <template #source>
15
+ <layer-form-basic />
16
+ </template>
17
+ <template #description>
18
+ 在 `j-form` 的 `schema` 中配置 `type: 'j-layer-form'`,弹窗内的表单字段通过 `children` 配置。`j-layer-form` 会自动继承 `j-form` 的表单配置(如 `labelWidth`、`labelPosition` 等),点击按钮打开弹窗进行表单填写。
19
+ </template>
20
+ </Demo>
21
+
22
+ ## 自定义弹窗尺寸
23
+
24
+ 通过 `layerWidth` 和 `layerHeight` 属性自定义弹窗的宽度和高度。
25
+
26
+ <Demo :source-code="layerFormSizeCode">
27
+ <template #source>
28
+ <layer-form-size />
29
+ </template>
30
+ <template #description>
31
+ 在 `j-layer-form` 的 `config` 中设置 `layerWidth` 和 `layerHeight` 属性可以自定义弹窗的尺寸。
32
+ </template>
33
+ </Demo>
34
+
35
+ ## 表单配置
36
+
37
+ 通过 `formConfig` 属性配置表单的布局、标签位置、大小等。`j-layer-form` 的 `formConfig` 会覆盖 `j-form` 的配置。
38
+
39
+ <Demo :source-code="layerFormConfigCode">
40
+ <template #source>
41
+ <layer-form-config />
42
+ </template>
43
+ <template #description>
44
+ 在 `j-layer-form` 的 `config` 中通过 `formConfig` 可以配置表单的 `labelWidth`、`labelPosition`、`size`、`gutter`、`span` 等属性。如果 `j-layer-form` 的 `formConfig` 中未指定某些属性,会自动继承 `j-form` 的配置。
45
+ </template>
46
+ </Demo>
47
+
48
+ ## API
49
+
50
+ <ApiTable :data="layerFormApi" componentName="layer-form" />
51
+
52
+ <script setup>
53
+ import LayerFormBasic from '../examples/layer-form/basic.vue'
54
+ import LayerFormSize from '../examples/layer-form/size.vue'
55
+ import LayerFormConfig from '../examples/layer-form/config.vue'
56
+ import layerFormApi from './meta/layer-form'
57
+
58
+ import layerFormBasicCode from '../examples/layer-form/basic.vue?raw'
59
+ import layerFormSizeCode from '../examples/layer-form/size.vue?raw'
60
+ import layerFormConfigCode from '../examples/layer-form/config.vue?raw'
61
+ </script>
@@ -0,0 +1,127 @@
1
+ # Layer 层
2
+
3
+ 统一的弹层组件,支持弹窗、全屏、抽屉三种展示形式。
4
+
5
+ ## 基础用法
6
+
7
+ Layer 组件支持三种展示形式:弹窗(modal)、全屏(full)、抽屉(drawer)。
8
+
9
+ <Demo :source-code="layerBasicCode">
10
+ <template #source>
11
+ <layer-basic />
12
+ </template>
13
+ <template #description>
14
+ 通过 `open` 方法的第二个参数指定展示形式,默认为 `modal`。使用 `ref` 调用组件方法来控制显示隐藏。
15
+ </template>
16
+ </Demo>
17
+
18
+ ## 弹窗模式
19
+
20
+ 弹窗模式支持拖拽、缩放等功能。
21
+
22
+ <Demo :source-code="layerModalCode">
23
+ <template #source>
24
+ <layer-modal />
25
+ </template>
26
+ <template #description>
27
+ 弹窗模式下,可以通过 `width` 和 `height` 属性设置弹窗大小。支持拖拽和缩放功能。
28
+ </template>
29
+ </Demo>
30
+
31
+ ## 全屏模式
32
+
33
+ 全屏模式会占据整个浏览器窗口。
34
+
35
+ <Demo :source-code="layerFullCode">
36
+ <template #source>
37
+ <layer-full />
38
+ </template>
39
+ <template #description>
40
+ 使用 `open` 方法的第二个参数传入 `'full'` 即可开启全屏模式。适用于需要大量展示内容的场景。
41
+ </template>
42
+ </Demo>
43
+
44
+ ## 抽屉模式
45
+
46
+ 抽屉从右侧滑出,适合展示详情或表单。
47
+
48
+ <Demo :source-code="layerDrawerCode">
49
+ <template #source>
50
+ <layer-drawer />
51
+ </template>
52
+ <template #description>
53
+ 使用 `open` 方法的第二个参数传入 `'drawer'` 即可开启抽屉模式。
54
+ </template>
55
+ </Demo>
56
+
57
+ ## 步骤弹窗
58
+
59
+ 通过 `isStep` 属性可以创建带步骤条的弹窗。
60
+
61
+ <Demo :source-code="layerStepsCode">
62
+ <template #source>
63
+ <layer-steps />
64
+ </template>
65
+ <template #description>
66
+ 适用于分步骤的表单或流程,支持步骤校验。使用 `isStep` 开启步骤模式,使用 `steps` 设置步骤列表,使用 `validateSteps` 进行步骤校验。
67
+ </template>
68
+ </Demo>
69
+
70
+ ## 自定义按钮
71
+
72
+ 通过 `buttons` 属性可以自定义底部按钮。
73
+
74
+ <Demo :source-code="layerCustomButtonsCode">
75
+ <template #source>
76
+ <layer-custom-buttons />
77
+ </template>
78
+ <template #description>
79
+ 使用 `buttons` 属性配置自定义按钮,支持设置按钮类型、样式、图标、点击事件等。设置 `hasSaveBtn` 为 `false` 可隐藏默认的保存按钮。
80
+ </template>
81
+ </Demo>
82
+
83
+ ## API
84
+
85
+ ### 属性
86
+
87
+ <ApiTable :data="layerApi" componentName="layer" />
88
+
89
+ ### 事件
90
+
91
+ | 事件名 | 说明 | 回调参数 |
92
+ | ------ | ---------------------- | ------------------------------------------------ |
93
+ | ok | 点击确定按钮时触发 | `(showLoading: Function, hideLoading: Function)` |
94
+ | cancel | 点击取消按钮时触发 | - |
95
+ | closed | 弹窗关闭动画结束后触发 | - |
96
+
97
+ ### 插槽
98
+
99
+ | 插槽名 | 说明 |
100
+ | ------- | ------------ |
101
+ | default | 弹层内容区域 |
102
+
103
+ ### 方法
104
+
105
+ | 方法名 | 说明 | 参数 |
106
+ | ----------- | ------------ | ----------------------------------------------------------------------- |
107
+ | open | 打开弹层 | `(title: string, type?: 'modal' \| 'full' \| 'drawer', subtitle?: any)` |
108
+ | close | 关闭弹层 | - |
109
+ | showLoading | 显示加载状态 | `(text?: string)` |
110
+ | hideLoading | 隐藏加载状态 | - |
111
+
112
+ <script setup>
113
+ import LayerBasic from '../examples/layer/basic.vue'
114
+ import LayerModal from '../examples/layer/modal.vue'
115
+ import LayerFull from '../examples/layer/full.vue'
116
+ import LayerDrawer from '../examples/layer/drawer.vue'
117
+ import LayerSteps from '../examples/layer/steps.vue'
118
+ import LayerCustomButtons from '../examples/layer/custom-buttons.vue'
119
+ import layerApi from './meta/layer'
120
+
121
+ import layerBasicCode from '../examples/layer/basic.vue?raw'
122
+ import layerModalCode from '../examples/layer/modal.vue?raw'
123
+ import layerFullCode from '../examples/layer/full.vue?raw'
124
+ import layerDrawerCode from '../examples/layer/drawer.vue?raw'
125
+ import layerStepsCode from '../examples/layer/steps.vue?raw'
126
+ import layerCustomButtonsCode from '../examples/layer/custom-buttons.vue?raw'
127
+ </script>
@@ -0,0 +1,132 @@
1
+ # Layout 布局
2
+
3
+ 用于页面的整体布局,支持上下左右四个区域的组合布局。
4
+
5
+ ## 基础用法
6
+
7
+ 最基础的布局示例,包含上下左右和中间主体区域。
8
+
9
+ <Demo :source-code="layoutBasicCode">
10
+ <template #source>
11
+ <layout-basic />
12
+ </template>
13
+ <template #description>
14
+ Layout 组件提供了五个插槽:left(左侧)、right(右侧)、top(顶部)、bottom(底部)和 default(中间主体)。每个区域都可以通过拖拽分隔线来调整大小。
15
+ </template>
16
+ </Demo>
17
+
18
+ ## 简单布局
19
+
20
+ 左右布局的简单示例,常用于后台管理系统。
21
+
22
+ <Demo :source-code="layoutSimpleCode">
23
+ <template #source>
24
+ <layout-simple />
25
+ </template>
26
+ <template #description>
27
+ 只使用左侧和中间区域,构建经典的侧边栏布局。左侧通常用于导航菜单,中间区域展示主要内容。
28
+ </template>
29
+ </Demo>
30
+
31
+ ## 顶部导航布局
32
+
33
+ 经典的顶部导航布局样式。
34
+
35
+ <Demo :source-code="layoutTopSideCode">
36
+ <template #source>
37
+ <layout-top-side />
38
+ </template>
39
+ <template #description>
40
+ 只使用顶部和中间区域,构建顶部导航布局。适用于首页、官网等场景。
41
+ </template>
42
+ </Demo>
43
+
44
+ ## 自定义尺寸
45
+
46
+ 通过 props 自定义各个区域的初始尺寸。
47
+
48
+ <Demo :source-code="layoutCustomSizeCode">
49
+ <template #source>
50
+ <layout-custom-size />
51
+ </template>
52
+ <template #description>
53
+ 可以通过 left、right、top、bottom 属性设置各个区域的初始宽度或高度。支持数字(像素)和字符串(百分比)两种方式。
54
+ </template>
55
+ </Demo>
56
+
57
+ ## 百分比布局
58
+
59
+ 使用百分比设置区域大小,实现响应式布局。
60
+
61
+ <Demo :source-code="layoutPercentSizeCode">
62
+ <template #source>
63
+ <layout-percent-size />
64
+ </template>
65
+ <template #description>
66
+ 支持使用百分比(如 "20%")设置区域大小,布局会随容器大小自动调整。拖动调整大小后,会自动转换为像素值以保持拖动后的尺寸。
67
+ </template>
68
+ </Demo>
69
+
70
+ ## 禁用拖拽
71
+
72
+ 禁用区域的拖拽调整功能。
73
+
74
+ <Demo :source-code="layoutDisableMoveCode">
75
+ <template #source>
76
+ <layout-disable-move />
77
+ </template>
78
+ <template #description>
79
+ 通过 leftMove、rightMove、topMove、bottomMove 属性可以控制各个区域是否允许拖拽调整大小。设置为 false 即可禁用拖拽功能。
80
+ </template>
81
+ </Demo>
82
+
83
+ ## 限制最小尺寸
84
+
85
+ 为中间区域设置最小宽度和高度,防止被过度压缩。
86
+
87
+ <Demo :source-code="layoutMinSizeCode">
88
+ <template #source>
89
+ <layout-min-size />
90
+ </template>
91
+ <template #description>
92
+ 通过 midMinWidth 和 midMinHeight 属性可以设置中间区域的最小宽度和高度。当拖动四周区域时,中间区域始终保持不小于设置的最小尺寸,确保内容区域有足够的显示空间。
93
+ </template>
94
+ </Demo>
95
+
96
+ ## 自动隐藏中间区域
97
+
98
+ 当整体宽度小于设置的最小中间宽度时自动隐藏中间区域,左右区域平分剩余宽度。
99
+
100
+ <Demo :source-code="layoutHideMidWhenNarrowCode">
101
+ <template #source>
102
+ <layout-hide-mid-when-narrow />
103
+ </template>
104
+ <template #description>
105
+ 通过设置 hideMidWhenNarrow 属性为 true,当容器宽度小于「左侧宽度 + 右侧宽度 + mid最小宽度」时,中间区域会自动隐藏。如果同时存在左侧和右侧区域,它们会平分剩余宽度(各占50%);如果只有一侧,则该侧占据100%宽度。这在响应式布局中非常有用。
106
+ </template>
107
+ </Demo>
108
+
109
+ ## API
110
+
111
+ <ApiTable :data="layoutApi" componentName="layout" />
112
+
113
+ <script setup>
114
+ import LayoutBasic from '../examples/layout/basic.vue'
115
+ import LayoutSimple from '../examples/layout/simple.vue'
116
+ import LayoutTopSide from '../examples/layout/top-side.vue'
117
+ import LayoutCustomSize from '../examples/layout/custom-size.vue'
118
+ import LayoutPercentSize from '../examples/layout/percent-size.vue'
119
+ import LayoutDisableMove from '../examples/layout/disable-move.vue'
120
+ import LayoutMinSize from '../examples/layout/min-size.vue'
121
+ import LayoutHideMidWhenNarrow from '../examples/layout/hide-mid-when-narrow.vue'
122
+ import layoutApi from './meta/layout'
123
+
124
+ import layoutBasicCode from '../examples/layout/basic.vue?raw'
125
+ import layoutSimpleCode from '../examples/layout/simple.vue?raw'
126
+ import layoutTopSideCode from '../examples/layout/top-side.vue?raw'
127
+ import layoutCustomSizeCode from '../examples/layout/custom-size.vue?raw'
128
+ import layoutPercentSizeCode from '../examples/layout/percent-size.vue?raw'
129
+ import layoutDisableMoveCode from '../examples/layout/disable-move.vue?raw'
130
+ import layoutMinSizeCode from '../examples/layout/min-size.vue?raw'
131
+ import layoutHideMidWhenNarrowCode from '../examples/layout/hide-mid-when-narrow.vue?raw'
132
+ </script>
@@ -0,0 +1,24 @@
1
+ # Map 地图
2
+
3
+ 百度地图组件,用于选择地址和坐标。
4
+
5
+ ## 基础用法
6
+
7
+ <Demo :source-code="mapBasicCode">
8
+ <template #source>
9
+ <map-basic />
10
+ </template>
11
+ <template #description>
12
+ 使用 v-model 绑定地址和坐标。
13
+ </template>
14
+ </Demo>
15
+
16
+ ## API
17
+
18
+ <ApiTable :data="mapApi" componentName="map" />
19
+
20
+ <script setup>
21
+ import MapBasic from '../examples/map/basic.vue'
22
+ import mapApi from './meta/map'
23
+ import mapBasicCode from '../examples/map/basic.vue?raw'
24
+ </script>
@@ -0,0 +1,121 @@
1
+ # Menu 菜单
2
+
3
+ 为页面和功能提供导航的菜单列表。
4
+
5
+ ## 基础用法
6
+
7
+ 默认为内嵌模式,支持展开和收起子菜单。
8
+
9
+ <Demo :source-code="menuBasicCode">
10
+ <template #source>
11
+ <menu-basic />
12
+ </template>
13
+ <template #description>
14
+ 通过 `menus` 属性设置菜单数据,`active-id` 设置当前激活的菜单项,`click` 事件监听菜单点击。
15
+ </template>
16
+ </Demo>
17
+
18
+ ## 水平菜单
19
+
20
+ 通过 `mode` 属性设置为 `horizontal` 可以使用水平菜单。
21
+
22
+ <Demo :source-code="menuHorizontalCode">
23
+ <template #source>
24
+ <menu-horizontal />
25
+ </template>
26
+ <template #description>
27
+ 水平菜单适用于顶部导航栏。
28
+ </template>
29
+ </Demo>
30
+
31
+ ## 垂直菜单
32
+
33
+ 通过 `mode` 属性设置为 `vertical` 可以使用垂直菜单。
34
+
35
+ <Demo :source-code="menuVerticalCode">
36
+ <template #source>
37
+ <menu-vertical />
38
+ </template>
39
+ <template #description>
40
+ 垂直菜单适用于侧边栏,不支持子菜单展开。
41
+ </template>
42
+ </Demo>
43
+
44
+ ## 折叠菜单
45
+
46
+ 通过 `collapsed` 属性可以折叠菜单。
47
+
48
+ <Demo :source-code="menuCollapsedCode">
49
+ <template #source>
50
+ <menu-collapsed />
51
+ </template>
52
+ <template #description>
53
+ 折叠菜单只显示图标,适用于需要节省空间的场景。
54
+ </template>
55
+ </Demo>
56
+
57
+ ## 主题
58
+
59
+ 通过 `theme` 属性可以设置菜单主题,支持 `light` 和 `dark` 两种主题。
60
+
61
+ <Demo :source-code="menuThemeCode">
62
+ <template #source>
63
+ <menu-theme />
64
+ </template>
65
+ <template #description>
66
+ 深色主题适用于深色背景。
67
+ </template>
68
+ </Demo>
69
+
70
+ ## 选中状态测试
71
+
72
+ 测试切换选中菜单,验证菜单状态是否变化。
73
+
74
+ <Demo :source-code="menuSelectionTestCode">
75
+ <template #source>
76
+ <menu-selection-test />
77
+ </template>
78
+ <template #description>
79
+ 通过修改 `active-id` 可以程序化改变选中项。
80
+ </template>
81
+ </Demo>
82
+
83
+ ## API
84
+
85
+ ### 属性
86
+
87
+ <ApiTable :data="menuApi" componentName="menu" />
88
+
89
+ ### 事件
90
+
91
+ | 事件名 | 说明 | 回调参数 |
92
+ | ------ | ---------------- | ----------------------------- |
93
+ | click | 点击菜单项时触发 | `(item: Record<string, any>)` |
94
+
95
+ ## 菜单数据结构
96
+
97
+ ```typescript
98
+ interface MenuItem {
99
+ label: string // 菜单项文本
100
+ value: string // 菜单项唯一标识
101
+ icon?: string // 图标
102
+ children?: MenuItem[] // 子菜单
103
+ }
104
+ ```
105
+
106
+ <script setup>
107
+ import MenuBasic from '../examples/menu/basic.vue'
108
+ import MenuHorizontal from '../examples/menu/horizontal.vue'
109
+ import MenuVertical from '../examples/menu/vertical.vue'
110
+ import MenuCollapsed from '../examples/menu/collapsed.vue'
111
+ import MenuTheme from '../examples/menu/theme.vue'
112
+ import MenuSelectionTest from '../examples/menu/selection-test.vue'
113
+ import menuApi from './meta/menu'
114
+
115
+ import menuBasicCode from '../examples/menu/basic.vue?raw'
116
+ import menuHorizontalCode from '../examples/menu/horizontal.vue?raw'
117
+ import menuVerticalCode from '../examples/menu/vertical.vue?raw'
118
+ import menuCollapsedCode from '../examples/menu/collapsed.vue?raw'
119
+ import menuThemeCode from '../examples/menu/theme.vue?raw'
120
+ import menuSelectionTestCode from '../examples/menu/selection-test.vue?raw'
121
+ </script>