@a2simcode/ui 0.0.55 → 0.0.56

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 (315) 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/index.d.ts +2 -1
  6. package/dist/components/input-cards/index.d.ts +189 -0
  7. package/dist/components/input-cards/src/input-cards.vue.d.ts +142 -0
  8. package/dist/components/input-cards/src/interface.d.ts +29 -0
  9. package/dist/components/table/src/interface.d.ts +4 -0
  10. package/dist/simcode-ui.es.js +3523 -3304
  11. package/dist/simcode-ui.umd.js +2 -2
  12. package/dist/stats.html +1 -1
  13. package/dist/ui.css +1 -1
  14. package/docs/components/autocomplete.md +89 -89
  15. package/docs/components/barcode.md +101 -101
  16. package/docs/components/button-select.md +24 -24
  17. package/docs/components/button.md +117 -117
  18. package/docs/components/buttons.md +119 -119
  19. package/docs/components/cascader-select.md +114 -114
  20. package/docs/components/checkbox.md +114 -114
  21. package/docs/components/code-mirror.md +85 -85
  22. package/docs/components/collapse.md +26 -26
  23. package/docs/components/comp.md +71 -71
  24. package/docs/components/count-up.md +24 -24
  25. package/docs/components/count.md +24 -24
  26. package/docs/components/data-panel.md +24 -24
  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-cards.md +27 -0
  40. package/docs/components/input-code.md +24 -24
  41. package/docs/components/input-color.md +114 -114
  42. package/docs/components/input-layer.md +26 -26
  43. package/docs/components/input-rows.md +370 -370
  44. package/docs/components/input-tag.md +50 -50
  45. package/docs/components/input.md +129 -129
  46. package/docs/components/layer-form.md +61 -61
  47. package/docs/components/layer.md +127 -127
  48. package/docs/components/layout.md +132 -132
  49. package/docs/components/map.md +24 -24
  50. package/docs/components/menu.md +121 -121
  51. package/docs/components/meta/buttons.ts +56 -56
  52. package/docs/components/meta/comp.ts +224 -224
  53. package/docs/components/meta/dynamic-layer.ts +99 -99
  54. package/docs/components/meta/echarts.ts +64 -64
  55. package/docs/components/meta/form-item.ts +50 -50
  56. package/docs/components/meta/form.ts +160 -160
  57. package/docs/components/meta/guid.ts +42 -42
  58. package/docs/components/meta/input-cards.ts +112 -0
  59. package/docs/components/meta/input-color.ts +243 -243
  60. package/docs/components/meta/input-rows.ts +113 -113
  61. package/docs/components/meta/layer-form.ts +56 -56
  62. package/docs/components/meta/map.ts +68 -68
  63. package/docs/components/meta/number.ts +296 -296
  64. package/docs/components/meta/page.ts +67 -67
  65. package/docs/components/meta/panel.ts +83 -83
  66. package/docs/components/meta/radio.ts +55 -55
  67. package/docs/components/meta/slider.ts +270 -270
  68. package/docs/components/meta/table-panel.ts +154 -154
  69. package/docs/components/meta/table.ts +328 -328
  70. package/docs/components/meta/tabs.ts +136 -136
  71. package/docs/components/meta/workflow-viewer.ts +55 -55
  72. package/docs/components/meta/workflow.ts +113 -113
  73. package/docs/components/number.md +124 -124
  74. package/docs/components/page.md +42 -42
  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 +199 -199
  83. package/docs/components/table.md +202 -202
  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 +9 -9
  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 +54 -54
  142. package/docs/examples/count-up/basic.vue +89 -89
  143. package/docs/examples/data-panel/basic.vue +110 -110
  144. package/docs/examples/dialog/basic.vue +36 -36
  145. package/docs/examples/dialog/custom-buttons.vue +44 -44
  146. package/docs/examples/dialog/fullscreen.vue +23 -23
  147. package/docs/examples/dialog/no-mask.vue +17 -17
  148. package/docs/examples/dialog/size.vue +44 -44
  149. package/docs/examples/dialog/steps.vue +57 -57
  150. package/docs/examples/dialog-full/basic.vue +29 -29
  151. package/docs/examples/dialog-full/custom-buttons.vue +45 -45
  152. package/docs/examples/dialog-full/no-buttons.vue +18 -18
  153. package/docs/examples/dialog-full/no-header.vue +27 -27
  154. package/docs/examples/dialog-full/steps.vue +71 -71
  155. package/docs/examples/divider/basic.vue +52 -52
  156. package/docs/examples/drawer/basic.vue +35 -35
  157. package/docs/examples/drawer/custom-buttons.vue +34 -34
  158. package/docs/examples/drawer/direction.vue +47 -47
  159. package/docs/examples/drawer/mask.vue +36 -36
  160. package/docs/examples/drawer/no-buttons.vue +20 -20
  161. package/docs/examples/drawer/size.vue +28 -28
  162. package/docs/examples/dynamic-layer/basic.vue +33 -33
  163. package/docs/examples/dynamic-layer/custom-buttons.vue +43 -43
  164. package/docs/examples/dynamic-layer/form.vue +73 -73
  165. package/docs/examples/dynamic-layer/steps.vue +52 -52
  166. package/docs/examples/dynamic-layer/types.vue +40 -40
  167. package/docs/examples/echarts/basic.vue +31 -31
  168. package/docs/examples/echarts/dynamic.vue +43 -43
  169. package/docs/examples/echarts/line.vue +46 -46
  170. package/docs/examples/echarts/pie.vue +44 -44
  171. package/docs/examples/editor/basic.vue +15 -15
  172. package/docs/examples/form/basic.vue +242 -242
  173. package/docs/examples/guid/basic.vue +10 -10
  174. package/docs/examples/guid/size.vue +13 -13
  175. package/docs/examples/hpanel/basic.vue +79 -79
  176. package/docs/examples/icon/basic.vue +9 -9
  177. package/docs/examples/icon/rotate-flip.vue +9 -9
  178. package/docs/examples/icon/size.vue +7 -7
  179. package/docs/examples/input/basic.vue +10 -10
  180. package/docs/examples/input/clearable.vue +12 -12
  181. package/docs/examples/input/disabled.vue +6 -6
  182. package/docs/examples/input/icon.vue +23 -23
  183. package/docs/examples/input/password.vue +18 -18
  184. package/docs/examples/input/size.vue +13 -13
  185. package/docs/examples/input/textarea.vue +25 -25
  186. package/docs/examples/input/word-limit.vue +28 -28
  187. package/docs/examples/input-button/basic.vue +33 -33
  188. package/docs/examples/input-cards/basic.vue +82 -0
  189. package/docs/examples/input-code/basic.vue +29 -29
  190. package/docs/examples/input-color/basic.vue +10 -10
  191. package/docs/examples/input-color/disabled.vue +13 -13
  192. package/docs/examples/input-color/format.vue +17 -17
  193. package/docs/examples/input-color/no-alpha.vue +13 -13
  194. package/docs/examples/input-color/only-button.vue +15 -15
  195. package/docs/examples/input-color/predefine.vue +31 -31
  196. package/docs/examples/input-color/size.vue +15 -15
  197. package/docs/examples/input-layer/basic.vue +69 -69
  198. package/docs/examples/input-rows/basic.vue +73 -73
  199. package/docs/examples/input-rows/drag.vue +48 -48
  200. package/docs/examples/input-rows/layer-form.vue +85 -85
  201. package/docs/examples/input-rows/nested.vue +91 -91
  202. package/docs/examples/input-tag/basic.vue +27 -27
  203. package/docs/examples/input-tag/colors.vue +23 -23
  204. package/docs/examples/input-tag/readonly.vue +17 -17
  205. package/docs/examples/layer/basic.vue +43 -43
  206. package/docs/examples/layer/custom-buttons.vue +61 -61
  207. package/docs/examples/layer/drawer.vue +37 -37
  208. package/docs/examples/layer/full.vue +38 -38
  209. package/docs/examples/layer/modal.vue +34 -34
  210. package/docs/examples/layer/steps.vue +46 -46
  211. package/docs/examples/layer-form/basic.vue +76 -76
  212. package/docs/examples/layer-form/config.vue +82 -82
  213. package/docs/examples/layer-form/size.vue +72 -72
  214. package/docs/examples/layout/basic.vue +36 -36
  215. package/docs/examples/layout/custom-size.vue +50 -50
  216. package/docs/examples/layout/disable-move.vue +37 -37
  217. package/docs/examples/layout/hide-mid-when-narrow.vue +96 -96
  218. package/docs/examples/layout/min-size.vue +73 -73
  219. package/docs/examples/layout/percent-size.vue +80 -80
  220. package/docs/examples/layout/simple.vue +22 -22
  221. package/docs/examples/layout/top-side.vue +34 -34
  222. package/docs/examples/map/basic.vue +22 -22
  223. package/docs/examples/menu/basic.vue +58 -58
  224. package/docs/examples/menu/collapsed.vue +49 -49
  225. package/docs/examples/menu/horizontal.vue +44 -44
  226. package/docs/examples/menu/selection-test.vue +104 -104
  227. package/docs/examples/menu/theme.vue +46 -46
  228. package/docs/examples/menu/vertical.vue +46 -46
  229. package/docs/examples/number/advanced.vue +143 -143
  230. package/docs/examples/number/basic.vue +63 -63
  231. package/docs/examples/number/disabled.vue +49 -49
  232. package/docs/examples/number/size.vue +42 -42
  233. package/docs/examples/number/slots.vue +123 -123
  234. package/docs/examples/number/step-strictly.vue +41 -41
  235. package/docs/examples/number/step.vue +47 -47
  236. package/docs/examples/page/basic.vue +41 -41
  237. package/docs/examples/page/init.vue +87 -87
  238. package/docs/examples/panel/tool-buttons.vue +18 -18
  239. package/docs/examples/radio/basic.vue +17 -17
  240. package/docs/examples/radio/button.vue +17 -17
  241. package/docs/examples/radio/color.vue +18 -18
  242. package/docs/examples/radio/disabled.vue +17 -17
  243. package/docs/examples/radio/size.vue +29 -29
  244. package/docs/examples/rate/basic.vue +24 -24
  245. package/docs/examples/rate/half.vue +24 -24
  246. package/docs/examples/rate/readonly.vue +11 -11
  247. package/docs/examples/rate/text.vue +32 -32
  248. package/docs/examples/select/basic.vue +16 -16
  249. package/docs/examples/select/clearable.vue +22 -22
  250. package/docs/examples/select/disabled.vue +31 -31
  251. package/docs/examples/select/filterable.vue +24 -24
  252. package/docs/examples/select/group.vue +23 -23
  253. package/docs/examples/select/icon.vue +16 -16
  254. package/docs/examples/select/multiple.vue +18 -18
  255. package/docs/examples/select/size.vue +39 -39
  256. package/docs/examples/slider/basic.vue +42 -42
  257. package/docs/examples/slider/disabled.vue +17 -17
  258. package/docs/examples/slider/marks.vue +30 -30
  259. package/docs/examples/slider/size.vue +37 -37
  260. package/docs/examples/slider/tooltip.vue +36 -36
  261. package/docs/examples/slider/vertical.vue +26 -26
  262. package/docs/examples/slider-captcha/basic.vue +44 -44
  263. package/docs/examples/slider-captcha/custom.vue +48 -48
  264. package/docs/examples/switch/basic.vue +16 -16
  265. package/docs/examples/switch/disabled.vue +13 -13
  266. package/docs/examples/switch/loading.vue +13 -13
  267. package/docs/examples/switch/size.vue +15 -15
  268. package/docs/examples/switch/text.vue +13 -13
  269. package/docs/examples/table/actions.vue +116 -116
  270. package/docs/examples/table/add-row.vue +103 -103
  271. package/docs/examples/table/basic.vue +168 -168
  272. package/docs/examples/table/editable.vue +261 -261
  273. package/docs/examples/table/field-selection.vue +87 -87
  274. package/docs/examples/table/frozen-column.vue +140 -140
  275. package/docs/examples/table/height-mode.vue +99 -99
  276. package/docs/examples/table/multiple.vue +178 -178
  277. package/docs/examples/table/pagination.vue +151 -151
  278. package/docs/examples/table/single-selection.vue +64 -64
  279. package/docs/examples/table/tree-column.vue +119 -119
  280. package/docs/examples/table/tree-data.vue +141 -141
  281. package/docs/examples/table-panel/basic.vue +228 -228
  282. package/docs/examples/table-panel/batch-operations.vue +285 -285
  283. package/docs/examples/table-panel/filter.vue +209 -209
  284. package/docs/examples/table-panel/multiple-selection.vue +243 -243
  285. package/docs/examples/table-panel/pagination.vue +133 -133
  286. package/docs/examples/tabs/basic.vue +98 -98
  287. package/docs/examples/title/basic.vue +80 -80
  288. package/docs/examples/tree/accordion.vue +46 -46
  289. package/docs/examples/tree/basic.vue +50 -50
  290. package/docs/examples/tree/buttons.vue +53 -53
  291. package/docs/examples/tree/checkable.vue +52 -52
  292. package/docs/examples/tree/custom-keys.vue +39 -39
  293. package/docs/examples/tree/default-expanded.vue +52 -52
  294. package/docs/examples/tree/draggable.vue +29 -29
  295. package/docs/examples/tree/expand-on-click.vue +39 -39
  296. package/docs/examples/tree/flat-data.vue +20 -20
  297. package/docs/examples/tree/icon.vue +40 -40
  298. package/docs/examples/tree/load-data.vue +37 -37
  299. package/docs/examples/tree/methods.vue +74 -74
  300. package/docs/examples/tree/theme.vue +33 -33
  301. package/docs/examples/upload/accept.vue +31 -31
  302. package/docs/examples/upload/basic.vue +12 -12
  303. package/docs/examples/upload/drag.vue +11 -11
  304. package/docs/examples/upload/image.vue +17 -17
  305. package/docs/examples/upload/limit.vue +20 -20
  306. package/docs/examples/upload/multiple.vue +17 -17
  307. package/docs/examples/upload/readonly.vue +17 -17
  308. package/docs/examples/utils/cipher.vue +160 -160
  309. package/docs/examples/utils/common.vue +153 -153
  310. package/docs/examples/utils/date.vue +56 -56
  311. package/docs/examples/utils/dom.vue +52 -52
  312. package/docs/examples/utils/is.vue +70 -70
  313. package/docs/examples/workflow/basic.vue +265 -265
  314. package/docs/examples/workflow-viewer/basic.vue +248 -248
  315. package/package.json +23 -23
@@ -1,79 +1,79 @@
1
- <template>
2
- <div class="hpanel-demo">
3
- <div class="demo-item">
4
- <p>基础用法</p>
5
- <j-hpanel class="custom-panel">
6
- <template #left>
7
- <div class="side-content">Left Slot</div>
8
- </template>
9
- <div class="main-content">Default Slot (Main Content)</div>
10
- <template #right>
11
- <div class="side-content">Right Slot</div>
12
- </template>
13
- </j-hpanel>
14
- </div>
15
-
16
- <div class="demo-item">
17
- <p>仅左侧和内容</p>
18
- <j-hpanel class="custom-panel">
19
- <template #left>
20
- <div class="side-content">Left</div>
21
- </template>
22
- <div class="main-content">Main Content</div>
23
- </j-hpanel>
24
- </div>
25
-
26
- <div class="demo-item">
27
- <p>仅内容和右侧</p>
28
- <j-hpanel class="custom-panel">
29
- <div class="main-content">Main Content</div>
30
- <template #right>
31
- <div class="side-content">Right</div>
32
- </template>
33
- </j-hpanel>
34
- </div>
35
- </div>
36
- </template>
37
-
38
- <script setup lang="ts">
39
- // 示例代码无需额外逻辑
40
- </script>
41
-
42
- <style scoped>
43
- .hpanel-demo {
44
- display: flex;
45
- flex-direction: column;
46
- gap: 24px;
47
- }
48
-
49
- .demo-item p {
50
- margin: 0 0 12px;
51
- font-size: 14px;
52
- color: var(--j-color-text-2);
53
- font-weight: 500;
54
- }
55
-
56
- .custom-panel {
57
- border: 1px solid var(--j-color-border);
58
- border-radius: 4px;
59
- overflow: hidden;
60
- }
61
-
62
- .side-content {
63
- background-color: var(--j-color-fill-2);
64
- padding: 12px 20px;
65
- display: flex;
66
- align-items: center;
67
- justify-content: center;
68
- min-width: 100px;
69
- }
70
-
71
- .main-content {
72
- background-color: var(--j-color-bg-2);
73
- padding: 12px 20px;
74
- height: 60px;
75
- display: flex;
76
- align-items: center;
77
- justify-content: center;
78
- }
79
- </style>
1
+ <template>
2
+ <div class="hpanel-demo">
3
+ <div class="demo-item">
4
+ <p>基础用法</p>
5
+ <j-hpanel class="custom-panel">
6
+ <template #left>
7
+ <div class="side-content">Left Slot</div>
8
+ </template>
9
+ <div class="main-content">Default Slot (Main Content)</div>
10
+ <template #right>
11
+ <div class="side-content">Right Slot</div>
12
+ </template>
13
+ </j-hpanel>
14
+ </div>
15
+
16
+ <div class="demo-item">
17
+ <p>仅左侧和内容</p>
18
+ <j-hpanel class="custom-panel">
19
+ <template #left>
20
+ <div class="side-content">Left</div>
21
+ </template>
22
+ <div class="main-content">Main Content</div>
23
+ </j-hpanel>
24
+ </div>
25
+
26
+ <div class="demo-item">
27
+ <p>仅内容和右侧</p>
28
+ <j-hpanel class="custom-panel">
29
+ <div class="main-content">Main Content</div>
30
+ <template #right>
31
+ <div class="side-content">Right</div>
32
+ </template>
33
+ </j-hpanel>
34
+ </div>
35
+ </div>
36
+ </template>
37
+
38
+ <script setup lang="ts">
39
+ // 示例代码无需额外逻辑
40
+ </script>
41
+
42
+ <style scoped>
43
+ .hpanel-demo {
44
+ display: flex;
45
+ flex-direction: column;
46
+ gap: 24px;
47
+ }
48
+
49
+ .demo-item p {
50
+ margin: 0 0 12px;
51
+ font-size: 14px;
52
+ color: var(--j-color-text-2);
53
+ font-weight: 500;
54
+ }
55
+
56
+ .custom-panel {
57
+ border: 1px solid var(--j-color-border);
58
+ border-radius: 4px;
59
+ overflow: hidden;
60
+ }
61
+
62
+ .side-content {
63
+ background-color: var(--j-color-fill-2);
64
+ padding: 12px 20px;
65
+ display: flex;
66
+ align-items: center;
67
+ justify-content: center;
68
+ min-width: 100px;
69
+ }
70
+
71
+ .main-content {
72
+ background-color: var(--j-color-bg-2);
73
+ padding: 12px 20px;
74
+ height: 60px;
75
+ display: flex;
76
+ align-items: center;
77
+ justify-content: center;
78
+ }
79
+ </style>
@@ -1,9 +1,9 @@
1
- <template>
2
- <div style="display: flex; gap: 20px; align-items: center">
3
- <j-icon icon="mdi:home" />
4
- <j-icon icon="mdi:account" color="#409eff" />
5
- <j-icon icon="mdi:check-circle" color="#67c23a" />
6
- <j-icon icon="mdi:alert-circle" color="#f56c6c" />
7
- <j-icon icon="mdi:information" color="#909399" />
8
- </div>
9
- </template>
1
+ <template>
2
+ <div style="display: flex; gap: 20px; align-items: center">
3
+ <j-icon icon="mdi:home" />
4
+ <j-icon icon="mdi:account" color="#409eff" />
5
+ <j-icon icon="mdi:check-circle" color="#67c23a" />
6
+ <j-icon icon="mdi:alert-circle" color="#f56c6c" />
7
+ <j-icon icon="mdi:information" color="#909399" />
8
+ </div>
9
+ </template>
@@ -1,9 +1,9 @@
1
- <template>
2
- <div style="display: flex; gap: 20px; align-items: center; font-size: 24px">
3
- <j-icon icon="mdi:send" :rotate="45" />
4
- <j-icon icon="mdi:send" :rotate="90" />
5
- <j-icon icon="mdi:send" :rotate="180" />
6
- <j-icon icon="mdi:send" flip="horizontal" />
7
- <j-icon icon="mdi:send" flip="vertical" />
8
- </div>
9
- </template>
1
+ <template>
2
+ <div style="display: flex; gap: 20px; align-items: center; font-size: 24px">
3
+ <j-icon icon="mdi:send" :rotate="45" />
4
+ <j-icon icon="mdi:send" :rotate="90" />
5
+ <j-icon icon="mdi:send" :rotate="180" />
6
+ <j-icon icon="mdi:send" flip="horizontal" />
7
+ <j-icon icon="mdi:send" flip="vertical" />
8
+ </div>
9
+ </template>
@@ -1,7 +1,7 @@
1
- <template>
2
- <div style="display: flex; gap: 20px; align-items: center">
3
- <j-icon icon="mdi:home" :size="16" />
4
- <j-icon icon="mdi:home" :size="24" />
5
- <j-icon icon="mdi:home" :size="32" />
6
- </div>
7
- </template>
1
+ <template>
2
+ <div style="display: flex; gap: 20px; align-items: center">
3
+ <j-icon icon="mdi:home" :size="16" />
4
+ <j-icon icon="mdi:home" :size="24" />
5
+ <j-icon icon="mdi:home" :size="32" />
6
+ </div>
7
+ </template>
@@ -1,10 +1,10 @@
1
- <template>
2
- <j-input v-model="value" placeholder="请输入内容" style="width: 300px" />
3
- <p v-if="value" style="margin-top: 12px; color: #606266">输入的内容: {{ value }}</p>
4
- </template>
5
-
6
- <script setup lang="ts">
7
- import { ref } from 'vue'
8
-
9
- const value = ref('')
10
- </script>
1
+ <template>
2
+ <j-input v-model="value" placeholder="请输入内容" style="width: 300px" />
3
+ <p v-if="value" style="margin-top: 12px; color: #606266">输入的内容: {{ value }}</p>
4
+ </template>
5
+
6
+ <script setup lang="ts">
7
+ import { ref } from 'vue'
8
+
9
+ const value = ref('')
10
+ </script>
@@ -1,12 +1,12 @@
1
- <template>
2
- <div style="display: flex; flex-direction: column; gap: 12px">
3
- <j-input v-model="value1" clearable placeholder="可清除的输入框" style="width: 300px" />
4
- <p v-if="value1" style="color: #606266">输入的内容: {{ value1 }}</p>
5
- </div>
6
- </template>
7
-
8
- <script setup lang="ts">
9
- import { ref } from 'vue'
10
-
11
- const value1 = ref('')
12
- </script>
1
+ <template>
2
+ <div style="display: flex; flex-direction: column; gap: 12px">
3
+ <j-input v-model="value1" clearable placeholder="可清除的输入框" style="width: 300px" />
4
+ <p v-if="value1" style="color: #606266">输入的内容: {{ value1 }}</p>
5
+ </div>
6
+ </template>
7
+
8
+ <script setup lang="ts">
9
+ import { ref } from 'vue'
10
+
11
+ const value1 = ref('')
12
+ </script>
@@ -1,6 +1,6 @@
1
- <template>
2
- <div style="display: flex; flex-direction: column; gap: 12px">
3
- <j-input disabled placeholder="禁用状态" style="width: 300px" />
4
- <j-input readonly model-value="只读内容" style="width: 300px" />
5
- </div>
6
- </template>
1
+ <template>
2
+ <div style="display: flex; flex-direction: column; gap: 12px">
3
+ <j-input disabled placeholder="禁用状态" style="width: 300px" />
4
+ <j-input readonly model-value="只读内容" style="width: 300px" />
5
+ </div>
6
+ </template>
@@ -1,23 +1,23 @@
1
- <template>
2
- <div style="display: flex; flex-direction: column; gap: 12px">
3
- <j-input
4
- v-model="value1"
5
- prefix-icon="mdi:search"
6
- placeholder="带前缀图标的输入框"
7
- style="width: 300px"
8
- />
9
- <j-input
10
- v-model="value2"
11
- suffix-icon="mdi:calendar"
12
- placeholder="带后缀图标的输入框"
13
- style="width: 300px"
14
- />
15
- </div>
16
- </template>
17
-
18
- <script setup lang="ts">
19
- import { ref } from 'vue'
20
-
21
- const value1 = ref('')
22
- const value2 = ref('')
23
- </script>
1
+ <template>
2
+ <div style="display: flex; flex-direction: column; gap: 12px">
3
+ <j-input
4
+ v-model="value1"
5
+ prefix-icon="mdi:search"
6
+ placeholder="带前缀图标的输入框"
7
+ style="width: 300px"
8
+ />
9
+ <j-input
10
+ v-model="value2"
11
+ suffix-icon="mdi:calendar"
12
+ placeholder="带后缀图标的输入框"
13
+ style="width: 300px"
14
+ />
15
+ </div>
16
+ </template>
17
+
18
+ <script setup lang="ts">
19
+ import { ref } from 'vue'
20
+
21
+ const value1 = ref('')
22
+ const value2 = ref('')
23
+ </script>
@@ -1,18 +1,18 @@
1
- <template>
2
- <div style="display: flex; flex-direction: column; gap: 12px">
3
- <j-input
4
- v-model="password"
5
- type="password"
6
- show-password
7
- placeholder="请输入密码"
8
- style="width: 300px"
9
- />
10
- <p v-if="password" style="color: #606266">密码: {{ password }}</p>
11
- </div>
12
- </template>
13
-
14
- <script setup lang="ts">
15
- import { ref } from 'vue'
16
-
17
- const password = ref('')
18
- </script>
1
+ <template>
2
+ <div style="display: flex; flex-direction: column; gap: 12px">
3
+ <j-input
4
+ v-model="password"
5
+ type="password"
6
+ show-password
7
+ placeholder="请输入密码"
8
+ style="width: 300px"
9
+ />
10
+ <p v-if="password" style="color: #606266">密码: {{ password }}</p>
11
+ </div>
12
+ </template>
13
+
14
+ <script setup lang="ts">
15
+ import { ref } from 'vue'
16
+
17
+ const password = ref('')
18
+ </script>
@@ -1,13 +1,13 @@
1
- <template>
2
- <div style="display: flex; flex-direction: column; gap: 12px">
3
- <j-input v-model="value" size="large" placeholder="大型输入框" style="width: 300px" />
4
- <j-input v-model="value" placeholder="默认输入框" style="width: 300px" />
5
- <j-input v-model="value" size="small" placeholder="小型输入框" style="width: 300px" />
6
- </div>
7
- </template>
8
-
9
- <script setup lang="ts">
10
- import { ref } from 'vue'
11
-
12
- const value = ref('')
13
- </script>
1
+ <template>
2
+ <div style="display: flex; flex-direction: column; gap: 12px">
3
+ <j-input v-model="value" size="large" placeholder="大型输入框" style="width: 300px" />
4
+ <j-input v-model="value" placeholder="默认输入框" style="width: 300px" />
5
+ <j-input v-model="value" size="small" placeholder="小型输入框" style="width: 300px" />
6
+ </div>
7
+ </template>
8
+
9
+ <script setup lang="ts">
10
+ import { ref } from 'vue'
11
+
12
+ const value = ref('')
13
+ </script>
@@ -1,25 +1,25 @@
1
- <template>
2
- <div style="display: flex; flex-direction: column; gap: 12px">
3
- <j-input
4
- v-model="value1"
5
- type="textarea"
6
- :rows="4"
7
- placeholder="固定行数的文本域"
8
- style="width: 300px"
9
- />
10
- <j-input
11
- v-model="value2"
12
- type="textarea"
13
- :autosize="{ minRows: 2, maxRows: 6 }"
14
- placeholder="自适应高度的文本域"
15
- style="width: 300px"
16
- />
17
- </div>
18
- </template>
19
-
20
- <script setup lang="ts">
21
- import { ref } from 'vue'
22
-
23
- const value1 = ref('')
24
- const value2 = ref('')
25
- </script>
1
+ <template>
2
+ <div style="display: flex; flex-direction: column; gap: 12px">
3
+ <j-input
4
+ v-model="value1"
5
+ type="textarea"
6
+ :rows="4"
7
+ placeholder="固定行数的文本域"
8
+ style="width: 300px"
9
+ />
10
+ <j-input
11
+ v-model="value2"
12
+ type="textarea"
13
+ :autosize="{ minRows: 2, maxRows: 6 }"
14
+ placeholder="自适应高度的文本域"
15
+ style="width: 300px"
16
+ />
17
+ </div>
18
+ </template>
19
+
20
+ <script setup lang="ts">
21
+ import { ref } from 'vue'
22
+
23
+ const value1 = ref('')
24
+ const value2 = ref('')
25
+ </script>
@@ -1,28 +1,28 @@
1
- <template>
2
- <div style="display: flex; flex-direction: column; gap: 12px">
3
- <j-input
4
- v-model="value1"
5
- type="text"
6
- :maxlength="10"
7
- show-word-limit
8
- placeholder="最多输入10个字符"
9
- style="width: 300px"
10
- />
11
- <j-input
12
- v-model="value2"
13
- type="textarea"
14
- :maxlength="20"
15
- show-word-limit
16
- word-limit-position="outside"
17
- placeholder="字数统计在外部"
18
- style="width: 300px"
19
- />
20
- </div>
21
- </template>
22
-
23
- <script setup lang="ts">
24
- import { ref } from 'vue'
25
-
26
- const value1 = ref('')
27
- const value2 = ref('')
28
- </script>
1
+ <template>
2
+ <div style="display: flex; flex-direction: column; gap: 12px">
3
+ <j-input
4
+ v-model="value1"
5
+ type="text"
6
+ :maxlength="10"
7
+ show-word-limit
8
+ placeholder="最多输入10个字符"
9
+ style="width: 300px"
10
+ />
11
+ <j-input
12
+ v-model="value2"
13
+ type="textarea"
14
+ :maxlength="20"
15
+ show-word-limit
16
+ word-limit-position="outside"
17
+ placeholder="字数统计在外部"
18
+ style="width: 300px"
19
+ />
20
+ </div>
21
+ </template>
22
+
23
+ <script setup lang="ts">
24
+ import { ref } from 'vue'
25
+
26
+ const value1 = ref('')
27
+ const value2 = ref('')
28
+ </script>
@@ -1,33 +1,33 @@
1
- <template>
2
- <j-input-button v-model="value" title="选择数据" btn-text="打开弹窗" :ok="handleOk">
3
- <div style="padding: 20px">
4
- <j-input
5
- v-model="form.name"
6
- label="名称"
7
- placeholder="请输入名称"
8
- style="margin-bottom: 16px"
9
- />
10
- <j-input v-model="form.age" label="年龄" placeholder="请输入年龄" />
11
- </div>
12
- </j-input-button>
13
- <p v-if="value" style="margin-top: 12px; color: #606266">选择的结果: {{ value }}</p>
14
- </template>
15
-
16
- <script setup lang="ts">
17
- import { ref, reactive } from 'vue'
18
-
19
- const value = ref('')
20
- const form = reactive({
21
- name: '',
22
- age: '',
23
- })
24
-
25
- const handleOk = async () => {
26
- // 模拟异步操作
27
- return new Promise((resolve) => {
28
- setTimeout(() => {
29
- resolve(JSON.stringify(form))
30
- }, 500)
31
- })
32
- }
33
- </script>
1
+ <template>
2
+ <j-input-button v-model="value" title="选择数据" btn-text="打开弹窗" :ok="handleOk">
3
+ <div style="padding: 20px">
4
+ <j-input
5
+ v-model="form.name"
6
+ label="名称"
7
+ placeholder="请输入名称"
8
+ style="margin-bottom: 16px"
9
+ />
10
+ <j-input v-model="form.age" label="年龄" placeholder="请输入年龄" />
11
+ </div>
12
+ </j-input-button>
13
+ <p v-if="value" style="margin-top: 12px; color: #606266">选择的结果: {{ value }}</p>
14
+ </template>
15
+
16
+ <script setup lang="ts">
17
+ import { ref, reactive } from 'vue'
18
+
19
+ const value = ref('')
20
+ const form = reactive({
21
+ name: '',
22
+ age: '',
23
+ })
24
+
25
+ const handleOk = async () => {
26
+ // 模拟异步操作
27
+ return new Promise((resolve) => {
28
+ setTimeout(() => {
29
+ resolve(JSON.stringify(form))
30
+ }, 500)
31
+ })
32
+ }
33
+ </script>
@@ -0,0 +1,82 @@
1
+ <template>
2
+ <div>
3
+ <h4>基础用法</h4>
4
+ <j-input-cards
5
+ v-model="cardData"
6
+ :columns="cardColumns"
7
+ :edit-config="editConfig"
8
+ @change="handleChange"
9
+ @row-change="handleRowChange"
10
+ />
11
+ <div style="margin-top: 16px">
12
+ <h3>当前数据:</h3>
13
+ <pre>{{ JSON.stringify(cardData, null, 2) }}</pre>
14
+ </div>
15
+ </div>
16
+ </template>
17
+
18
+ <script setup lang="ts">
19
+ import { ref, reactive } from 'vue';
20
+ import type { EditConfigType } from '@/packages/components/input-cards/src/interface';
21
+
22
+ const cardData = ref([
23
+ { i: '1', name: '产品A', price: 100, stock: 10 },
24
+ { i: '2', name: '产品B', price: 200, stock: 20 },
25
+ ]);
26
+
27
+ const cardColumns = ref<any[]>([
28
+ {
29
+ id: 'name',
30
+ type: 'j-input',
31
+ config: {
32
+ label: '产品名称',
33
+ placeholder: '请输入产品名称',
34
+ defaultValue: '',
35
+ },
36
+ },
37
+ {
38
+ id: 'price',
39
+ type: 'j-number',
40
+ config: {
41
+ label: '价格',
42
+ placeholder: '请输入价格',
43
+ defaultValue: 0,
44
+ min: 0,
45
+ },
46
+ },
47
+ {
48
+ id: 'stock',
49
+ type: 'j-number',
50
+ config: {
51
+ label: '库存',
52
+ placeholder: '请输入库存',
53
+ defaultValue: 0,
54
+ min: 0,
55
+ },
56
+ },
57
+ ]);
58
+
59
+ const editConfig = reactive<EditConfigType>({
60
+ isAddBtn: true,
61
+ isRemoveBtn: true,
62
+ addBtnText: '添加新卡片',
63
+ readonly: false,
64
+ // drag: false, // InputCards 暂不支持拖拽
65
+ });
66
+
67
+ const handleChange = (data: any) => {
68
+ console.log('变更事件:', data);
69
+ };
70
+
71
+ const handleRowChange = (data: any) => {
72
+ console.log('行变更事件:', data);
73
+ };
74
+ </script>
75
+
76
+ <style scoped>
77
+ pre {
78
+ background-color: #f4f4f4;
79
+ padding: 10px;
80
+ border-radius: 4px;
81
+ }
82
+ </style>