@a2simcode/ui 0.0.185 → 0.0.187

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 (348) 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/inject-provide.d.ts +2 -0
  6. package/dist/simcode-ui.es.js +10481 -25373
  7. package/dist/simcode-ui.umd.js +2 -14
  8. package/dist/stats.html +1 -1
  9. package/dist/ui.css +1 -1
  10. package/docs/components/autocomplete.md +89 -89
  11. package/docs/components/barcode.md +101 -101
  12. package/docs/components/button-select.md +24 -24
  13. package/docs/components/button.md +117 -117
  14. package/docs/components/buttons.md +119 -119
  15. package/docs/components/cascader-select.md +114 -114
  16. package/docs/components/checkbox.md +114 -114
  17. package/docs/components/code-mirror.md +85 -85
  18. package/docs/components/collapse.md +26 -26
  19. package/docs/components/comp.md +71 -71
  20. package/docs/components/count-up.md +24 -24
  21. package/docs/components/count.md +24 -24
  22. package/docs/components/data-panel.md +24 -24
  23. package/docs/components/date.md +76 -76
  24. package/docs/components/dialog-full.md +112 -112
  25. package/docs/components/dialog.md +127 -127
  26. package/docs/components/divider.md +24 -24
  27. package/docs/components/drawer.md +127 -127
  28. package/docs/components/dynamic-layer.md +118 -118
  29. package/docs/components/echarts.md +72 -72
  30. package/docs/components/editor.md +24 -24
  31. package/docs/components/form.md +72 -72
  32. package/docs/components/guid.md +39 -39
  33. package/docs/components/hpanel.md +24 -24
  34. package/docs/components/icon.md +56 -56
  35. package/docs/components/input-button.md +24 -24
  36. package/docs/components/input-code.md +24 -24
  37. package/docs/components/input-color.md +114 -114
  38. package/docs/components/input-layer.md +56 -41
  39. package/docs/components/input-rows.md +370 -370
  40. package/docs/components/input-tag.md +50 -50
  41. package/docs/components/input.md +129 -129
  42. package/docs/components/layer-form.md +61 -61
  43. package/docs/components/layer.md +127 -127
  44. package/docs/components/layout.md +132 -132
  45. package/docs/components/map.md +24 -24
  46. package/docs/components/menu.md +121 -121
  47. package/docs/components/meta/button.ts +212 -212
  48. package/docs/components/meta/buttons.ts +76 -76
  49. package/docs/components/meta/code-mirror.ts +108 -108
  50. package/docs/components/meta/comp.ts +236 -236
  51. package/docs/components/meta/date.ts +267 -267
  52. package/docs/components/meta/echarts.ts +64 -64
  53. package/docs/components/meta/form-item.ts +50 -50
  54. package/docs/components/meta/form.ts +181 -181
  55. package/docs/components/meta/input-button.ts +165 -165
  56. package/docs/components/meta/input-cards.ts +112 -112
  57. package/docs/components/meta/input-code.ts +151 -151
  58. package/docs/components/meta/input-color.ts +243 -243
  59. package/docs/components/meta/input-layer.ts +382 -382
  60. package/docs/components/meta/input-rows.ts +119 -119
  61. package/docs/components/meta/layer-form.ts +56 -56
  62. package/docs/components/meta/map.ts +68 -68
  63. package/docs/components/meta/panel.ts +152 -152
  64. package/docs/components/meta/slider.ts +270 -270
  65. package/docs/components/meta/table-panel.ts +237 -237
  66. package/docs/components/meta/table.ts +391 -391
  67. package/docs/components/meta/tabs.ts +146 -146
  68. package/docs/components/meta/title.ts +91 -91
  69. package/docs/components/meta/tree-select.ts +199 -199
  70. package/docs/components/meta/tree.ts +219 -219
  71. package/docs/components/meta/vpanel.ts +19 -19
  72. package/docs/components/meta/workflow-viewer.ts +55 -55
  73. package/docs/components/number.md +124 -124
  74. package/docs/components/page.md +102 -102
  75. package/docs/components/panel.md +37 -37
  76. package/docs/components/radio.md +87 -87
  77. package/docs/components/rate.md +71 -71
  78. package/docs/components/select.md +133 -133
  79. package/docs/components/slider-captcha.md +41 -41
  80. package/docs/components/slider.md +101 -101
  81. package/docs/components/switch.md +90 -90
  82. package/docs/components/table-panel.md +251 -251
  83. package/docs/components/table.md +391 -391
  84. package/docs/components/tabs.md +26 -26
  85. package/docs/components/title.md +24 -24
  86. package/docs/components/tree.md +207 -207
  87. package/docs/components/upload.md +117 -117
  88. package/docs/components/workflow-viewer.md +21 -21
  89. package/docs/components/workflow.md +21 -21
  90. package/docs/examples/autocomplete/advanced.vue +35 -35
  91. package/docs/examples/autocomplete/basic.vue +32 -32
  92. package/docs/examples/autocomplete/clearable.vue +33 -33
  93. package/docs/examples/autocomplete/custom-template.vue +49 -49
  94. package/docs/examples/autocomplete/disabled.vue +33 -33
  95. package/docs/examples/autocomplete/icon.vue +37 -37
  96. package/docs/examples/barcode/all-types.vue +380 -380
  97. package/docs/examples/barcode/basic.vue +14 -14
  98. package/docs/examples/barcode/props-appearance.vue +243 -243
  99. package/docs/examples/barcode/props-geometry.vue +143 -143
  100. package/docs/examples/barcode/props-logic.vue +216 -216
  101. package/docs/examples/barcode/props-symbology.vue +199 -199
  102. package/docs/examples/barcode/props-text.vue +268 -268
  103. package/docs/examples/button/basic.vue +7 -7
  104. package/docs/examples/button/danger-ghost.vue +17 -17
  105. package/docs/examples/button/disabled.vue +10 -10
  106. package/docs/examples/button/loading.vue +6 -6
  107. package/docs/examples/button/shape.vue +7 -7
  108. package/docs/examples/button/size.vue +14 -14
  109. package/docs/examples/button/type.vue +10 -10
  110. package/docs/examples/button-select/basic.vue +19 -19
  111. package/docs/examples/buttons/basic.vue +45 -45
  112. package/docs/examples/buttons/disabled.vue +36 -36
  113. package/docs/examples/buttons/dropdown.vue +63 -63
  114. package/docs/examples/buttons/group.vue +52 -52
  115. package/docs/examples/buttons/link.vue +47 -47
  116. package/docs/examples/buttons/popup.vue +39 -39
  117. package/docs/examples/buttons/size.vue +45 -45
  118. package/docs/examples/cascader-select/basic.vue +28 -28
  119. package/docs/examples/cascader-select/clearable.vue +34 -34
  120. package/docs/examples/cascader-select/disabled.vue +43 -43
  121. package/docs/examples/cascader-select/filterable.vue +37 -37
  122. package/docs/examples/cascader-select/methods.vue +84 -84
  123. package/docs/examples/cascader-select/multiple.vue +38 -38
  124. package/docs/examples/cascader-select/slot.vue +45 -45
  125. package/docs/examples/checkbox/basic.vue +18 -18
  126. package/docs/examples/checkbox/button.vue +19 -19
  127. package/docs/examples/checkbox/color.vue +25 -25
  128. package/docs/examples/checkbox/disabled.vue +17 -17
  129. package/docs/examples/checkbox/min-max.vue +20 -20
  130. package/docs/examples/checkbox/mixed.vue +56 -56
  131. package/docs/examples/checkbox/size.vue +28 -28
  132. package/docs/examples/code-mirror/basic.vue +11 -11
  133. package/docs/examples/code-mirror/events.vue +42 -42
  134. package/docs/examples/code-mirror/height.vue +25 -25
  135. package/docs/examples/code-mirror/mode.vue +33 -33
  136. package/docs/examples/code-mirror/readonly.vue +14 -14
  137. package/docs/examples/collapse/basic.vue +82 -82
  138. package/docs/examples/comp/basic.vue +7 -7
  139. package/docs/examples/comp/collapse.vue +38 -38
  140. package/docs/examples/comp/tabs.vue +38 -38
  141. package/docs/examples/count/basic.vue +101 -101
  142. package/docs/examples/count-up/basic.vue +89 -89
  143. package/docs/examples/data-panel/basic.vue +110 -110
  144. package/docs/examples/date/basic.vue +73 -73
  145. package/docs/examples/date/default-value.vue +59 -59
  146. package/docs/examples/date/format.vue +75 -75
  147. package/docs/examples/date/range.vue +66 -66
  148. package/docs/examples/date/types.vue +79 -79
  149. package/docs/examples/decorated-title/basic.vue +31 -31
  150. package/docs/examples/dialog/basic.vue +36 -36
  151. package/docs/examples/dialog/custom-buttons.vue +44 -44
  152. package/docs/examples/dialog/fullscreen.vue +23 -23
  153. package/docs/examples/dialog/no-mask.vue +17 -17
  154. package/docs/examples/dialog/size.vue +44 -44
  155. package/docs/examples/dialog/steps.vue +57 -57
  156. package/docs/examples/dialog-full/basic.vue +29 -29
  157. package/docs/examples/dialog-full/custom-buttons.vue +45 -45
  158. package/docs/examples/dialog-full/no-buttons.vue +18 -18
  159. package/docs/examples/dialog-full/no-header.vue +27 -27
  160. package/docs/examples/dialog-full/steps.vue +71 -71
  161. package/docs/examples/divider/basic.vue +52 -52
  162. package/docs/examples/drawer/basic.vue +35 -35
  163. package/docs/examples/drawer/custom-buttons.vue +34 -34
  164. package/docs/examples/drawer/direction.vue +47 -47
  165. package/docs/examples/drawer/mask.vue +36 -36
  166. package/docs/examples/drawer/no-buttons.vue +20 -20
  167. package/docs/examples/drawer/size.vue +28 -28
  168. package/docs/examples/dynamic-layer/basic.vue +33 -33
  169. package/docs/examples/dynamic-layer/custom-buttons.vue +43 -43
  170. package/docs/examples/dynamic-layer/form.vue +73 -73
  171. package/docs/examples/dynamic-layer/steps.vue +52 -52
  172. package/docs/examples/dynamic-layer/types.vue +40 -40
  173. package/docs/examples/echarts/basic.vue +31 -31
  174. package/docs/examples/echarts/dynamic.vue +43 -43
  175. package/docs/examples/echarts/line.vue +46 -46
  176. package/docs/examples/echarts/pie.vue +44 -44
  177. package/docs/examples/editor/basic.vue +15 -15
  178. package/docs/examples/form/basic.vue +665 -665
  179. package/docs/examples/form/init.vue +76 -76
  180. package/docs/examples/form/master-detail.vue +203 -203
  181. package/docs/examples/form/rule-format.vue +179 -179
  182. package/docs/examples/guid/basic.vue +10 -10
  183. package/docs/examples/guid/size.vue +13 -13
  184. package/docs/examples/hpanel/basic.vue +79 -79
  185. package/docs/examples/icon/basic.vue +9 -9
  186. package/docs/examples/icon/rotate-flip.vue +9 -9
  187. package/docs/examples/icon/size.vue +7 -7
  188. package/docs/examples/input/basic.vue +10 -10
  189. package/docs/examples/input/clearable.vue +12 -12
  190. package/docs/examples/input/disabled.vue +6 -6
  191. package/docs/examples/input/icon.vue +23 -23
  192. package/docs/examples/input/password.vue +18 -18
  193. package/docs/examples/input/size.vue +13 -13
  194. package/docs/examples/input/textarea.vue +25 -25
  195. package/docs/examples/input/word-limit.vue +28 -28
  196. package/docs/examples/input-button/basic.vue +33 -33
  197. package/docs/examples/input-code/basic.vue +29 -29
  198. package/docs/examples/input-color/basic.vue +10 -10
  199. package/docs/examples/input-color/disabled.vue +13 -13
  200. package/docs/examples/input-color/format.vue +17 -17
  201. package/docs/examples/input-color/no-alpha.vue +13 -13
  202. package/docs/examples/input-color/only-button.vue +15 -15
  203. package/docs/examples/input-color/predefine.vue +31 -31
  204. package/docs/examples/input-color/size.vue +15 -15
  205. package/docs/examples/input-layer/basic.vue +86 -86
  206. package/docs/examples/input-layer/render-vnode-page.vue +160 -0
  207. package/docs/examples/input-layer/render-vnode.vue +127 -127
  208. package/docs/examples/input-rows/basic.vue +73 -73
  209. package/docs/examples/input-rows/drag.vue +48 -48
  210. package/docs/examples/input-rows/layer-form.vue +85 -85
  211. package/docs/examples/input-rows/nested.vue +91 -91
  212. package/docs/examples/input-tag/basic.vue +27 -27
  213. package/docs/examples/input-tag/colors.vue +23 -23
  214. package/docs/examples/input-tag/readonly.vue +17 -17
  215. package/docs/examples/layer/basic.vue +43 -43
  216. package/docs/examples/layer/custom-buttons.vue +61 -61
  217. package/docs/examples/layer/drawer.vue +37 -37
  218. package/docs/examples/layer/full.vue +38 -38
  219. package/docs/examples/layer/modal.vue +34 -34
  220. package/docs/examples/layer/steps.vue +46 -46
  221. package/docs/examples/layer-form/basic.vue +76 -76
  222. package/docs/examples/layer-form/config.vue +82 -82
  223. package/docs/examples/layer-form/size.vue +72 -72
  224. package/docs/examples/layout/basic.vue +36 -36
  225. package/docs/examples/layout/custom-size.vue +50 -50
  226. package/docs/examples/layout/disable-move.vue +37 -37
  227. package/docs/examples/layout/hide-mid-when-narrow.vue +96 -96
  228. package/docs/examples/layout/min-size.vue +73 -73
  229. package/docs/examples/layout/percent-size.vue +80 -80
  230. package/docs/examples/layout/simple.vue +22 -22
  231. package/docs/examples/layout/top-side.vue +34 -34
  232. package/docs/examples/map/basic.vue +22 -22
  233. package/docs/examples/menu/basic.vue +58 -58
  234. package/docs/examples/menu/collapsed.vue +49 -49
  235. package/docs/examples/menu/horizontal.vue +44 -44
  236. package/docs/examples/menu/selection-test.vue +104 -104
  237. package/docs/examples/menu/theme.vue +46 -46
  238. package/docs/examples/menu/vertical.vue +46 -46
  239. package/docs/examples/number/advanced.vue +143 -143
  240. package/docs/examples/number/basic.vue +63 -63
  241. package/docs/examples/number/disabled.vue +49 -49
  242. package/docs/examples/number/size.vue +42 -42
  243. package/docs/examples/number/slots.vue +123 -123
  244. package/docs/examples/number/step-strictly.vue +41 -41
  245. package/docs/examples/number/step.vue +47 -47
  246. package/docs/examples/page/basic.vue +41 -41
  247. package/docs/examples/page/code-table-model.vue +428 -428
  248. package/docs/examples/page/dept-user-management.vue +211 -211
  249. package/docs/examples/page/init.vue +87 -87
  250. package/docs/examples/page/log.vue +453 -453
  251. package/docs/examples/page/user-management.vue +313 -313
  252. package/docs/examples/panel/tool-buttons.vue +18 -18
  253. package/docs/examples/radio/basic.vue +17 -17
  254. package/docs/examples/radio/button.vue +17 -17
  255. package/docs/examples/radio/color.vue +18 -18
  256. package/docs/examples/radio/disabled.vue +17 -17
  257. package/docs/examples/radio/size.vue +29 -29
  258. package/docs/examples/rate/basic.vue +24 -24
  259. package/docs/examples/rate/half.vue +24 -24
  260. package/docs/examples/rate/readonly.vue +11 -11
  261. package/docs/examples/rate/text.vue +37 -37
  262. package/docs/examples/select/basic.vue +16 -16
  263. package/docs/examples/select/clearable.vue +22 -22
  264. package/docs/examples/select/disabled.vue +31 -31
  265. package/docs/examples/select/filterable.vue +24 -24
  266. package/docs/examples/select/group.vue +23 -23
  267. package/docs/examples/select/icon.vue +16 -16
  268. package/docs/examples/select/multiple.vue +18 -18
  269. package/docs/examples/select/size.vue +39 -39
  270. package/docs/examples/slider/basic.vue +42 -42
  271. package/docs/examples/slider/disabled.vue +17 -17
  272. package/docs/examples/slider/marks.vue +30 -30
  273. package/docs/examples/slider/size.vue +37 -37
  274. package/docs/examples/slider/tooltip.vue +36 -36
  275. package/docs/examples/slider/vertical.vue +26 -26
  276. package/docs/examples/slider-captcha/basic.vue +44 -44
  277. package/docs/examples/slider-captcha/custom.vue +48 -48
  278. package/docs/examples/switch/basic.vue +16 -16
  279. package/docs/examples/switch/disabled.vue +13 -13
  280. package/docs/examples/switch/loading.vue +13 -13
  281. package/docs/examples/switch/size.vue +15 -15
  282. package/docs/examples/switch/text.vue +13 -13
  283. package/docs/examples/table/action-filter.vue +126 -126
  284. package/docs/examples/table/actions.vue +116 -116
  285. package/docs/examples/table/add-row.vue +103 -103
  286. package/docs/examples/table/basic.vue +168 -168
  287. package/docs/examples/table/checkbox-layout.vue +68 -68
  288. package/docs/examples/table/custom-layout.vue +115 -115
  289. package/docs/examples/table/dynamic-type.vue +73 -73
  290. package/docs/examples/table/editable.vue +262 -262
  291. package/docs/examples/table/field-selection.vue +87 -87
  292. package/docs/examples/table/frozen-column.vue +140 -140
  293. package/docs/examples/table/height-mode.vue +99 -99
  294. package/docs/examples/table/icon.vue +85 -85
  295. package/docs/examples/table/link.vue +66 -66
  296. package/docs/examples/table/multiple.vue +188 -188
  297. package/docs/examples/table/pagination.vue +151 -151
  298. package/docs/examples/table/single-selection.vue +64 -64
  299. package/docs/examples/table/sub-table-lazy.vue +97 -97
  300. package/docs/examples/table/sub-table.vue +103 -103
  301. package/docs/examples/table/tag.vue +43 -43
  302. package/docs/examples/table/tree-column.vue +119 -119
  303. package/docs/examples/table/tree-data.vue +141 -141
  304. package/docs/examples/table/tree-default-expand-all.vue +60 -60
  305. package/docs/examples/table/tree-lazy.vue +80 -80
  306. package/docs/examples/table/tree-set-selection.vue +75 -75
  307. package/docs/examples/table-panel/basic.vue +229 -229
  308. package/docs/examples/table-panel/batch-operations.vue +285 -285
  309. package/docs/examples/table-panel/button-visibility.vue +88 -88
  310. package/docs/examples/table-panel/filter.vue +219 -219
  311. package/docs/examples/table-panel/get-selection.vue +111 -111
  312. package/docs/examples/table-panel/mask.vue +151 -151
  313. package/docs/examples/table-panel/multiple-selection.vue +243 -243
  314. package/docs/examples/table-panel/pagination.vue +133 -133
  315. package/docs/examples/table-panel/sub-table-lazy.vue +118 -118
  316. package/docs/examples/table-panel/tree-parent-key.vue +67 -67
  317. package/docs/examples/tabs/basic.vue +98 -98
  318. package/docs/examples/time/base.vue +67 -67
  319. package/docs/examples/title/basic.vue +87 -87
  320. package/docs/examples/tree/accordion.vue +46 -46
  321. package/docs/examples/tree/basic.vue +50 -50
  322. package/docs/examples/tree/buttons.vue +53 -53
  323. package/docs/examples/tree/checkable.vue +52 -52
  324. package/docs/examples/tree/custom-keys.vue +39 -39
  325. package/docs/examples/tree/default-expanded.vue +52 -52
  326. package/docs/examples/tree/draggable.vue +29 -29
  327. package/docs/examples/tree/expand-on-click.vue +39 -39
  328. package/docs/examples/tree/flat-data.vue +20 -20
  329. package/docs/examples/tree/icon.vue +40 -40
  330. package/docs/examples/tree/load-data.vue +37 -37
  331. package/docs/examples/tree/methods.vue +74 -74
  332. package/docs/examples/tree/theme.vue +33 -33
  333. package/docs/examples/tree-select/basic.vue +47 -47
  334. package/docs/examples/upload/accept.vue +31 -31
  335. package/docs/examples/upload/basic.vue +12 -12
  336. package/docs/examples/upload/drag.vue +11 -11
  337. package/docs/examples/upload/image.vue +17 -17
  338. package/docs/examples/upload/limit.vue +20 -20
  339. package/docs/examples/upload/multiple.vue +17 -17
  340. package/docs/examples/upload/readonly.vue +17 -17
  341. package/docs/examples/utils/cipher.vue +160 -160
  342. package/docs/examples/utils/common.vue +153 -153
  343. package/docs/examples/utils/date.vue +56 -56
  344. package/docs/examples/utils/dom.vue +52 -52
  345. package/docs/examples/utils/is.vue +70 -70
  346. package/docs/examples/workflow/basic.vue +265 -265
  347. package/docs/examples/workflow-viewer/basic.vue +248 -248
  348. package/package.json +23 -23
@@ -1,89 +1,89 @@
1
- <template>
2
- <div class="count-up-demo">
3
- <div class="demo-item">
4
- <p>基础用法(0-1000):</p>
5
- <j-count-up :end-value="1000" />
6
- </div>
7
-
8
- <div class="demo-item">
9
- <p>自定义起始值和小数位:</p>
10
- <j-count-up :start-value="0" :end-value="99.99" :decimals="2" />
11
- </div>
12
-
13
- <div class="demo-item">
14
- <p>自定义动画时间:</p>
15
- <j-count-up :end-value="5000" :duration="5" />
16
- </div>
17
-
18
- <div class="demo-item">
19
- <p>禁用动画(直接显示值):</p>
20
- <j-count-up :end-value="2024" :animation="false" />
21
- </div>
22
-
23
- <div class="demo-item">
24
- <p>带回调的动画:</p>
25
- <j-count-up :end-value="100" :callback="handleAnimationEnd" />
26
- <p v-if="callbackMessage" style="color: var(--j-color-success); margin-top: 8px">
27
- {{ callbackMessage }}
28
- </p>
29
- </div>
30
-
31
- <div class="demo-item">
32
- <p>动态更新值:</p>
33
- <div style="display: flex; gap: 10px; align-items: center">
34
- <j-count-up ref="countUpRef" :end-value="currentValue" :duration="1" />
35
- <button @click="updateValue(500)">更新到500</button>
36
- <button @click="updateValue(1500)">更新到1500</button>
37
- </div>
38
- </div>
39
- </div>
40
- </template>
41
-
42
- <script setup lang="ts">
43
- import { ref } from 'vue'
44
-
45
- const countUpRef = ref()
46
- const currentValue = ref(0)
47
- const callbackMessage = ref('')
48
-
49
- const handleAnimationEnd = (countUp: any) => {
50
- callbackMessage.value = `动画完成!最终值为: ${countUp.endVal}`
51
- setTimeout(() => {
52
- callbackMessage.value = ''
53
- }, 3000)
54
- }
55
-
56
- const updateValue = (newValue: number) => {
57
- currentValue.value = newValue
58
- }
59
- </script>
60
-
61
- <style scoped>
62
- .count-up-demo {
63
- display: flex;
64
- flex-direction: column;
65
- gap: 20px;
66
- }
67
-
68
- .demo-item p {
69
- margin-bottom: 8px;
70
- font-size: 14px;
71
- color: var(--j-color-text-2);
72
- }
73
-
74
- button {
75
- padding: 6px 12px;
76
- border: 1px solid var(--j-color-border);
77
- border-radius: 4px;
78
- background-color: var(--j-color-bg-primary);
79
- color: var(--j-color-text-1);
80
- cursor: pointer;
81
- transition: all 0.3s;
82
- font-size: 12px;
83
- }
84
-
85
- button:hover {
86
- border-color: var(--j-color-primary);
87
- color: var(--j-color-primary);
88
- }
89
- </style>
1
+ <template>
2
+ <div class="count-up-demo">
3
+ <div class="demo-item">
4
+ <p>基础用法(0-1000):</p>
5
+ <j-count-up :end-value="1000" />
6
+ </div>
7
+
8
+ <div class="demo-item">
9
+ <p>自定义起始值和小数位:</p>
10
+ <j-count-up :start-value="0" :end-value="99.99" :decimals="2" />
11
+ </div>
12
+
13
+ <div class="demo-item">
14
+ <p>自定义动画时间:</p>
15
+ <j-count-up :end-value="5000" :duration="5" />
16
+ </div>
17
+
18
+ <div class="demo-item">
19
+ <p>禁用动画(直接显示值):</p>
20
+ <j-count-up :end-value="2024" :animation="false" />
21
+ </div>
22
+
23
+ <div class="demo-item">
24
+ <p>带回调的动画:</p>
25
+ <j-count-up :end-value="100" :callback="handleAnimationEnd" />
26
+ <p v-if="callbackMessage" style="color: var(--j-color-success); margin-top: 8px">
27
+ {{ callbackMessage }}
28
+ </p>
29
+ </div>
30
+
31
+ <div class="demo-item">
32
+ <p>动态更新值:</p>
33
+ <div style="display: flex; gap: 10px; align-items: center">
34
+ <j-count-up ref="countUpRef" :end-value="currentValue" :duration="1" />
35
+ <button @click="updateValue(500)">更新到500</button>
36
+ <button @click="updateValue(1500)">更新到1500</button>
37
+ </div>
38
+ </div>
39
+ </div>
40
+ </template>
41
+
42
+ <script setup lang="ts">
43
+ import { ref } from 'vue'
44
+
45
+ const countUpRef = ref()
46
+ const currentValue = ref(0)
47
+ const callbackMessage = ref('')
48
+
49
+ const handleAnimationEnd = (countUp: any) => {
50
+ callbackMessage.value = `动画完成!最终值为: ${countUp.endVal}`
51
+ setTimeout(() => {
52
+ callbackMessage.value = ''
53
+ }, 3000)
54
+ }
55
+
56
+ const updateValue = (newValue: number) => {
57
+ currentValue.value = newValue
58
+ }
59
+ </script>
60
+
61
+ <style scoped>
62
+ .count-up-demo {
63
+ display: flex;
64
+ flex-direction: column;
65
+ gap: 20px;
66
+ }
67
+
68
+ .demo-item p {
69
+ margin-bottom: 8px;
70
+ font-size: 14px;
71
+ color: var(--j-color-text-2);
72
+ }
73
+
74
+ button {
75
+ padding: 6px 12px;
76
+ border: 1px solid var(--j-color-border);
77
+ border-radius: 4px;
78
+ background-color: var(--j-color-bg-primary);
79
+ color: var(--j-color-text-1);
80
+ cursor: pointer;
81
+ transition: all 0.3s;
82
+ font-size: 12px;
83
+ }
84
+
85
+ button:hover {
86
+ border-color: var(--j-color-primary);
87
+ color: var(--j-color-primary);
88
+ }
89
+ </style>
@@ -1,110 +1,110 @@
1
- <template>
2
- <div class="data-panel-demo">
3
- <div class="demo-item">
4
- <p>基础用法 - 带标题的面板:</p>
5
- <j-data-panel title="数据面板">
6
- <div style="padding: 16px">
7
- <p>这是一个数据展示面板</p>
8
- <p>可以在其中放置任何内容</p>
9
- </div>
10
- </j-data-panel>
11
- </div>
12
-
13
- <div class="demo-item">
14
- <p>无标题面板:</p>
15
- <j-data-panel>
16
- <div style="padding: 16px">
17
- <p>没有标题的面板</p>
18
- </div>
19
- </j-data-panel>
20
- </div>
21
-
22
- <div class="demo-item">
23
- <p>带标题右侧内容:</p>
24
- <j-data-panel title="用户数据">
25
- <template #titleRight>
26
- <j-button icon="mdi:refresh"></j-button>
27
- </template>
28
- <div style="padding: 16px">
29
- <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 16px">
30
- <div>
31
- <div style="color: var(--j-color-text-2); font-size: 12px; margin-bottom: 4px">
32
- 用户总数
33
- </div>
34
- <div style="font-size: 24px; font-weight: bold; color: var(--j-color-primary)">
35
- 1,234
36
- </div>
37
- </div>
38
- <div>
39
- <div style="color: var(--j-color-text-2); font-size: 12px; margin-bottom: 4px">
40
- 活跃用户
41
- </div>
42
- <div style="font-size: 24px; font-weight: bold; color: var(--j-color-success)">
43
- 856
44
- </div>
45
- </div>
46
- <div>
47
- <div style="color: var(--j-color-text-2); font-size: 12px; margin-bottom: 4px">
48
- 待审核
49
- </div>
50
- <div style="font-size: 24px; font-weight: bold; color: var(--j-color-warning)">
51
- 45
52
- </div>
53
- </div>
54
- <div>
55
- <div style="color: var(--j-color-text-2); font-size: 12px; margin-bottom: 4px">
56
- 异常
57
- </div>
58
- <div style="font-size: 24px; font-weight: bold; color: var(--j-color-danger)">12</div>
59
- </div>
60
- </div>
61
- </div>
62
- </j-data-panel>
63
- </div>
64
-
65
- <div class="demo-item">
66
- <p>多个面板并排显示:</p>
67
- <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 16px">
68
- <j-data-panel title="收入统计">
69
- <div style="padding: 16px">
70
- <div style="font-size: 20px; font-weight: bold; color: var(--j-color-primary)">
71
- ¥ 128,500
72
- </div>
73
- <div style="color: var(--j-color-text-2); font-size: 12px; margin-top: 8px">
74
- 本月收入
75
- </div>
76
- </div>
77
- </j-data-panel>
78
- <j-data-panel title="支出统计">
79
- <div style="padding: 16px">
80
- <div style="font-size: 20px; font-weight: bold; color: var(--j-color-danger)">
81
- ¥ 32,100
82
- </div>
83
- <div style="color: var(--j-color-text-2); font-size: 12px; margin-top: 8px">
84
- 本月支出
85
- </div>
86
- </div>
87
- </j-data-panel>
88
- </div>
89
- </div>
90
- </div>
91
- </template>
92
-
93
- <script setup lang="ts">
94
- // 示例代码无需额外逻辑
95
- </script>
96
-
97
- <style scoped>
98
- .data-panel-demo {
99
- display: flex;
100
- flex-direction: column;
101
- gap: 20px;
102
- }
103
-
104
- .demo-item p {
105
- margin-bottom: 12px;
106
- font-size: 14px;
107
- color: var(--j-color-text-2);
108
- font-weight: 500;
109
- }
110
- </style>
1
+ <template>
2
+ <div class="data-panel-demo">
3
+ <div class="demo-item">
4
+ <p>基础用法 - 带标题的面板:</p>
5
+ <j-data-panel title="数据面板">
6
+ <div style="padding: 16px">
7
+ <p>这是一个数据展示面板</p>
8
+ <p>可以在其中放置任何内容</p>
9
+ </div>
10
+ </j-data-panel>
11
+ </div>
12
+
13
+ <div class="demo-item">
14
+ <p>无标题面板:</p>
15
+ <j-data-panel>
16
+ <div style="padding: 16px">
17
+ <p>没有标题的面板</p>
18
+ </div>
19
+ </j-data-panel>
20
+ </div>
21
+
22
+ <div class="demo-item">
23
+ <p>带标题右侧内容:</p>
24
+ <j-data-panel title="用户数据">
25
+ <template #titleRight>
26
+ <j-button icon="mdi:refresh"></j-button>
27
+ </template>
28
+ <div style="padding: 16px">
29
+ <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 16px">
30
+ <div>
31
+ <div style="color: var(--j-color-text-2); font-size: 12px; margin-bottom: 4px">
32
+ 用户总数
33
+ </div>
34
+ <div style="font-size: 24px; font-weight: bold; color: var(--j-color-primary)">
35
+ 1,234
36
+ </div>
37
+ </div>
38
+ <div>
39
+ <div style="color: var(--j-color-text-2); font-size: 12px; margin-bottom: 4px">
40
+ 活跃用户
41
+ </div>
42
+ <div style="font-size: 24px; font-weight: bold; color: var(--j-color-success)">
43
+ 856
44
+ </div>
45
+ </div>
46
+ <div>
47
+ <div style="color: var(--j-color-text-2); font-size: 12px; margin-bottom: 4px">
48
+ 待审核
49
+ </div>
50
+ <div style="font-size: 24px; font-weight: bold; color: var(--j-color-warning)">
51
+ 45
52
+ </div>
53
+ </div>
54
+ <div>
55
+ <div style="color: var(--j-color-text-2); font-size: 12px; margin-bottom: 4px">
56
+ 异常
57
+ </div>
58
+ <div style="font-size: 24px; font-weight: bold; color: var(--j-color-danger)">12</div>
59
+ </div>
60
+ </div>
61
+ </div>
62
+ </j-data-panel>
63
+ </div>
64
+
65
+ <div class="demo-item">
66
+ <p>多个面板并排显示:</p>
67
+ <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 16px">
68
+ <j-data-panel title="收入统计">
69
+ <div style="padding: 16px">
70
+ <div style="font-size: 20px; font-weight: bold; color: var(--j-color-primary)">
71
+ ¥ 128,500
72
+ </div>
73
+ <div style="color: var(--j-color-text-2); font-size: 12px; margin-top: 8px">
74
+ 本月收入
75
+ </div>
76
+ </div>
77
+ </j-data-panel>
78
+ <j-data-panel title="支出统计">
79
+ <div style="padding: 16px">
80
+ <div style="font-size: 20px; font-weight: bold; color: var(--j-color-danger)">
81
+ ¥ 32,100
82
+ </div>
83
+ <div style="color: var(--j-color-text-2); font-size: 12px; margin-top: 8px">
84
+ 本月支出
85
+ </div>
86
+ </div>
87
+ </j-data-panel>
88
+ </div>
89
+ </div>
90
+ </div>
91
+ </template>
92
+
93
+ <script setup lang="ts">
94
+ // 示例代码无需额外逻辑
95
+ </script>
96
+
97
+ <style scoped>
98
+ .data-panel-demo {
99
+ display: flex;
100
+ flex-direction: column;
101
+ gap: 20px;
102
+ }
103
+
104
+ .demo-item p {
105
+ margin-bottom: 12px;
106
+ font-size: 14px;
107
+ color: var(--j-color-text-2);
108
+ font-weight: 500;
109
+ }
110
+ </style>
@@ -1,73 +1,73 @@
1
- <template>
2
- <div class="demo-date-basic">
3
- <div class="block">
4
- <span class="demonstration">Default</span>
5
- <j-date v-model="value1" placeholder="Pick a day" />
6
- </div>
7
- <div class="block">
8
- <span class="demonstration">Picker with quick options</span>
9
- <j-date
10
- v-model="value2"
11
- placeholder="Pick a day"
12
- :disabled-date="disabledDate"
13
- :shortcuts="shortcuts"
14
- />
15
- </div>
16
- </div>
17
- </template>
18
-
19
- <script setup lang="ts">
20
- import { ref } from 'vue'
21
-
22
- const value1 = ref('')
23
- const value2 = ref('')
24
-
25
- const shortcuts = [
26
- {
27
- text: 'Today',
28
- value: new Date(),
29
- },
30
- {
31
- text: 'Yesterday',
32
- value: () => {
33
- const date = new Date()
34
- date.setTime(date.getTime() - 3600 * 1000 * 24)
35
- return date
36
- },
37
- },
38
- {
39
- text: 'A week ago',
40
- value: () => {
41
- const date = new Date()
42
- date.setTime(date.getTime() - 3600 * 1000 * 24 * 7)
43
- return date
44
- },
45
- },
46
- ]
47
-
48
- const disabledDate = (time: Date) => {
49
- return time.getTime() > Date.now()
50
- }
51
- </script>
52
-
53
- <style scoped>
54
- .demo-date-basic {
55
- display: flex;
56
- flex-wrap: wrap;
57
- }
58
- .demo-date-basic .block {
59
- padding: 30px 0;
60
- text-align: center;
61
- border-right: solid 1px var(--el-border-color);
62
- flex: 1;
63
- }
64
- .demo-date-basic .block:last-child {
65
- border-right: none;
66
- }
67
- .demo-date-basic .demonstration {
68
- display: block;
69
- color: var(--el-text-color-secondary);
70
- font-size: 14px;
71
- margin-bottom: 20px;
72
- }
73
- </style>
1
+ <template>
2
+ <div class="demo-date-basic">
3
+ <div class="block">
4
+ <span class="demonstration">Default</span>
5
+ <j-date v-model="value1" placeholder="Pick a day" />
6
+ </div>
7
+ <div class="block">
8
+ <span class="demonstration">Picker with quick options</span>
9
+ <j-date
10
+ v-model="value2"
11
+ placeholder="Pick a day"
12
+ :disabled-date="disabledDate"
13
+ :shortcuts="shortcuts"
14
+ />
15
+ </div>
16
+ </div>
17
+ </template>
18
+
19
+ <script setup lang="ts">
20
+ import { ref } from 'vue'
21
+
22
+ const value1 = ref('')
23
+ const value2 = ref('')
24
+
25
+ const shortcuts = [
26
+ {
27
+ text: 'Today',
28
+ value: new Date(),
29
+ },
30
+ {
31
+ text: 'Yesterday',
32
+ value: () => {
33
+ const date = new Date()
34
+ date.setTime(date.getTime() - 3600 * 1000 * 24)
35
+ return date
36
+ },
37
+ },
38
+ {
39
+ text: 'A week ago',
40
+ value: () => {
41
+ const date = new Date()
42
+ date.setTime(date.getTime() - 3600 * 1000 * 24 * 7)
43
+ return date
44
+ },
45
+ },
46
+ ]
47
+
48
+ const disabledDate = (time: Date) => {
49
+ return time.getTime() > Date.now()
50
+ }
51
+ </script>
52
+
53
+ <style scoped>
54
+ .demo-date-basic {
55
+ display: flex;
56
+ flex-wrap: wrap;
57
+ }
58
+ .demo-date-basic .block {
59
+ padding: 30px 0;
60
+ text-align: center;
61
+ border-right: solid 1px var(--el-border-color);
62
+ flex: 1;
63
+ }
64
+ .demo-date-basic .block:last-child {
65
+ border-right: none;
66
+ }
67
+ .demo-date-basic .demonstration {
68
+ display: block;
69
+ color: var(--el-text-color-secondary);
70
+ font-size: 14px;
71
+ margin-bottom: 20px;
72
+ }
73
+ </style>
@@ -1,59 +1,59 @@
1
- <template>
2
- <div class="demo-date-default">
3
- <div class="block">
4
- <span class="demonstration">Default Value</span>
5
- <j-date
6
- v-model="value1"
7
- select-type="date"
8
- placeholder="Pick a day"
9
- :default-value="new Date(2010, 9, 1)"
10
- />
11
- </div>
12
- <div class="block">
13
- <span class="demonstration">Default Time for Range</span>
14
- <j-date
15
- v-model="value2"
16
- select-type="datetimerange"
17
- start-placeholder="Start Date"
18
- end-placeholder="End Date"
19
- :default-time="defaultTime"
20
- />
21
- </div>
22
- </div>
23
- </template>
24
-
25
- <script setup lang="ts">
26
- import { ref } from 'vue'
27
-
28
- const value1 = ref('')
29
- const value2 = ref('')
30
-
31
- const defaultTime = [
32
- new Date(2000, 1, 1, 12, 0, 0),
33
- new Date(2000, 2, 1, 8, 0, 0),
34
- ]
35
- </script>
36
-
37
- <style scoped>
38
- .demo-date-default {
39
- display: flex;
40
- flex-wrap: wrap;
41
- gap: 20px;
42
- }
43
- .demo-date-default .block {
44
- padding: 30px 0;
45
- text-align: center;
46
- border-right: solid 1px var(--el-border-color);
47
- flex: 1;
48
- min-width: 300px;
49
- }
50
- .demo-date-default .block:last-child {
51
- border-right: none;
52
- }
53
- .demo-date-default .demonstration {
54
- display: block;
55
- color: var(--el-text-color-secondary);
56
- font-size: 14px;
57
- margin-bottom: 20px;
58
- }
59
- </style>
1
+ <template>
2
+ <div class="demo-date-default">
3
+ <div class="block">
4
+ <span class="demonstration">Default Value</span>
5
+ <j-date
6
+ v-model="value1"
7
+ select-type="date"
8
+ placeholder="Pick a day"
9
+ :default-value="new Date(2010, 9, 1)"
10
+ />
11
+ </div>
12
+ <div class="block">
13
+ <span class="demonstration">Default Time for Range</span>
14
+ <j-date
15
+ v-model="value2"
16
+ select-type="datetimerange"
17
+ start-placeholder="Start Date"
18
+ end-placeholder="End Date"
19
+ :default-time="defaultTime"
20
+ />
21
+ </div>
22
+ </div>
23
+ </template>
24
+
25
+ <script setup lang="ts">
26
+ import { ref } from 'vue'
27
+
28
+ const value1 = ref('')
29
+ const value2 = ref('')
30
+
31
+ const defaultTime = [
32
+ new Date(2000, 1, 1, 12, 0, 0),
33
+ new Date(2000, 2, 1, 8, 0, 0),
34
+ ]
35
+ </script>
36
+
37
+ <style scoped>
38
+ .demo-date-default {
39
+ display: flex;
40
+ flex-wrap: wrap;
41
+ gap: 20px;
42
+ }
43
+ .demo-date-default .block {
44
+ padding: 30px 0;
45
+ text-align: center;
46
+ border-right: solid 1px var(--el-border-color);
47
+ flex: 1;
48
+ min-width: 300px;
49
+ }
50
+ .demo-date-default .block:last-child {
51
+ border-right: none;
52
+ }
53
+ .demo-date-default .demonstration {
54
+ display: block;
55
+ color: var(--el-text-color-secondary);
56
+ font-size: 14px;
57
+ margin-bottom: 20px;
58
+ }
59
+ </style>