@a2simcode/ui 0.0.114 → 0.0.115

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 (333) hide show
  1. package/.cursor/skills/ui-component-helper/README.md +86 -86
  2. package/.cursor/skills/ui-component-helper/SKILL.md +115 -115
  3. package/LICENSE +53 -53
  4. package/README.md +156 -156
  5. package/dist/components/date/index.d.ts +3 -0
  6. package/dist/components/date/src/date.vue.d.ts +2 -0
  7. package/dist/components/time/index.d.ts +3 -0
  8. package/dist/components/time/src/time.vue.d.ts +2 -0
  9. package/dist/simcode-ui.es.js +3892 -3858
  10. package/dist/simcode-ui.umd.js +2 -2
  11. package/dist/stats.html +1 -1
  12. package/dist/ui.css +1 -1
  13. package/docs/components/autocomplete.md +89 -89
  14. package/docs/components/barcode.md +101 -101
  15. package/docs/components/button-select.md +24 -24
  16. package/docs/components/button.md +117 -117
  17. package/docs/components/buttons.md +119 -119
  18. package/docs/components/cascader-select.md +114 -114
  19. package/docs/components/checkbox.md +114 -114
  20. package/docs/components/code-mirror.md +85 -85
  21. package/docs/components/collapse.md +26 -26
  22. package/docs/components/comp.md +71 -71
  23. package/docs/components/count-up.md +24 -24
  24. package/docs/components/count.md +24 -24
  25. package/docs/components/data-panel.md +24 -24
  26. package/docs/components/date.md +76 -76
  27. package/docs/components/dialog-full.md +112 -112
  28. package/docs/components/dialog.md +127 -127
  29. package/docs/components/divider.md +24 -24
  30. package/docs/components/drawer.md +127 -127
  31. package/docs/components/dynamic-layer.md +118 -118
  32. package/docs/components/echarts.md +72 -72
  33. package/docs/components/editor.md +24 -24
  34. package/docs/components/form.md +27 -27
  35. package/docs/components/guid.md +39 -39
  36. package/docs/components/hpanel.md +24 -24
  37. package/docs/components/icon.md +56 -56
  38. package/docs/components/input-button.md +24 -24
  39. package/docs/components/input-code.md +24 -24
  40. package/docs/components/input-color.md +114 -114
  41. package/docs/components/input-layer.md +26 -26
  42. package/docs/components/input-rows.md +370 -370
  43. package/docs/components/input-tag.md +50 -50
  44. package/docs/components/input.md +129 -129
  45. package/docs/components/layer-form.md +61 -61
  46. package/docs/components/layer.md +127 -127
  47. package/docs/components/layout.md +132 -132
  48. package/docs/components/map.md +24 -24
  49. package/docs/components/menu.md +121 -121
  50. package/docs/components/meta/buttons.ts +76 -76
  51. package/docs/components/meta/comp.ts +236 -236
  52. package/docs/components/meta/date.ts +267 -256
  53. package/docs/components/meta/echarts.ts +64 -64
  54. package/docs/components/meta/form.ts +165 -165
  55. package/docs/components/meta/input-cards.ts +112 -112
  56. package/docs/components/meta/input-color.ts +243 -243
  57. package/docs/components/meta/input-rows.ts +113 -113
  58. package/docs/components/meta/layer-form.ts +56 -56
  59. package/docs/components/meta/map.ts +68 -68
  60. package/docs/components/meta/panel.ts +152 -152
  61. package/docs/components/meta/slider.ts +270 -270
  62. package/docs/components/meta/table-panel.ts +232 -232
  63. package/docs/components/meta/table.ts +386 -386
  64. package/docs/components/meta/tabs.ts +146 -146
  65. package/docs/components/meta/tree-select.ts +199 -199
  66. package/docs/components/meta/workflow-viewer.ts +55 -55
  67. package/docs/components/number.md +124 -124
  68. package/docs/components/page.md +87 -87
  69. package/docs/components/panel.md +37 -37
  70. package/docs/components/radio.md +87 -87
  71. package/docs/components/rate.md +71 -71
  72. package/docs/components/select.md +133 -133
  73. package/docs/components/slider-captcha.md +41 -41
  74. package/docs/components/slider.md +101 -101
  75. package/docs/components/switch.md +90 -90
  76. package/docs/components/table-panel.md +236 -236
  77. package/docs/components/table.md +391 -391
  78. package/docs/components/tabs.md +26 -26
  79. package/docs/components/title.md +24 -24
  80. package/docs/components/tree.md +207 -207
  81. package/docs/components/upload.md +117 -117
  82. package/docs/components/workflow-viewer.md +21 -21
  83. package/docs/components/workflow.md +21 -21
  84. package/docs/examples/autocomplete/advanced.vue +35 -35
  85. package/docs/examples/autocomplete/basic.vue +32 -32
  86. package/docs/examples/autocomplete/clearable.vue +33 -33
  87. package/docs/examples/autocomplete/custom-template.vue +49 -49
  88. package/docs/examples/autocomplete/disabled.vue +33 -33
  89. package/docs/examples/autocomplete/icon.vue +37 -37
  90. package/docs/examples/barcode/all-types.vue +380 -380
  91. package/docs/examples/barcode/basic.vue +14 -14
  92. package/docs/examples/barcode/props-appearance.vue +243 -243
  93. package/docs/examples/barcode/props-geometry.vue +143 -143
  94. package/docs/examples/barcode/props-logic.vue +216 -216
  95. package/docs/examples/barcode/props-symbology.vue +199 -199
  96. package/docs/examples/barcode/props-text.vue +268 -268
  97. package/docs/examples/button/basic.vue +7 -7
  98. package/docs/examples/button/danger-ghost.vue +17 -17
  99. package/docs/examples/button/disabled.vue +10 -10
  100. package/docs/examples/button/loading.vue +6 -6
  101. package/docs/examples/button/shape.vue +7 -7
  102. package/docs/examples/button/size.vue +14 -14
  103. package/docs/examples/button/type.vue +9 -9
  104. package/docs/examples/button-select/basic.vue +19 -19
  105. package/docs/examples/buttons/basic.vue +45 -45
  106. package/docs/examples/buttons/disabled.vue +36 -36
  107. package/docs/examples/buttons/dropdown.vue +63 -63
  108. package/docs/examples/buttons/group.vue +52 -52
  109. package/docs/examples/buttons/link.vue +47 -47
  110. package/docs/examples/buttons/popup.vue +39 -39
  111. package/docs/examples/buttons/size.vue +45 -45
  112. package/docs/examples/cascader-select/basic.vue +28 -28
  113. package/docs/examples/cascader-select/clearable.vue +34 -34
  114. package/docs/examples/cascader-select/disabled.vue +43 -43
  115. package/docs/examples/cascader-select/filterable.vue +37 -37
  116. package/docs/examples/cascader-select/methods.vue +84 -84
  117. package/docs/examples/cascader-select/multiple.vue +38 -38
  118. package/docs/examples/cascader-select/slot.vue +45 -45
  119. package/docs/examples/checkbox/basic.vue +18 -18
  120. package/docs/examples/checkbox/button.vue +19 -19
  121. package/docs/examples/checkbox/color.vue +25 -25
  122. package/docs/examples/checkbox/disabled.vue +17 -17
  123. package/docs/examples/checkbox/min-max.vue +20 -20
  124. package/docs/examples/checkbox/mixed.vue +56 -56
  125. package/docs/examples/checkbox/size.vue +28 -28
  126. package/docs/examples/code-mirror/basic.vue +11 -11
  127. package/docs/examples/code-mirror/events.vue +42 -42
  128. package/docs/examples/code-mirror/height.vue +25 -25
  129. package/docs/examples/code-mirror/mode.vue +33 -33
  130. package/docs/examples/code-mirror/readonly.vue +14 -14
  131. package/docs/examples/collapse/basic.vue +82 -82
  132. package/docs/examples/comp/basic.vue +7 -7
  133. package/docs/examples/comp/collapse.vue +38 -38
  134. package/docs/examples/comp/tabs.vue +38 -38
  135. package/docs/examples/count/basic.vue +101 -101
  136. package/docs/examples/count-up/basic.vue +89 -89
  137. package/docs/examples/data-panel/basic.vue +110 -110
  138. package/docs/examples/date/basic.vue +73 -73
  139. package/docs/examples/date/default-value.vue +59 -59
  140. package/docs/examples/date/format.vue +75 -75
  141. package/docs/examples/date/range.vue +66 -66
  142. package/docs/examples/date/types.vue +79 -79
  143. package/docs/examples/dialog/basic.vue +36 -36
  144. package/docs/examples/dialog/custom-buttons.vue +44 -44
  145. package/docs/examples/dialog/fullscreen.vue +23 -23
  146. package/docs/examples/dialog/no-mask.vue +17 -17
  147. package/docs/examples/dialog/size.vue +44 -44
  148. package/docs/examples/dialog/steps.vue +57 -57
  149. package/docs/examples/dialog-full/basic.vue +29 -29
  150. package/docs/examples/dialog-full/custom-buttons.vue +45 -45
  151. package/docs/examples/dialog-full/no-buttons.vue +18 -18
  152. package/docs/examples/dialog-full/no-header.vue +27 -27
  153. package/docs/examples/dialog-full/steps.vue +71 -71
  154. package/docs/examples/divider/basic.vue +52 -52
  155. package/docs/examples/drawer/basic.vue +35 -35
  156. package/docs/examples/drawer/custom-buttons.vue +34 -34
  157. package/docs/examples/drawer/direction.vue +47 -47
  158. package/docs/examples/drawer/mask.vue +36 -36
  159. package/docs/examples/drawer/no-buttons.vue +20 -20
  160. package/docs/examples/drawer/size.vue +28 -28
  161. package/docs/examples/dynamic-layer/basic.vue +33 -33
  162. package/docs/examples/dynamic-layer/custom-buttons.vue +43 -43
  163. package/docs/examples/dynamic-layer/form.vue +73 -73
  164. package/docs/examples/dynamic-layer/steps.vue +52 -52
  165. package/docs/examples/dynamic-layer/types.vue +40 -40
  166. package/docs/examples/echarts/basic.vue +31 -31
  167. package/docs/examples/echarts/dynamic.vue +43 -43
  168. package/docs/examples/echarts/line.vue +46 -46
  169. package/docs/examples/echarts/pie.vue +44 -44
  170. package/docs/examples/editor/basic.vue +15 -15
  171. package/docs/examples/form/basic.vue +478 -477
  172. package/docs/examples/guid/basic.vue +10 -10
  173. package/docs/examples/guid/size.vue +13 -13
  174. package/docs/examples/hpanel/basic.vue +79 -79
  175. package/docs/examples/icon/basic.vue +9 -9
  176. package/docs/examples/icon/rotate-flip.vue +9 -9
  177. package/docs/examples/icon/size.vue +7 -7
  178. package/docs/examples/input/basic.vue +10 -10
  179. package/docs/examples/input/clearable.vue +12 -12
  180. package/docs/examples/input/disabled.vue +6 -6
  181. package/docs/examples/input/icon.vue +23 -23
  182. package/docs/examples/input/password.vue +18 -18
  183. package/docs/examples/input/size.vue +13 -13
  184. package/docs/examples/input/textarea.vue +25 -25
  185. package/docs/examples/input/word-limit.vue +28 -28
  186. package/docs/examples/input-button/basic.vue +33 -33
  187. package/docs/examples/input-code/basic.vue +29 -29
  188. package/docs/examples/input-color/basic.vue +10 -10
  189. package/docs/examples/input-color/disabled.vue +13 -13
  190. package/docs/examples/input-color/format.vue +17 -17
  191. package/docs/examples/input-color/no-alpha.vue +13 -13
  192. package/docs/examples/input-color/only-button.vue +15 -15
  193. package/docs/examples/input-color/predefine.vue +31 -31
  194. package/docs/examples/input-color/size.vue +15 -15
  195. package/docs/examples/input-layer/basic.vue +69 -69
  196. package/docs/examples/input-rows/basic.vue +73 -73
  197. package/docs/examples/input-rows/drag.vue +48 -48
  198. package/docs/examples/input-rows/layer-form.vue +85 -85
  199. package/docs/examples/input-rows/nested.vue +91 -91
  200. package/docs/examples/input-tag/basic.vue +27 -27
  201. package/docs/examples/input-tag/colors.vue +23 -23
  202. package/docs/examples/input-tag/readonly.vue +17 -17
  203. package/docs/examples/layer/basic.vue +43 -43
  204. package/docs/examples/layer/custom-buttons.vue +61 -61
  205. package/docs/examples/layer/drawer.vue +37 -37
  206. package/docs/examples/layer/full.vue +38 -38
  207. package/docs/examples/layer/modal.vue +34 -34
  208. package/docs/examples/layer/steps.vue +46 -46
  209. package/docs/examples/layer-form/basic.vue +76 -76
  210. package/docs/examples/layer-form/config.vue +82 -82
  211. package/docs/examples/layer-form/size.vue +72 -72
  212. package/docs/examples/layout/basic.vue +36 -36
  213. package/docs/examples/layout/custom-size.vue +50 -50
  214. package/docs/examples/layout/disable-move.vue +37 -37
  215. package/docs/examples/layout/hide-mid-when-narrow.vue +96 -96
  216. package/docs/examples/layout/min-size.vue +73 -73
  217. package/docs/examples/layout/percent-size.vue +80 -80
  218. package/docs/examples/layout/simple.vue +22 -22
  219. package/docs/examples/layout/top-side.vue +34 -34
  220. package/docs/examples/map/basic.vue +22 -22
  221. package/docs/examples/menu/basic.vue +58 -58
  222. package/docs/examples/menu/collapsed.vue +49 -49
  223. package/docs/examples/menu/horizontal.vue +44 -44
  224. package/docs/examples/menu/selection-test.vue +104 -104
  225. package/docs/examples/menu/theme.vue +46 -46
  226. package/docs/examples/menu/vertical.vue +46 -46
  227. package/docs/examples/number/advanced.vue +143 -143
  228. package/docs/examples/number/basic.vue +63 -63
  229. package/docs/examples/number/disabled.vue +49 -49
  230. package/docs/examples/number/size.vue +42 -42
  231. package/docs/examples/number/slots.vue +123 -123
  232. package/docs/examples/number/step-strictly.vue +41 -41
  233. package/docs/examples/number/step.vue +47 -47
  234. package/docs/examples/page/basic.vue +41 -41
  235. package/docs/examples/page/dept-user-management.vue +211 -211
  236. package/docs/examples/page/init.vue +87 -87
  237. package/docs/examples/page/log.vue +453 -453
  238. package/docs/examples/page/user-management.vue +313 -313
  239. package/docs/examples/panel/tool-buttons.vue +18 -18
  240. package/docs/examples/radio/basic.vue +17 -17
  241. package/docs/examples/radio/button.vue +17 -17
  242. package/docs/examples/radio/color.vue +18 -18
  243. package/docs/examples/radio/disabled.vue +17 -17
  244. package/docs/examples/radio/size.vue +29 -29
  245. package/docs/examples/rate/basic.vue +24 -24
  246. package/docs/examples/rate/half.vue +24 -24
  247. package/docs/examples/rate/readonly.vue +11 -11
  248. package/docs/examples/rate/text.vue +32 -32
  249. package/docs/examples/select/basic.vue +16 -16
  250. package/docs/examples/select/clearable.vue +22 -22
  251. package/docs/examples/select/disabled.vue +31 -31
  252. package/docs/examples/select/filterable.vue +24 -24
  253. package/docs/examples/select/group.vue +23 -23
  254. package/docs/examples/select/icon.vue +16 -16
  255. package/docs/examples/select/multiple.vue +18 -18
  256. package/docs/examples/select/size.vue +39 -39
  257. package/docs/examples/slider/basic.vue +42 -42
  258. package/docs/examples/slider/disabled.vue +17 -17
  259. package/docs/examples/slider/marks.vue +30 -30
  260. package/docs/examples/slider/size.vue +37 -37
  261. package/docs/examples/slider/tooltip.vue +36 -36
  262. package/docs/examples/slider/vertical.vue +26 -26
  263. package/docs/examples/slider-captcha/basic.vue +44 -44
  264. package/docs/examples/slider-captcha/custom.vue +48 -48
  265. package/docs/examples/switch/basic.vue +16 -16
  266. package/docs/examples/switch/disabled.vue +13 -13
  267. package/docs/examples/switch/loading.vue +13 -13
  268. package/docs/examples/switch/size.vue +15 -15
  269. package/docs/examples/switch/text.vue +13 -13
  270. package/docs/examples/table/action-filter.vue +126 -126
  271. package/docs/examples/table/actions.vue +116 -116
  272. package/docs/examples/table/add-row.vue +103 -103
  273. package/docs/examples/table/basic.vue +168 -168
  274. package/docs/examples/table/checkbox-layout.vue +68 -68
  275. package/docs/examples/table/custom-layout.vue +115 -115
  276. package/docs/examples/table/dynamic-type.vue +72 -72
  277. package/docs/examples/table/editable.vue +262 -262
  278. package/docs/examples/table/field-selection.vue +87 -87
  279. package/docs/examples/table/frozen-column.vue +140 -140
  280. package/docs/examples/table/height-mode.vue +99 -99
  281. package/docs/examples/table/icon.vue +85 -85
  282. package/docs/examples/table/link.vue +66 -66
  283. package/docs/examples/table/multiple.vue +178 -178
  284. package/docs/examples/table/pagination.vue +151 -151
  285. package/docs/examples/table/single-selection.vue +64 -64
  286. package/docs/examples/table/sub-table-lazy.vue +97 -97
  287. package/docs/examples/table/sub-table.vue +103 -103
  288. package/docs/examples/table/tag.vue +43 -43
  289. package/docs/examples/table/tree-column.vue +119 -119
  290. package/docs/examples/table/tree-data.vue +141 -141
  291. package/docs/examples/table/tree-default-expand-all.vue +60 -60
  292. package/docs/examples/table/tree-lazy.vue +80 -80
  293. package/docs/examples/table/tree-set-selection.vue +75 -75
  294. package/docs/examples/table-panel/basic.vue +228 -228
  295. package/docs/examples/table-panel/batch-operations.vue +285 -285
  296. package/docs/examples/table-panel/button-visibility.vue +88 -88
  297. package/docs/examples/table-panel/filter.vue +219 -219
  298. package/docs/examples/table-panel/get-selection.vue +111 -111
  299. package/docs/examples/table-panel/multiple-selection.vue +243 -243
  300. package/docs/examples/table-panel/pagination.vue +133 -133
  301. package/docs/examples/table-panel/sub-table-lazy.vue +118 -118
  302. package/docs/examples/table-panel/tree-parent-key.vue +67 -67
  303. package/docs/examples/tabs/basic.vue +98 -98
  304. package/docs/examples/time/base.vue +67 -67
  305. package/docs/examples/title/basic.vue +80 -80
  306. package/docs/examples/tree/accordion.vue +46 -46
  307. package/docs/examples/tree/basic.vue +50 -50
  308. package/docs/examples/tree/buttons.vue +53 -53
  309. package/docs/examples/tree/checkable.vue +52 -52
  310. package/docs/examples/tree/custom-keys.vue +39 -39
  311. package/docs/examples/tree/default-expanded.vue +52 -52
  312. package/docs/examples/tree/draggable.vue +29 -29
  313. package/docs/examples/tree/expand-on-click.vue +39 -39
  314. package/docs/examples/tree/flat-data.vue +20 -20
  315. package/docs/examples/tree/icon.vue +40 -40
  316. package/docs/examples/tree/load-data.vue +37 -37
  317. package/docs/examples/tree/methods.vue +74 -74
  318. package/docs/examples/tree/theme.vue +33 -33
  319. package/docs/examples/upload/accept.vue +31 -31
  320. package/docs/examples/upload/basic.vue +12 -12
  321. package/docs/examples/upload/drag.vue +11 -11
  322. package/docs/examples/upload/image.vue +17 -17
  323. package/docs/examples/upload/limit.vue +20 -20
  324. package/docs/examples/upload/multiple.vue +17 -17
  325. package/docs/examples/upload/readonly.vue +17 -17
  326. package/docs/examples/utils/cipher.vue +160 -160
  327. package/docs/examples/utils/common.vue +153 -153
  328. package/docs/examples/utils/date.vue +56 -56
  329. package/docs/examples/utils/dom.vue +52 -52
  330. package/docs/examples/utils/is.vue +70 -70
  331. package/docs/examples/workflow/basic.vue +265 -265
  332. package/docs/examples/workflow-viewer/basic.vue +248 -248
  333. package/package.json +23 -23
@@ -1,17 +1,17 @@
1
- <template>
2
- <div>
3
- <j-button label="无遮罩弹窗" @click="visible = true" />
4
- <j-dialog v-model:visible="visible" title="无遮罩弹窗" :width="500" :height="350" :mask="false">
5
- <div style="padding: 16px">
6
- <p>这个弹窗没有遮罩层。</p>
7
- <p>你可以与页面其他内容进行交互。</p>
8
- </div>
9
- </j-dialog>
10
- </div>
11
- </template>
12
-
13
- <script setup lang="ts">
14
- import { ref } from 'vue'
15
-
16
- const visible = ref(false)
17
- </script>
1
+ <template>
2
+ <div>
3
+ <j-button label="无遮罩弹窗" @click="visible = true" />
4
+ <j-dialog v-model:visible="visible" title="无遮罩弹窗" :width="500" :height="350" :mask="false">
5
+ <div style="padding: 16px">
6
+ <p>这个弹窗没有遮罩层。</p>
7
+ <p>你可以与页面其他内容进行交互。</p>
8
+ </div>
9
+ </j-dialog>
10
+ </div>
11
+ </template>
12
+
13
+ <script setup lang="ts">
14
+ import { ref } from 'vue'
15
+
16
+ const visible = ref(false)
17
+ </script>
@@ -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>