@a2simcode/ui 0.0.66 → 0.0.68

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 (324) hide show
  1. package/.cursor/skills/ui-component-helper/README.md +43 -43
  2. package/.cursor/skills/ui-component-helper/SKILL.md +81 -81
  3. package/LICENSE +53 -53
  4. package/README.md +156 -156
  5. package/dist/components/comp/index.d.ts +15 -0
  6. package/dist/components/comp/src/comp.vue.d.ts +15 -0
  7. package/dist/components/input-layer/index.d.ts +40 -0
  8. package/dist/components/input-layer/src/input-layer.vue.d.ts +40 -0
  9. package/dist/components/table/index.d.ts +75 -0
  10. package/dist/components/table/src/table.vue.d.ts +75 -0
  11. package/dist/components/table-panel/index.d.ts +60 -0
  12. package/dist/components/table-panel/src/table-panel.vue.d.ts +60 -0
  13. package/dist/simcode-ui.es.js +7378 -5646
  14. package/dist/simcode-ui.umd.js +2 -2
  15. package/dist/stats.html +1 -1
  16. package/dist/ui.css +1 -1
  17. package/docs/components/autocomplete.md +89 -89
  18. package/docs/components/barcode.md +101 -101
  19. package/docs/components/button-select.md +24 -24
  20. package/docs/components/button.md +117 -117
  21. package/docs/components/buttons.md +119 -119
  22. package/docs/components/cascader-select.md +114 -114
  23. package/docs/components/checkbox.md +114 -114
  24. package/docs/components/code-mirror.md +85 -85
  25. package/docs/components/collapse.md +26 -26
  26. package/docs/components/comp.md +71 -71
  27. package/docs/components/count-up.md +24 -24
  28. package/docs/components/count.md +24 -24
  29. package/docs/components/data-panel.md +24 -24
  30. package/docs/components/dialog-full.md +112 -112
  31. package/docs/components/dialog.md +127 -127
  32. package/docs/components/divider.md +24 -24
  33. package/docs/components/drawer.md +127 -127
  34. package/docs/components/dynamic-layer.md +118 -118
  35. package/docs/components/echarts.md +72 -72
  36. package/docs/components/editor.md +24 -24
  37. package/docs/components/form.md +27 -27
  38. package/docs/components/guid.md +39 -39
  39. package/docs/components/hpanel.md +24 -24
  40. package/docs/components/icon.md +56 -56
  41. package/docs/components/input-button.md +24 -24
  42. package/docs/components/input-code.md +24 -24
  43. package/docs/components/input-color.md +114 -114
  44. package/docs/components/input-layer.md +26 -26
  45. package/docs/components/input-rows.md +370 -370
  46. package/docs/components/input-tag.md +50 -50
  47. package/docs/components/input.md +129 -129
  48. package/docs/components/layer-form.md +61 -61
  49. package/docs/components/layer.md +127 -127
  50. package/docs/components/layout.md +132 -132
  51. package/docs/components/map.md +24 -24
  52. package/docs/components/menu.md +121 -121
  53. package/docs/components/meta/buttons.ts +56 -56
  54. package/docs/components/meta/comp.ts +230 -224
  55. package/docs/components/meta/dynamic-layer.ts +99 -99
  56. package/docs/components/meta/echarts.ts +64 -64
  57. package/docs/components/meta/form-item.ts +50 -50
  58. package/docs/components/meta/form.ts +160 -160
  59. package/docs/components/meta/guid.ts +42 -42
  60. package/docs/components/meta/input-cards.ts +112 -112
  61. package/docs/components/meta/input-color.ts +243 -243
  62. package/docs/components/meta/input-rows.ts +113 -113
  63. package/docs/components/meta/input.ts +411 -411
  64. package/docs/components/meta/layer-form.ts +56 -56
  65. package/docs/components/meta/map.ts +68 -68
  66. package/docs/components/meta/number.ts +296 -296
  67. package/docs/components/meta/page.ts +67 -67
  68. package/docs/components/meta/panel.ts +152 -152
  69. package/docs/components/meta/radio.ts +55 -55
  70. package/docs/components/meta/slider.ts +270 -270
  71. package/docs/components/meta/table-panel.ts +154 -154
  72. package/docs/components/meta/table.ts +363 -333
  73. package/docs/components/meta/tabs.ts +136 -136
  74. package/docs/components/meta/tree-select.ts +199 -199
  75. package/docs/components/meta/workflow-viewer.ts +55 -55
  76. package/docs/components/meta/workflow.ts +113 -113
  77. package/docs/components/number.md +124 -124
  78. package/docs/components/page.md +42 -42
  79. package/docs/components/panel.md +37 -37
  80. package/docs/components/radio.md +87 -87
  81. package/docs/components/rate.md +71 -71
  82. package/docs/components/select.md +133 -133
  83. package/docs/components/slider-captcha.md +41 -41
  84. package/docs/components/slider.md +101 -101
  85. package/docs/components/switch.md +90 -90
  86. package/docs/components/table-panel.md +199 -199
  87. package/docs/components/table.md +304 -266
  88. package/docs/components/tabs.md +26 -26
  89. package/docs/components/title.md +24 -24
  90. package/docs/components/tree.md +207 -207
  91. package/docs/components/upload.md +117 -117
  92. package/docs/components/workflow-viewer.md +21 -21
  93. package/docs/components/workflow.md +21 -21
  94. package/docs/examples/autocomplete/advanced.vue +35 -35
  95. package/docs/examples/autocomplete/basic.vue +32 -32
  96. package/docs/examples/autocomplete/clearable.vue +33 -33
  97. package/docs/examples/autocomplete/custom-template.vue +49 -49
  98. package/docs/examples/autocomplete/disabled.vue +33 -33
  99. package/docs/examples/autocomplete/icon.vue +37 -37
  100. package/docs/examples/barcode/all-types.vue +380 -380
  101. package/docs/examples/barcode/basic.vue +14 -14
  102. package/docs/examples/barcode/props-appearance.vue +243 -243
  103. package/docs/examples/barcode/props-geometry.vue +143 -143
  104. package/docs/examples/barcode/props-logic.vue +216 -216
  105. package/docs/examples/barcode/props-symbology.vue +199 -199
  106. package/docs/examples/barcode/props-text.vue +268 -268
  107. package/docs/examples/button/basic.vue +7 -7
  108. package/docs/examples/button/danger-ghost.vue +17 -17
  109. package/docs/examples/button/disabled.vue +10 -10
  110. package/docs/examples/button/loading.vue +6 -6
  111. package/docs/examples/button/shape.vue +7 -7
  112. package/docs/examples/button/size.vue +14 -14
  113. package/docs/examples/button/type.vue +9 -9
  114. package/docs/examples/button-select/basic.vue +19 -19
  115. package/docs/examples/buttons/basic.vue +45 -45
  116. package/docs/examples/buttons/disabled.vue +36 -36
  117. package/docs/examples/buttons/dropdown.vue +63 -63
  118. package/docs/examples/buttons/group.vue +52 -52
  119. package/docs/examples/buttons/link.vue +47 -47
  120. package/docs/examples/buttons/popup.vue +39 -39
  121. package/docs/examples/buttons/size.vue +45 -45
  122. package/docs/examples/cascader-select/basic.vue +28 -28
  123. package/docs/examples/cascader-select/clearable.vue +34 -34
  124. package/docs/examples/cascader-select/disabled.vue +43 -43
  125. package/docs/examples/cascader-select/filterable.vue +37 -37
  126. package/docs/examples/cascader-select/methods.vue +84 -84
  127. package/docs/examples/cascader-select/multiple.vue +38 -38
  128. package/docs/examples/cascader-select/slot.vue +45 -45
  129. package/docs/examples/checkbox/basic.vue +18 -18
  130. package/docs/examples/checkbox/button.vue +19 -19
  131. package/docs/examples/checkbox/color.vue +25 -25
  132. package/docs/examples/checkbox/disabled.vue +17 -17
  133. package/docs/examples/checkbox/min-max.vue +20 -20
  134. package/docs/examples/checkbox/mixed.vue +56 -56
  135. package/docs/examples/checkbox/size.vue +28 -28
  136. package/docs/examples/code-mirror/basic.vue +11 -11
  137. package/docs/examples/code-mirror/events.vue +42 -42
  138. package/docs/examples/code-mirror/height.vue +25 -25
  139. package/docs/examples/code-mirror/mode.vue +33 -33
  140. package/docs/examples/code-mirror/readonly.vue +14 -14
  141. package/docs/examples/collapse/basic.vue +82 -82
  142. package/docs/examples/comp/basic.vue +7 -7
  143. package/docs/examples/comp/collapse.vue +38 -38
  144. package/docs/examples/comp/tabs.vue +38 -38
  145. package/docs/examples/count/basic.vue +54 -54
  146. package/docs/examples/count-up/basic.vue +89 -89
  147. package/docs/examples/data-panel/basic.vue +110 -110
  148. package/docs/examples/dialog/basic.vue +36 -36
  149. package/docs/examples/dialog/custom-buttons.vue +44 -44
  150. package/docs/examples/dialog/fullscreen.vue +23 -23
  151. package/docs/examples/dialog/no-mask.vue +17 -17
  152. package/docs/examples/dialog/size.vue +44 -44
  153. package/docs/examples/dialog/steps.vue +57 -57
  154. package/docs/examples/dialog-full/basic.vue +29 -29
  155. package/docs/examples/dialog-full/custom-buttons.vue +45 -45
  156. package/docs/examples/dialog-full/no-buttons.vue +18 -18
  157. package/docs/examples/dialog-full/no-header.vue +27 -27
  158. package/docs/examples/dialog-full/steps.vue +71 -71
  159. package/docs/examples/divider/basic.vue +52 -52
  160. package/docs/examples/drawer/basic.vue +35 -35
  161. package/docs/examples/drawer/custom-buttons.vue +34 -34
  162. package/docs/examples/drawer/direction.vue +47 -47
  163. package/docs/examples/drawer/mask.vue +36 -36
  164. package/docs/examples/drawer/no-buttons.vue +20 -20
  165. package/docs/examples/drawer/size.vue +28 -28
  166. package/docs/examples/dynamic-layer/basic.vue +33 -33
  167. package/docs/examples/dynamic-layer/custom-buttons.vue +43 -43
  168. package/docs/examples/dynamic-layer/form.vue +73 -73
  169. package/docs/examples/dynamic-layer/steps.vue +52 -52
  170. package/docs/examples/dynamic-layer/types.vue +40 -40
  171. package/docs/examples/echarts/basic.vue +31 -31
  172. package/docs/examples/echarts/dynamic.vue +43 -43
  173. package/docs/examples/echarts/line.vue +46 -46
  174. package/docs/examples/echarts/pie.vue +44 -44
  175. package/docs/examples/editor/basic.vue +15 -15
  176. package/docs/examples/form/basic.vue +450 -390
  177. package/docs/examples/guid/basic.vue +10 -10
  178. package/docs/examples/guid/size.vue +13 -13
  179. package/docs/examples/hpanel/basic.vue +79 -79
  180. package/docs/examples/icon/basic.vue +9 -9
  181. package/docs/examples/icon/rotate-flip.vue +9 -9
  182. package/docs/examples/icon/size.vue +7 -7
  183. package/docs/examples/input/basic.vue +10 -10
  184. package/docs/examples/input/clearable.vue +12 -12
  185. package/docs/examples/input/disabled.vue +6 -6
  186. package/docs/examples/input/icon.vue +23 -23
  187. package/docs/examples/input/password.vue +18 -18
  188. package/docs/examples/input/size.vue +13 -13
  189. package/docs/examples/input/textarea.vue +25 -25
  190. package/docs/examples/input/word-limit.vue +28 -28
  191. package/docs/examples/input-button/basic.vue +33 -33
  192. package/docs/examples/input-code/basic.vue +29 -29
  193. package/docs/examples/input-color/basic.vue +10 -10
  194. package/docs/examples/input-color/disabled.vue +13 -13
  195. package/docs/examples/input-color/format.vue +17 -17
  196. package/docs/examples/input-color/no-alpha.vue +13 -13
  197. package/docs/examples/input-color/only-button.vue +15 -15
  198. package/docs/examples/input-color/predefine.vue +31 -31
  199. package/docs/examples/input-color/size.vue +15 -15
  200. package/docs/examples/input-layer/basic.vue +69 -69
  201. package/docs/examples/input-rows/basic.vue +73 -73
  202. package/docs/examples/input-rows/drag.vue +48 -48
  203. package/docs/examples/input-rows/layer-form.vue +85 -85
  204. package/docs/examples/input-rows/nested.vue +91 -91
  205. package/docs/examples/input-tag/basic.vue +27 -27
  206. package/docs/examples/input-tag/colors.vue +23 -23
  207. package/docs/examples/input-tag/readonly.vue +17 -17
  208. package/docs/examples/layer/basic.vue +43 -43
  209. package/docs/examples/layer/custom-buttons.vue +61 -61
  210. package/docs/examples/layer/drawer.vue +37 -37
  211. package/docs/examples/layer/full.vue +38 -38
  212. package/docs/examples/layer/modal.vue +34 -34
  213. package/docs/examples/layer/steps.vue +46 -46
  214. package/docs/examples/layer-form/basic.vue +76 -76
  215. package/docs/examples/layer-form/config.vue +82 -82
  216. package/docs/examples/layer-form/size.vue +72 -72
  217. package/docs/examples/layout/basic.vue +36 -36
  218. package/docs/examples/layout/custom-size.vue +50 -50
  219. package/docs/examples/layout/disable-move.vue +37 -37
  220. package/docs/examples/layout/hide-mid-when-narrow.vue +96 -96
  221. package/docs/examples/layout/min-size.vue +73 -73
  222. package/docs/examples/layout/percent-size.vue +80 -80
  223. package/docs/examples/layout/simple.vue +22 -22
  224. package/docs/examples/layout/top-side.vue +34 -34
  225. package/docs/examples/map/basic.vue +22 -22
  226. package/docs/examples/menu/basic.vue +58 -58
  227. package/docs/examples/menu/collapsed.vue +49 -49
  228. package/docs/examples/menu/horizontal.vue +44 -44
  229. package/docs/examples/menu/selection-test.vue +104 -104
  230. package/docs/examples/menu/theme.vue +46 -46
  231. package/docs/examples/menu/vertical.vue +46 -46
  232. package/docs/examples/number/advanced.vue +143 -143
  233. package/docs/examples/number/basic.vue +63 -63
  234. package/docs/examples/number/disabled.vue +49 -49
  235. package/docs/examples/number/size.vue +42 -42
  236. package/docs/examples/number/slots.vue +123 -123
  237. package/docs/examples/number/step-strictly.vue +41 -41
  238. package/docs/examples/number/step.vue +47 -47
  239. package/docs/examples/page/basic.vue +41 -41
  240. package/docs/examples/page/init.vue +87 -87
  241. package/docs/examples/panel/tool-buttons.vue +18 -18
  242. package/docs/examples/radio/basic.vue +17 -17
  243. package/docs/examples/radio/button.vue +17 -17
  244. package/docs/examples/radio/color.vue +18 -18
  245. package/docs/examples/radio/disabled.vue +17 -17
  246. package/docs/examples/radio/size.vue +29 -29
  247. package/docs/examples/rate/basic.vue +24 -24
  248. package/docs/examples/rate/half.vue +24 -24
  249. package/docs/examples/rate/readonly.vue +11 -11
  250. package/docs/examples/rate/text.vue +32 -32
  251. package/docs/examples/select/basic.vue +16 -16
  252. package/docs/examples/select/clearable.vue +22 -22
  253. package/docs/examples/select/disabled.vue +31 -31
  254. package/docs/examples/select/filterable.vue +24 -24
  255. package/docs/examples/select/group.vue +23 -23
  256. package/docs/examples/select/icon.vue +16 -16
  257. package/docs/examples/select/multiple.vue +18 -18
  258. package/docs/examples/select/size.vue +39 -39
  259. package/docs/examples/slider/basic.vue +42 -42
  260. package/docs/examples/slider/disabled.vue +17 -17
  261. package/docs/examples/slider/marks.vue +30 -30
  262. package/docs/examples/slider/size.vue +37 -37
  263. package/docs/examples/slider/tooltip.vue +36 -36
  264. package/docs/examples/slider/vertical.vue +26 -26
  265. package/docs/examples/slider-captcha/basic.vue +44 -44
  266. package/docs/examples/slider-captcha/custom.vue +48 -48
  267. package/docs/examples/switch/basic.vue +16 -16
  268. package/docs/examples/switch/disabled.vue +13 -13
  269. package/docs/examples/switch/loading.vue +13 -13
  270. package/docs/examples/switch/size.vue +15 -15
  271. package/docs/examples/switch/text.vue +13 -13
  272. package/docs/examples/table/actions.vue +116 -116
  273. package/docs/examples/table/add-row.vue +103 -103
  274. package/docs/examples/table/basic.vue +168 -168
  275. package/docs/examples/table/custom-layout.vue +115 -115
  276. package/docs/examples/table/editable.vue +262 -262
  277. package/docs/examples/table/field-selection.vue +87 -87
  278. package/docs/examples/table/frozen-column.vue +140 -140
  279. package/docs/examples/table/height-mode.vue +99 -99
  280. package/docs/examples/table/icon.vue +85 -85
  281. package/docs/examples/table/link.vue +66 -66
  282. package/docs/examples/table/multiple.vue +178 -178
  283. package/docs/examples/table/pagination.vue +151 -151
  284. package/docs/examples/table/single-selection.vue +64 -64
  285. package/docs/examples/table/sub-table-lazy.vue +97 -0
  286. package/docs/examples/table/sub-table.vue +103 -0
  287. package/docs/examples/table/tag.vue +43 -43
  288. package/docs/examples/table/tree-column.vue +119 -119
  289. package/docs/examples/table/tree-data.vue +141 -141
  290. package/docs/examples/table-panel/basic.vue +228 -228
  291. package/docs/examples/table-panel/batch-operations.vue +285 -285
  292. package/docs/examples/table-panel/filter.vue +209 -209
  293. package/docs/examples/table-panel/multiple-selection.vue +243 -243
  294. package/docs/examples/table-panel/pagination.vue +133 -133
  295. package/docs/examples/tabs/basic.vue +98 -98
  296. package/docs/examples/title/basic.vue +80 -80
  297. package/docs/examples/tree/accordion.vue +46 -46
  298. package/docs/examples/tree/basic.vue +50 -50
  299. package/docs/examples/tree/buttons.vue +53 -53
  300. package/docs/examples/tree/checkable.vue +52 -52
  301. package/docs/examples/tree/custom-keys.vue +39 -39
  302. package/docs/examples/tree/default-expanded.vue +52 -52
  303. package/docs/examples/tree/draggable.vue +29 -29
  304. package/docs/examples/tree/expand-on-click.vue +39 -39
  305. package/docs/examples/tree/flat-data.vue +20 -20
  306. package/docs/examples/tree/icon.vue +40 -40
  307. package/docs/examples/tree/load-data.vue +37 -37
  308. package/docs/examples/tree/methods.vue +74 -74
  309. package/docs/examples/tree/theme.vue +33 -33
  310. package/docs/examples/upload/accept.vue +31 -31
  311. package/docs/examples/upload/basic.vue +12 -12
  312. package/docs/examples/upload/drag.vue +11 -11
  313. package/docs/examples/upload/image.vue +17 -17
  314. package/docs/examples/upload/limit.vue +20 -20
  315. package/docs/examples/upload/multiple.vue +17 -17
  316. package/docs/examples/upload/readonly.vue +17 -17
  317. package/docs/examples/utils/cipher.vue +160 -160
  318. package/docs/examples/utils/common.vue +153 -153
  319. package/docs/examples/utils/date.vue +56 -56
  320. package/docs/examples/utils/dom.vue +52 -52
  321. package/docs/examples/utils/is.vue +70 -70
  322. package/docs/examples/workflow/basic.vue +265 -265
  323. package/docs/examples/workflow-viewer/basic.vue +248 -248
  324. package/package.json +26 -25
@@ -1,44 +1,44 @@
1
- <template>
2
- <div style="display: flex; gap: 8px">
3
- <j-button label="小弹窗" @click="showDialog('small')" />
4
- <j-button label="中等弹窗" @click="showDialog('medium')" />
5
- <j-button label="大弹窗" @click="showDialog('large')" />
6
- <j-dialog v-model:visible="visible" :title="title" :width="width" :height="height">
7
- <div style="padding: 16px">
8
- <p>当前弹窗尺寸:{{ title }}</p>
9
- <p>宽度:{{ width }}px</p>
10
- <p>高度:{{ height }}px</p>
11
- </div>
12
- </j-dialog>
13
- </div>
14
- </template>
15
-
16
- <script setup lang="ts">
17
- import { ref } from 'vue'
18
-
19
- const visible = ref(false)
20
- const title = ref('')
21
- const width = ref(600)
22
- const height = ref(400)
23
-
24
- const showDialog = (size: string) => {
25
- switch (size) {
26
- case 'small':
27
- title.value = '小弹窗'
28
- width.value = 400
29
- height.value = 300
30
- break
31
- case 'medium':
32
- title.value = '中等弹窗'
33
- width.value = 600
34
- height.value = 400
35
- break
36
- case 'large':
37
- title.value = '大弹窗'
38
- width.value = 900
39
- height.value = 600
40
- break
41
- }
42
- visible.value = true
43
- }
44
- </script>
1
+ <template>
2
+ <div style="display: flex; gap: 8px">
3
+ <j-button label="小弹窗" @click="showDialog('small')" />
4
+ <j-button label="中等弹窗" @click="showDialog('medium')" />
5
+ <j-button label="大弹窗" @click="showDialog('large')" />
6
+ <j-dialog v-model:visible="visible" :title="title" :width="width" :height="height">
7
+ <div style="padding: 16px">
8
+ <p>当前弹窗尺寸:{{ title }}</p>
9
+ <p>宽度:{{ width }}px</p>
10
+ <p>高度:{{ height }}px</p>
11
+ </div>
12
+ </j-dialog>
13
+ </div>
14
+ </template>
15
+
16
+ <script setup lang="ts">
17
+ import { ref } from 'vue'
18
+
19
+ const visible = ref(false)
20
+ const title = ref('')
21
+ const width = ref(600)
22
+ const height = ref(400)
23
+
24
+ const showDialog = (size: string) => {
25
+ switch (size) {
26
+ case 'small':
27
+ title.value = '小弹窗'
28
+ width.value = 400
29
+ height.value = 300
30
+ break
31
+ case 'medium':
32
+ title.value = '中等弹窗'
33
+ width.value = 600
34
+ height.value = 400
35
+ break
36
+ case 'large':
37
+ title.value = '大弹窗'
38
+ width.value = 900
39
+ height.value = 600
40
+ break
41
+ }
42
+ visible.value = true
43
+ }
44
+ </script>
@@ -1,57 +1,57 @@
1
- <template>
2
- <div>
3
- <j-button label="步骤弹窗" @click="visible = true" />
4
- <j-dialog
5
- v-model:visible="visible"
6
- v-model:step-active="stepActive"
7
- title="分步骤表单"
8
- :width="700"
9
- :height="450"
10
- :is-step="true"
11
- :steps="steps"
12
- :validate-steps="validateSteps"
13
- @ok="handleOk"
14
- >
15
- <div style="padding: 16px">
16
- <div v-if="stepActive === 0">
17
- <h3>步骤一:基本信息</h3>
18
- <p>请填写基本信息...</p>
19
- </div>
20
- <div v-if="stepActive === 1">
21
- <h3>步骤二:详细配置</h3>
22
- <p>请完成详细配置...</p>
23
- </div>
24
- <div v-if="stepActive === 2">
25
- <h3>步骤三:确认提交</h3>
26
- <p>请确认信息后提交...</p>
27
- </div>
28
- </div>
29
- </j-dialog>
30
- </div>
31
- </template>
32
-
33
- <script setup lang="ts">
34
- import { ref } from 'vue'
35
- import { ElMessage } from 'element-plus'
36
-
37
- const visible = ref(false)
38
- const stepActive = ref(0)
39
- const steps = ['基本信息', '详细配置', '确认提交']
40
-
41
- const validateSteps = async (step: number) => {
42
- // 模拟校验
43
- await new Promise((resolve) => setTimeout(resolve, 500))
44
- ElMessage.success(`步骤 ${step + 1} 校验通过`)
45
- return true
46
- }
47
-
48
- const handleOk = (showLoading: any, hideLoading: any) => {
49
- showLoading('提交中...')
50
- setTimeout(() => {
51
- hideLoading()
52
- ElMessage.success('提交成功')
53
- visible.value = false
54
- stepActive.value = 0
55
- }, 1000)
56
- }
57
- </script>
1
+ <template>
2
+ <div>
3
+ <j-button label="步骤弹窗" @click="visible = true" />
4
+ <j-dialog
5
+ v-model:visible="visible"
6
+ v-model:step-active="stepActive"
7
+ title="分步骤表单"
8
+ :width="700"
9
+ :height="450"
10
+ :is-step="true"
11
+ :steps="steps"
12
+ :validate-steps="validateSteps"
13
+ @ok="handleOk"
14
+ >
15
+ <div style="padding: 16px">
16
+ <div v-if="stepActive === 0">
17
+ <h3>步骤一:基本信息</h3>
18
+ <p>请填写基本信息...</p>
19
+ </div>
20
+ <div v-if="stepActive === 1">
21
+ <h3>步骤二:详细配置</h3>
22
+ <p>请完成详细配置...</p>
23
+ </div>
24
+ <div v-if="stepActive === 2">
25
+ <h3>步骤三:确认提交</h3>
26
+ <p>请确认信息后提交...</p>
27
+ </div>
28
+ </div>
29
+ </j-dialog>
30
+ </div>
31
+ </template>
32
+
33
+ <script setup lang="ts">
34
+ import { ref } from 'vue'
35
+ import { ElMessage } from 'element-plus'
36
+
37
+ const visible = ref(false)
38
+ const stepActive = ref(0)
39
+ const steps = ['基本信息', '详细配置', '确认提交']
40
+
41
+ const validateSteps = async (step: number) => {
42
+ // 模拟校验
43
+ await new Promise((resolve) => setTimeout(resolve, 500))
44
+ ElMessage.success(`步骤 ${step + 1} 校验通过`)
45
+ return true
46
+ }
47
+
48
+ const handleOk = (showLoading: any, hideLoading: any) => {
49
+ showLoading('提交中...')
50
+ setTimeout(() => {
51
+ hideLoading()
52
+ ElMessage.success('提交成功')
53
+ visible.value = false
54
+ stepActive.value = 0
55
+ }, 1000)
56
+ }
57
+ </script>
@@ -1,29 +1,29 @@
1
- <template>
2
- <div>
3
- <j-button label="打开全屏弹窗" @click="visible = true" />
4
- <j-dialog-full v-model:visible="visible" title="全屏弹窗" @ok="handleOk" @cancel="handleCancel">
5
- <div style="padding: 24px">
6
- <p>这是一个全屏弹窗示例。</p>
7
- <p>全屏弹窗占据整个屏幕,适用于复杂的表单或大量内容展示。</p>
8
- </div>
9
- </j-dialog-full>
10
- </div>
11
- </template>
12
-
13
- <script setup lang="ts">
14
- import { ref } from 'vue'
15
-
16
- const visible = ref(false)
17
-
18
- const handleOk = (showLoading: any, hideLoading: any) => {
19
- showLoading('保存中...')
20
- setTimeout(() => {
21
- hideLoading()
22
- visible.value = false
23
- }, 1000)
24
- }
25
-
26
- const handleCancel = () => {
27
- visible.value = false
28
- }
29
- </script>
1
+ <template>
2
+ <div>
3
+ <j-button label="打开全屏弹窗" @click="visible = true" />
4
+ <j-dialog-full v-model:visible="visible" title="全屏弹窗" @ok="handleOk" @cancel="handleCancel">
5
+ <div style="padding: 24px">
6
+ <p>这是一个全屏弹窗示例。</p>
7
+ <p>全屏弹窗占据整个屏幕,适用于复杂的表单或大量内容展示。</p>
8
+ </div>
9
+ </j-dialog-full>
10
+ </div>
11
+ </template>
12
+
13
+ <script setup lang="ts">
14
+ import { ref } from 'vue'
15
+
16
+ const visible = ref(false)
17
+
18
+ const handleOk = (showLoading: any, hideLoading: any) => {
19
+ showLoading('保存中...')
20
+ setTimeout(() => {
21
+ hideLoading()
22
+ visible.value = false
23
+ }, 1000)
24
+ }
25
+
26
+ const handleCancel = () => {
27
+ visible.value = false
28
+ }
29
+ </script>
@@ -1,45 +1,45 @@
1
- <template>
2
- <div>
3
- <j-button label="打开自定义按钮弹窗" @click="visible = true" />
4
- <j-dialog-full v-model:visible="visible" title="自定义按钮" :buttons="buttons" @ok="handleOk">
5
- <div style="padding: 24px">
6
- <p>通过 buttons 属性可以自定义顶部操作按钮。</p>
7
- <p>支持设置按钮类型、样式、图标、点击事件等。</p>
8
- </div>
9
- </j-dialog-full>
10
- </div>
11
- </template>
12
-
13
- <script setup lang="ts">
14
- import { ref } from 'vue'
15
- import { ElMessage } from 'element-plus'
16
-
17
- const visible = ref(false)
18
-
19
- const buttons = [
20
- {
21
- prop: 'refresh',
22
- label: '刷新',
23
- icon: 'material-symbols-light:refresh',
24
- click: () => {
25
- ElMessage.success('刷新成功')
26
- },
27
- },
28
- {
29
- prop: 'export',
30
- label: '导出',
31
- icon: 'material-symbols-light:download',
32
- click: () => {
33
- ElMessage.success('导出成功')
34
- },
35
- },
36
- ]
37
-
38
- const handleOk = (showLoading: any, hideLoading: any) => {
39
- showLoading('保存中...')
40
- setTimeout(() => {
41
- hideLoading()
42
- visible.value = false
43
- }, 1000)
44
- }
45
- </script>
1
+ <template>
2
+ <div>
3
+ <j-button label="打开自定义按钮弹窗" @click="visible = true" />
4
+ <j-dialog-full v-model:visible="visible" title="自定义按钮" :buttons="buttons" @ok="handleOk">
5
+ <div style="padding: 24px">
6
+ <p>通过 buttons 属性可以自定义顶部操作按钮。</p>
7
+ <p>支持设置按钮类型、样式、图标、点击事件等。</p>
8
+ </div>
9
+ </j-dialog-full>
10
+ </div>
11
+ </template>
12
+
13
+ <script setup lang="ts">
14
+ import { ref } from 'vue'
15
+ import { ElMessage } from 'element-plus'
16
+
17
+ const visible = ref(false)
18
+
19
+ const buttons = [
20
+ {
21
+ prop: 'refresh',
22
+ label: '刷新',
23
+ icon: 'material-symbols-light:refresh',
24
+ click: () => {
25
+ ElMessage.success('刷新成功')
26
+ },
27
+ },
28
+ {
29
+ prop: 'export',
30
+ label: '导出',
31
+ icon: 'material-symbols-light:download',
32
+ click: () => {
33
+ ElMessage.success('导出成功')
34
+ },
35
+ },
36
+ ]
37
+
38
+ const handleOk = (showLoading: any, hideLoading: any) => {
39
+ showLoading('保存中...')
40
+ setTimeout(() => {
41
+ hideLoading()
42
+ visible.value = false
43
+ }, 1000)
44
+ }
45
+ </script>
@@ -1,18 +1,18 @@
1
- <template>
2
- <div>
3
- <j-button label="打开无按钮弹窗" @click="visible = true" />
4
- <j-dialog-full v-model:visible="visible" title="无按钮弹窗" :has-btns="false">
5
- <div style="padding: 24px">
6
- <p>设置 has-btns 为 false 可以隐藏所有按钮。</p>
7
- <p>适用于只展示内容不需要操作的场景。</p>
8
- <p>可以按 ESC 键关闭弹窗,需要设置 keyboard 为 true。</p>
9
- </div>
10
- </j-dialog-full>
11
- </div>
12
- </template>
13
-
14
- <script setup lang="ts">
15
- import { ref } from 'vue'
16
-
17
- const visible = ref(false)
18
- </script>
1
+ <template>
2
+ <div>
3
+ <j-button label="打开无按钮弹窗" @click="visible = true" />
4
+ <j-dialog-full v-model:visible="visible" title="无按钮弹窗" :has-btns="false">
5
+ <div style="padding: 24px">
6
+ <p>设置 has-btns 为 false 可以隐藏所有按钮。</p>
7
+ <p>适用于只展示内容不需要操作的场景。</p>
8
+ <p>可以按 ESC 键关闭弹窗,需要设置 keyboard 为 true。</p>
9
+ </div>
10
+ </j-dialog-full>
11
+ </div>
12
+ </template>
13
+
14
+ <script setup lang="ts">
15
+ import { ref } from 'vue'
16
+
17
+ const visible = ref(false)
18
+ </script>
@@ -1,27 +1,27 @@
1
- <template>
2
- <div>
3
- <j-button label="打开无表头弹窗" @click="visible = true" />
4
- <j-dialog-full v-model:visible="visible" :has-header="false">
5
- <div
6
- style="
7
- padding: 24px;
8
- height: 100%;
9
- display: flex;
10
- align-items: center;
11
- justify-content: center;
12
- flex-direction: column;
13
- "
14
- >
15
- <h2>无表头弹窗</h2>
16
- <p>设置 has-header 为 false 可以隐藏表头区域。</p>
17
- <j-button label="关闭" style="margin-top: 20px" @click="visible = false" />
18
- </div>
19
- </j-dialog-full>
20
- </div>
21
- </template>
22
-
23
- <script setup lang="ts">
24
- import { ref } from 'vue'
25
-
26
- const visible = ref(false)
27
- </script>
1
+ <template>
2
+ <div>
3
+ <j-button label="打开无表头弹窗" @click="visible = true" />
4
+ <j-dialog-full v-model:visible="visible" :has-header="false">
5
+ <div
6
+ style="
7
+ padding: 24px;
8
+ height: 100%;
9
+ display: flex;
10
+ align-items: center;
11
+ justify-content: center;
12
+ flex-direction: column;
13
+ "
14
+ >
15
+ <h2>无表头弹窗</h2>
16
+ <p>设置 has-header 为 false 可以隐藏表头区域。</p>
17
+ <j-button label="关闭" style="margin-top: 20px" @click="visible = false" />
18
+ </div>
19
+ </j-dialog-full>
20
+ </div>
21
+ </template>
22
+
23
+ <script setup lang="ts">
24
+ import { ref } from 'vue'
25
+
26
+ const visible = ref(false)
27
+ </script>
@@ -1,71 +1,71 @@
1
- <template>
2
- <div>
3
- <j-button label="打开步骤弹窗" @click="visible = true" />
4
- <j-dialog-full
5
- v-model:visible="visible"
6
- v-model:step-active="stepActive"
7
- title="步骤弹窗"
8
- :is-step="true"
9
- :steps="steps"
10
- :validate-steps="validateSteps"
11
- @ok="handleOk"
12
- >
13
- <div style="padding: 24px">
14
- <div v-if="stepActive === 0">
15
- <h3>第一步:基本信息</h3>
16
- <p>请填写基本信息</p>
17
- <el-input v-model="form.name" placeholder="请输入姓名" style="margin-top: 16px" />
18
- </div>
19
- <div v-if="stepActive === 1">
20
- <h3>第二步:详细信息</h3>
21
- <p>请填写详细信息</p>
22
- <el-input v-model="form.email" placeholder="请输入邮箱" style="margin-top: 16px" />
23
- </div>
24
- <div v-if="stepActive === 2">
25
- <h3>第三步:确认信息</h3>
26
- <p>姓名: {{ form.name }}</p>
27
- <p>邮箱: {{ form.email }}</p>
28
- </div>
29
- </div>
30
- </j-dialog-full>
31
- </div>
32
- </template>
33
-
34
- <script setup lang="ts">
35
- import { ref, reactive } from 'vue'
36
- import { ElMessage } from 'element-plus'
37
-
38
- const visible = ref(false)
39
- const stepActive = ref(0)
40
-
41
- const steps = ['基本信息', '详细信息', '确认信息']
42
-
43
- const form = reactive({
44
- name: '',
45
- email: '',
46
- })
47
-
48
- const validateSteps = async (step: number) => {
49
- if (step === 0 && !form.name) {
50
- ElMessage.warning('请输入姓名')
51
- return false
52
- }
53
- if (step === 1 && !form.email) {
54
- ElMessage.warning('请输入邮箱')
55
- return false
56
- }
57
- return true
58
- }
59
-
60
- const handleOk = (showLoading: any, hideLoading: any) => {
61
- showLoading('保存中...')
62
- setTimeout(() => {
63
- hideLoading()
64
- visible.value = false
65
- stepActive.value = 0
66
- form.name = ''
67
- form.email = ''
68
- ElMessage.success('保存成功')
69
- }, 1000)
70
- }
71
- </script>
1
+ <template>
2
+ <div>
3
+ <j-button label="打开步骤弹窗" @click="visible = true" />
4
+ <j-dialog-full
5
+ v-model:visible="visible"
6
+ v-model:step-active="stepActive"
7
+ title="步骤弹窗"
8
+ :is-step="true"
9
+ :steps="steps"
10
+ :validate-steps="validateSteps"
11
+ @ok="handleOk"
12
+ >
13
+ <div style="padding: 24px">
14
+ <div v-if="stepActive === 0">
15
+ <h3>第一步:基本信息</h3>
16
+ <p>请填写基本信息</p>
17
+ <el-input v-model="form.name" placeholder="请输入姓名" style="margin-top: 16px" />
18
+ </div>
19
+ <div v-if="stepActive === 1">
20
+ <h3>第二步:详细信息</h3>
21
+ <p>请填写详细信息</p>
22
+ <el-input v-model="form.email" placeholder="请输入邮箱" style="margin-top: 16px" />
23
+ </div>
24
+ <div v-if="stepActive === 2">
25
+ <h3>第三步:确认信息</h3>
26
+ <p>姓名: {{ form.name }}</p>
27
+ <p>邮箱: {{ form.email }}</p>
28
+ </div>
29
+ </div>
30
+ </j-dialog-full>
31
+ </div>
32
+ </template>
33
+
34
+ <script setup lang="ts">
35
+ import { ref, reactive } from 'vue'
36
+ import { ElMessage } from 'element-plus'
37
+
38
+ const visible = ref(false)
39
+ const stepActive = ref(0)
40
+
41
+ const steps = ['基本信息', '详细信息', '确认信息']
42
+
43
+ const form = reactive({
44
+ name: '',
45
+ email: '',
46
+ })
47
+
48
+ const validateSteps = async (step: number) => {
49
+ if (step === 0 && !form.name) {
50
+ ElMessage.warning('请输入姓名')
51
+ return false
52
+ }
53
+ if (step === 1 && !form.email) {
54
+ ElMessage.warning('请输入邮箱')
55
+ return false
56
+ }
57
+ return true
58
+ }
59
+
60
+ const handleOk = (showLoading: any, hideLoading: any) => {
61
+ showLoading('保存中...')
62
+ setTimeout(() => {
63
+ hideLoading()
64
+ visible.value = false
65
+ stepActive.value = 0
66
+ form.name = ''
67
+ form.email = ''
68
+ ElMessage.success('保存成功')
69
+ }, 1000)
70
+ }
71
+ </script>