@a2simcode/ui 0.0.130 → 0.0.131

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 (334) 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/simcode-ui.es.js +8583 -7738
  6. package/dist/simcode-ui.umd.js +2 -2
  7. package/dist/stats.html +1 -1
  8. package/dist/ui.css +1 -1
  9. package/docs/components/autocomplete.md +89 -89
  10. package/docs/components/barcode.md +101 -101
  11. package/docs/components/button-select.md +24 -24
  12. package/docs/components/button.md +117 -117
  13. package/docs/components/buttons.md +119 -119
  14. package/docs/components/cascader-select.md +114 -114
  15. package/docs/components/checkbox.md +114 -114
  16. package/docs/components/code-mirror.md +85 -85
  17. package/docs/components/collapse.md +26 -26
  18. package/docs/components/comp.md +71 -71
  19. package/docs/components/count-up.md +24 -24
  20. package/docs/components/count.md +24 -24
  21. package/docs/components/data-panel.md +24 -24
  22. package/docs/components/date.md +76 -76
  23. package/docs/components/dialog-full.md +112 -112
  24. package/docs/components/dialog.md +127 -127
  25. package/docs/components/divider.md +24 -24
  26. package/docs/components/drawer.md +127 -127
  27. package/docs/components/dynamic-layer.md +118 -118
  28. package/docs/components/echarts.md +72 -72
  29. package/docs/components/editor.md +24 -24
  30. package/docs/components/form.md +42 -42
  31. package/docs/components/guid.md +39 -39
  32. package/docs/components/hpanel.md +24 -24
  33. package/docs/components/icon.md +56 -56
  34. package/docs/components/input-button.md +24 -24
  35. package/docs/components/input-code.md +24 -24
  36. package/docs/components/input-color.md +114 -114
  37. package/docs/components/input-layer.md +26 -26
  38. package/docs/components/input-rows.md +370 -370
  39. package/docs/components/input-tag.md +50 -50
  40. package/docs/components/input.md +129 -129
  41. package/docs/components/layer-form.md +61 -61
  42. package/docs/components/layer.md +127 -127
  43. package/docs/components/layout.md +132 -132
  44. package/docs/components/map.md +24 -24
  45. package/docs/components/menu.md +121 -121
  46. package/docs/components/meta/buttons.ts +76 -76
  47. package/docs/components/meta/comp.ts +236 -236
  48. package/docs/components/meta/date.ts +267 -267
  49. package/docs/components/meta/echarts.ts +64 -64
  50. package/docs/components/meta/form-item.ts +50 -50
  51. package/docs/components/meta/form.ts +165 -165
  52. package/docs/components/meta/input-cards.ts +112 -112
  53. package/docs/components/meta/input-color.ts +243 -243
  54. package/docs/components/meta/input-rows.ts +113 -113
  55. package/docs/components/meta/layer-form.ts +56 -56
  56. package/docs/components/meta/map.ts +68 -68
  57. package/docs/components/meta/panel.ts +152 -152
  58. package/docs/components/meta/slider.ts +270 -270
  59. package/docs/components/meta/table-panel.ts +232 -232
  60. package/docs/components/meta/table.ts +391 -391
  61. package/docs/components/meta/tabs.ts +146 -146
  62. package/docs/components/meta/title.ts +80 -80
  63. package/docs/components/meta/tree-select.ts +199 -199
  64. package/docs/components/meta/workflow-viewer.ts +55 -55
  65. package/docs/components/number.md +124 -124
  66. package/docs/components/page.md +87 -87
  67. package/docs/components/panel.md +37 -37
  68. package/docs/components/radio.md +87 -87
  69. package/docs/components/rate.md +71 -71
  70. package/docs/components/select.md +133 -133
  71. package/docs/components/slider-captcha.md +41 -41
  72. package/docs/components/slider.md +101 -101
  73. package/docs/components/switch.md +90 -90
  74. package/docs/components/table-panel.md +236 -236
  75. package/docs/components/table.md +391 -391
  76. package/docs/components/tabs.md +26 -26
  77. package/docs/components/title.md +24 -24
  78. package/docs/components/tree.md +207 -207
  79. package/docs/components/upload.md +117 -117
  80. package/docs/components/workflow-viewer.md +21 -21
  81. package/docs/components/workflow.md +21 -21
  82. package/docs/examples/autocomplete/advanced.vue +35 -35
  83. package/docs/examples/autocomplete/basic.vue +32 -32
  84. package/docs/examples/autocomplete/clearable.vue +33 -33
  85. package/docs/examples/autocomplete/custom-template.vue +49 -49
  86. package/docs/examples/autocomplete/disabled.vue +33 -33
  87. package/docs/examples/autocomplete/icon.vue +37 -37
  88. package/docs/examples/barcode/all-types.vue +380 -380
  89. package/docs/examples/barcode/basic.vue +14 -14
  90. package/docs/examples/barcode/props-appearance.vue +243 -243
  91. package/docs/examples/barcode/props-geometry.vue +143 -143
  92. package/docs/examples/barcode/props-logic.vue +216 -216
  93. package/docs/examples/barcode/props-symbology.vue +199 -199
  94. package/docs/examples/barcode/props-text.vue +268 -268
  95. package/docs/examples/button/basic.vue +7 -7
  96. package/docs/examples/button/danger-ghost.vue +17 -17
  97. package/docs/examples/button/disabled.vue +10 -10
  98. package/docs/examples/button/loading.vue +6 -6
  99. package/docs/examples/button/shape.vue +7 -7
  100. package/docs/examples/button/size.vue +14 -14
  101. package/docs/examples/button/type.vue +9 -9
  102. package/docs/examples/button-select/basic.vue +19 -19
  103. package/docs/examples/buttons/basic.vue +45 -45
  104. package/docs/examples/buttons/disabled.vue +36 -36
  105. package/docs/examples/buttons/dropdown.vue +63 -63
  106. package/docs/examples/buttons/group.vue +52 -52
  107. package/docs/examples/buttons/link.vue +47 -47
  108. package/docs/examples/buttons/popup.vue +39 -39
  109. package/docs/examples/buttons/size.vue +45 -45
  110. package/docs/examples/cascader-select/basic.vue +28 -28
  111. package/docs/examples/cascader-select/clearable.vue +34 -34
  112. package/docs/examples/cascader-select/disabled.vue +43 -43
  113. package/docs/examples/cascader-select/filterable.vue +37 -37
  114. package/docs/examples/cascader-select/methods.vue +84 -84
  115. package/docs/examples/cascader-select/multiple.vue +38 -38
  116. package/docs/examples/cascader-select/slot.vue +45 -45
  117. package/docs/examples/checkbox/basic.vue +18 -18
  118. package/docs/examples/checkbox/button.vue +19 -19
  119. package/docs/examples/checkbox/color.vue +25 -25
  120. package/docs/examples/checkbox/disabled.vue +17 -17
  121. package/docs/examples/checkbox/min-max.vue +20 -20
  122. package/docs/examples/checkbox/mixed.vue +56 -56
  123. package/docs/examples/checkbox/size.vue +28 -28
  124. package/docs/examples/code-mirror/basic.vue +11 -11
  125. package/docs/examples/code-mirror/events.vue +42 -42
  126. package/docs/examples/code-mirror/height.vue +25 -25
  127. package/docs/examples/code-mirror/mode.vue +33 -33
  128. package/docs/examples/code-mirror/readonly.vue +14 -14
  129. package/docs/examples/collapse/basic.vue +82 -82
  130. package/docs/examples/comp/basic.vue +7 -7
  131. package/docs/examples/comp/collapse.vue +38 -38
  132. package/docs/examples/comp/tabs.vue +38 -38
  133. package/docs/examples/count/basic.vue +101 -101
  134. package/docs/examples/count-up/basic.vue +89 -89
  135. package/docs/examples/data-panel/basic.vue +110 -110
  136. package/docs/examples/date/basic.vue +73 -73
  137. package/docs/examples/date/default-value.vue +59 -59
  138. package/docs/examples/date/format.vue +75 -75
  139. package/docs/examples/date/range.vue +66 -66
  140. package/docs/examples/date/types.vue +79 -79
  141. package/docs/examples/decorated-title/basic.vue +31 -31
  142. package/docs/examples/dialog/basic.vue +36 -36
  143. package/docs/examples/dialog/custom-buttons.vue +44 -44
  144. package/docs/examples/dialog/fullscreen.vue +23 -23
  145. package/docs/examples/dialog/no-mask.vue +17 -17
  146. package/docs/examples/dialog/size.vue +44 -44
  147. package/docs/examples/dialog/steps.vue +57 -57
  148. package/docs/examples/dialog-full/basic.vue +29 -29
  149. package/docs/examples/dialog-full/custom-buttons.vue +45 -45
  150. package/docs/examples/dialog-full/no-buttons.vue +18 -18
  151. package/docs/examples/dialog-full/no-header.vue +27 -27
  152. package/docs/examples/dialog-full/steps.vue +71 -71
  153. package/docs/examples/divider/basic.vue +52 -52
  154. package/docs/examples/drawer/basic.vue +35 -35
  155. package/docs/examples/drawer/custom-buttons.vue +34 -34
  156. package/docs/examples/drawer/direction.vue +47 -47
  157. package/docs/examples/drawer/mask.vue +36 -36
  158. package/docs/examples/drawer/no-buttons.vue +20 -20
  159. package/docs/examples/drawer/size.vue +28 -28
  160. package/docs/examples/dynamic-layer/basic.vue +33 -33
  161. package/docs/examples/dynamic-layer/custom-buttons.vue +43 -43
  162. package/docs/examples/dynamic-layer/form.vue +73 -73
  163. package/docs/examples/dynamic-layer/steps.vue +52 -52
  164. package/docs/examples/dynamic-layer/types.vue +40 -40
  165. package/docs/examples/echarts/basic.vue +31 -31
  166. package/docs/examples/echarts/dynamic.vue +43 -43
  167. package/docs/examples/echarts/line.vue +46 -46
  168. package/docs/examples/echarts/pie.vue +44 -44
  169. package/docs/examples/editor/basic.vue +15 -15
  170. package/docs/examples/form/basic.vue +539 -539
  171. package/docs/examples/form/init.vue +76 -76
  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 +73 -73
  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 +188 -188
  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 +87 -87
  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/tree-select/basic.vue +47 -47
  320. package/docs/examples/upload/accept.vue +31 -31
  321. package/docs/examples/upload/basic.vue +12 -12
  322. package/docs/examples/upload/drag.vue +11 -11
  323. package/docs/examples/upload/image.vue +17 -17
  324. package/docs/examples/upload/limit.vue +20 -20
  325. package/docs/examples/upload/multiple.vue +17 -17
  326. package/docs/examples/upload/readonly.vue +17 -17
  327. package/docs/examples/utils/cipher.vue +160 -160
  328. package/docs/examples/utils/common.vue +153 -153
  329. package/docs/examples/utils/date.vue +56 -56
  330. package/docs/examples/utils/dom.vue +52 -52
  331. package/docs/examples/utils/is.vue +70 -70
  332. package/docs/examples/workflow/basic.vue +265 -265
  333. package/docs/examples/workflow-viewer/basic.vue +248 -248
  334. package/package.json +23 -26
@@ -1,76 +1,76 @@
1
- <template>
2
- <div>
3
- <j-form ref="formRef" :config="formConfig" />
4
- <div style="margin-top: 16px; padding-left: 100px">
5
- <j-button type="primary" label="init 精简表单" @click="handleInitSimple"></j-button>
6
- <j-button style="margin-left: 8px" label="init 完整表单" @click="handleInitFull"></j-button>
7
- <j-button style="margin-left: 8px" label="获取数据" @click="handleGetFormData"></j-button>
8
- </div>
9
- </div>
10
- </template>
11
-
12
- <script setup>
13
- import { ref, reactive } from 'vue'
14
-
15
- const formRef = ref()
16
-
17
- const formConfig = reactive({
18
- labelWidth: 100,
19
- labelPosition: 'right',
20
- size: 'default',
21
- gutter: 16,
22
- span: 24,
23
- })
24
-
25
- const simpleSchema = [
26
- {
27
- type: 'j-input',
28
- config: {
29
- label: '用户名',
30
- field: 'username',
31
- placeholder: '请输入用户名',
32
- rule: [{ required: true, message: '请输入用户名' }],
33
- },
34
- },
35
- {
36
- type: 'j-number',
37
- config: {
38
- label: '年龄',
39
- field: 'age',
40
- placeholder: '请输入年龄',
41
- min: 0,
42
- max: 150,
43
- },
44
- },
45
- ]
46
-
47
- const fullSchema = [
48
- ...simpleSchema,
49
- {
50
- type: 'j-select',
51
- config: {
52
- label: '状态',
53
- field: 'status',
54
- placeholder: '请选择',
55
- options: [
56
- { label: '启用', value: 1 },
57
- { label: '停用', value: 0 },
58
- ],
59
- },
60
- },
61
- ]
62
-
63
- const schema = fullSchema
64
-
65
- const handleInitSimple = async () => {
66
- await formRef.value.init(simpleSchema, { username: '张三', age: 18 })
67
- }
68
-
69
- const handleInitFull = async () => {
70
- await formRef.value.init(fullSchema, { username: '李四', age: 28, status: 1 })
71
- }
72
-
73
- const handleGetFormData = () => {
74
- console.log(formRef.value.getFormData(), 'getFormData')
75
- }
76
- </script>
1
+ <template>
2
+ <div>
3
+ <j-form ref="formRef" :config="formConfig" />
4
+ <div style="margin-top: 16px; padding-left: 100px">
5
+ <j-button type="primary" label="init 精简表单" @click="handleInitSimple"></j-button>
6
+ <j-button style="margin-left: 8px" label="init 完整表单" @click="handleInitFull"></j-button>
7
+ <j-button style="margin-left: 8px" label="获取数据" @click="handleGetFormData"></j-button>
8
+ </div>
9
+ </div>
10
+ </template>
11
+
12
+ <script setup>
13
+ import { ref, reactive } from 'vue'
14
+
15
+ const formRef = ref()
16
+
17
+ const formConfig = reactive({
18
+ labelWidth: 100,
19
+ labelPosition: 'right',
20
+ size: 'default',
21
+ gutter: 16,
22
+ span: 24,
23
+ })
24
+
25
+ const simpleSchema = [
26
+ {
27
+ type: 'j-input',
28
+ config: {
29
+ label: '用户名',
30
+ field: 'username',
31
+ placeholder: '请输入用户名',
32
+ rule: [{ required: true, message: '请输入用户名' }],
33
+ },
34
+ },
35
+ {
36
+ type: 'j-number',
37
+ config: {
38
+ label: '年龄',
39
+ field: 'age',
40
+ placeholder: '请输入年龄',
41
+ min: 0,
42
+ max: 150,
43
+ },
44
+ },
45
+ ]
46
+
47
+ const fullSchema = [
48
+ ...simpleSchema,
49
+ {
50
+ type: 'j-select',
51
+ config: {
52
+ label: '状态',
53
+ field: 'status',
54
+ placeholder: '请选择',
55
+ options: [
56
+ { label: '启用', value: 1 },
57
+ { label: '停用', value: 0 },
58
+ ],
59
+ },
60
+ },
61
+ ]
62
+
63
+ const schema = fullSchema
64
+
65
+ const handleInitSimple = async () => {
66
+ await formRef.value.init(simpleSchema, { username: '张三', age: 18 })
67
+ }
68
+
69
+ const handleInitFull = async () => {
70
+ await formRef.value.init(fullSchema, { username: '李四', age: 28, status: 1 })
71
+ }
72
+
73
+ const handleGetFormData = () => {
74
+ console.log(formRef.value.getFormData(), 'getFormData')
75
+ }
76
+ </script>
@@ -1,10 +1,10 @@
1
- <template>
2
- <j-guid v-model="value" />
3
- <p v-if="value" style="margin-top: 12px; color: #606266">生成的 UUID: {{ 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-guid v-model="value" />
3
+ <p v-if="value" style="margin-top: 12px; color: #606266">生成的 UUID: {{ value }}</p>
4
+ </template>
5
+
6
+ <script setup lang="ts">
7
+ import { ref } from 'vue'
8
+
9
+ const value = ref('')
10
+ </script>
@@ -1,13 +1,13 @@
1
- <template>
2
- <div style="display: flex; flex-direction: column; gap: 12px">
3
- <j-guid v-model="value" size="large" style="width: 300px" />
4
- <j-guid v-model="value" style="width: 300px" />
5
- <j-guid v-model="value" size="small" 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-guid v-model="value" size="large" style="width: 300px" />
4
+ <j-guid v-model="value" style="width: 300px" />
5
+ <j-guid v-model="value" size="small" 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,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>