@a2simcode/ui 0.0.214 → 0.0.216

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 (354) 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/button/index.d.ts +0 -3
  6. package/dist/components/button/src/button.vue.d.ts +0 -3
  7. package/dist/components/input-layer/src/input-layer.vue.d.ts +0 -2
  8. package/dist/simcode-ui.es.js +367 -375
  9. package/dist/simcode-ui.umd.js +2 -2
  10. package/dist/stats.html +1 -1
  11. package/dist/ui.css +1 -1
  12. package/docs/components/autocomplete.md +89 -89
  13. package/docs/components/barcode.md +101 -101
  14. package/docs/components/button-select.md +24 -24
  15. package/docs/components/button.md +117 -117
  16. package/docs/components/buttons.md +119 -119
  17. package/docs/components/cascader-select.md +114 -114
  18. package/docs/components/checkbox.md +114 -114
  19. package/docs/components/code-mirror.md +85 -85
  20. package/docs/components/collapse.md +26 -26
  21. package/docs/components/comp.md +71 -71
  22. package/docs/components/count-up.md +24 -24
  23. package/docs/components/count.md +24 -24
  24. package/docs/components/data-panel.md +24 -24
  25. package/docs/components/date.md +76 -76
  26. package/docs/components/dialog-full.md +112 -112
  27. package/docs/components/dialog.md +127 -127
  28. package/docs/components/divider.md +24 -24
  29. package/docs/components/drawer.md +127 -127
  30. package/docs/components/dynamic-layer.md +118 -118
  31. package/docs/components/echarts.md +72 -72
  32. package/docs/components/editor.md +24 -24
  33. package/docs/components/form.md +72 -72
  34. package/docs/components/guid.md +39 -39
  35. package/docs/components/hpanel.md +24 -24
  36. package/docs/components/icon.md +56 -56
  37. package/docs/components/input-button.md +24 -24
  38. package/docs/components/input-code.md +24 -24
  39. package/docs/components/input-color.md +114 -114
  40. package/docs/components/input-layer.md +56 -56
  41. package/docs/components/input-rows.md +370 -370
  42. package/docs/components/input-tag.md +50 -50
  43. package/docs/components/input.md +129 -129
  44. package/docs/components/layer-form.md +61 -61
  45. package/docs/components/layer.md +127 -127
  46. package/docs/components/layout.md +132 -132
  47. package/docs/components/map.md +24 -24
  48. package/docs/components/menu.md +121 -121
  49. package/docs/components/meta/button.ts +212 -223
  50. package/docs/components/meta/buttons.ts +76 -76
  51. package/docs/components/meta/code-mirror.ts +108 -108
  52. package/docs/components/meta/comp.ts +236 -236
  53. package/docs/components/meta/date.ts +267 -267
  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 +181 -181
  57. package/docs/components/meta/input-button.ts +165 -165
  58. package/docs/components/meta/input-cards.ts +112 -112
  59. package/docs/components/meta/input-code.ts +151 -151
  60. package/docs/components/meta/input-color.ts +243 -243
  61. package/docs/components/meta/input-layer.ts +382 -392
  62. package/docs/components/meta/input-rows.ts +119 -119
  63. package/docs/components/meta/layer-form.ts +56 -56
  64. package/docs/components/meta/map.ts +68 -68
  65. package/docs/components/meta/panel.ts +152 -152
  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 +242 -242
  69. package/docs/components/meta/table.ts +397 -397
  70. package/docs/components/meta/tabs.ts +146 -146
  71. package/docs/components/meta/title.ts +91 -91
  72. package/docs/components/meta/tree-select.ts +199 -199
  73. package/docs/components/meta/tree.ts +219 -219
  74. package/docs/components/meta/vpanel.ts +19 -19
  75. package/docs/components/meta/workflow-viewer.ts +55 -55
  76. package/docs/components/number.md +124 -124
  77. package/docs/components/page.md +102 -102
  78. package/docs/components/panel.md +37 -37
  79. package/docs/components/radio.md +87 -87
  80. package/docs/components/rate.md +71 -71
  81. package/docs/components/select.md +133 -133
  82. package/docs/components/slider-captcha.md +41 -41
  83. package/docs/components/slider.md +101 -101
  84. package/docs/components/switch.md +90 -90
  85. package/docs/components/table-panel.md +251 -251
  86. package/docs/components/table.md +405 -405
  87. package/docs/components/tabs.md +26 -26
  88. package/docs/components/title.md +24 -24
  89. package/docs/components/tree.md +207 -207
  90. package/docs/components/upload.md +117 -117
  91. package/docs/components/workflow-viewer.md +21 -21
  92. package/docs/components/workflow.md +21 -21
  93. package/docs/examples/autocomplete/advanced.vue +35 -35
  94. package/docs/examples/autocomplete/basic.vue +32 -32
  95. package/docs/examples/autocomplete/clearable.vue +33 -33
  96. package/docs/examples/autocomplete/custom-template.vue +49 -49
  97. package/docs/examples/autocomplete/disabled.vue +33 -33
  98. package/docs/examples/autocomplete/icon.vue +37 -37
  99. package/docs/examples/barcode/all-types.vue +380 -380
  100. package/docs/examples/barcode/basic.vue +14 -14
  101. package/docs/examples/barcode/props-appearance.vue +243 -243
  102. package/docs/examples/barcode/props-geometry.vue +143 -143
  103. package/docs/examples/barcode/props-logic.vue +216 -216
  104. package/docs/examples/barcode/props-symbology.vue +199 -199
  105. package/docs/examples/barcode/props-text.vue +268 -268
  106. package/docs/examples/button/basic.vue +7 -7
  107. package/docs/examples/button/danger.vue +9 -0
  108. package/docs/examples/button/disabled.vue +9 -10
  109. package/docs/examples/button/loading.vue +6 -6
  110. package/docs/examples/button/shape.vue +7 -7
  111. package/docs/examples/button/size.vue +14 -14
  112. package/docs/examples/button/type.vue +10 -10
  113. package/docs/examples/button-select/basic.vue +19 -19
  114. package/docs/examples/buttons/basic.vue +62 -62
  115. package/docs/examples/buttons/disabled.vue +36 -36
  116. package/docs/examples/buttons/dropdown.vue +63 -63
  117. package/docs/examples/buttons/group.vue +52 -52
  118. package/docs/examples/buttons/link.vue +47 -47
  119. package/docs/examples/buttons/popup.vue +39 -39
  120. package/docs/examples/buttons/size.vue +45 -45
  121. package/docs/examples/cascader-select/basic.vue +28 -28
  122. package/docs/examples/cascader-select/clearable.vue +34 -34
  123. package/docs/examples/cascader-select/disabled.vue +43 -43
  124. package/docs/examples/cascader-select/filterable.vue +37 -37
  125. package/docs/examples/cascader-select/methods.vue +84 -84
  126. package/docs/examples/cascader-select/multiple.vue +38 -38
  127. package/docs/examples/cascader-select/slot.vue +45 -45
  128. package/docs/examples/checkbox/basic.vue +18 -18
  129. package/docs/examples/checkbox/button.vue +19 -19
  130. package/docs/examples/checkbox/color.vue +25 -25
  131. package/docs/examples/checkbox/disabled.vue +17 -17
  132. package/docs/examples/checkbox/min-max.vue +20 -20
  133. package/docs/examples/checkbox/mixed.vue +56 -56
  134. package/docs/examples/checkbox/size.vue +28 -28
  135. package/docs/examples/code-mirror/basic.vue +11 -11
  136. package/docs/examples/code-mirror/events.vue +42 -42
  137. package/docs/examples/code-mirror/height.vue +25 -25
  138. package/docs/examples/code-mirror/mode.vue +33 -33
  139. package/docs/examples/code-mirror/readonly.vue +14 -14
  140. package/docs/examples/collapse/basic.vue +82 -82
  141. package/docs/examples/comp/basic.vue +7 -7
  142. package/docs/examples/comp/collapse.vue +38 -38
  143. package/docs/examples/comp/tabs.vue +38 -38
  144. package/docs/examples/count/basic.vue +101 -101
  145. package/docs/examples/count-up/basic.vue +89 -89
  146. package/docs/examples/data-panel/basic.vue +110 -110
  147. package/docs/examples/date/basic.vue +73 -73
  148. package/docs/examples/date/default-value.vue +59 -59
  149. package/docs/examples/date/format.vue +75 -75
  150. package/docs/examples/date/range.vue +66 -66
  151. package/docs/examples/date/types.vue +79 -79
  152. package/docs/examples/decorated-title/basic.vue +31 -31
  153. package/docs/examples/dialog/basic.vue +36 -36
  154. package/docs/examples/dialog/custom-buttons.vue +44 -44
  155. package/docs/examples/dialog/fullscreen.vue +23 -23
  156. package/docs/examples/dialog/no-mask.vue +17 -17
  157. package/docs/examples/dialog/size.vue +44 -44
  158. package/docs/examples/dialog/steps.vue +57 -57
  159. package/docs/examples/dialog-full/basic.vue +29 -29
  160. package/docs/examples/dialog-full/custom-buttons.vue +45 -45
  161. package/docs/examples/dialog-full/no-buttons.vue +18 -18
  162. package/docs/examples/dialog-full/no-header.vue +27 -27
  163. package/docs/examples/dialog-full/steps.vue +71 -71
  164. package/docs/examples/divider/basic.vue +52 -52
  165. package/docs/examples/drawer/basic.vue +35 -35
  166. package/docs/examples/drawer/custom-buttons.vue +34 -34
  167. package/docs/examples/drawer/direction.vue +47 -47
  168. package/docs/examples/drawer/mask.vue +36 -36
  169. package/docs/examples/drawer/no-buttons.vue +20 -20
  170. package/docs/examples/drawer/size.vue +28 -28
  171. package/docs/examples/dynamic-layer/basic.vue +33 -33
  172. package/docs/examples/dynamic-layer/custom-buttons.vue +43 -43
  173. package/docs/examples/dynamic-layer/form.vue +73 -73
  174. package/docs/examples/dynamic-layer/steps.vue +52 -52
  175. package/docs/examples/dynamic-layer/types.vue +40 -40
  176. package/docs/examples/echarts/basic.vue +31 -31
  177. package/docs/examples/echarts/dynamic.vue +43 -43
  178. package/docs/examples/echarts/line.vue +46 -46
  179. package/docs/examples/echarts/pie.vue +44 -44
  180. package/docs/examples/editor/basic.vue +15 -15
  181. package/docs/examples/form/basic.vue +663 -663
  182. package/docs/examples/form/init.vue +76 -76
  183. package/docs/examples/form/master-detail.vue +203 -203
  184. package/docs/examples/form/rule-format.vue +179 -179
  185. package/docs/examples/guid/basic.vue +10 -10
  186. package/docs/examples/guid/size.vue +13 -13
  187. package/docs/examples/hpanel/basic.vue +79 -79
  188. package/docs/examples/icon/basic.vue +9 -9
  189. package/docs/examples/icon/rotate-flip.vue +9 -9
  190. package/docs/examples/icon/size.vue +7 -7
  191. package/docs/examples/input/basic.vue +10 -10
  192. package/docs/examples/input/clearable.vue +12 -12
  193. package/docs/examples/input/disabled.vue +6 -6
  194. package/docs/examples/input/icon.vue +23 -23
  195. package/docs/examples/input/password.vue +18 -18
  196. package/docs/examples/input/size.vue +13 -13
  197. package/docs/examples/input/textarea.vue +25 -25
  198. package/docs/examples/input/word-limit.vue +28 -28
  199. package/docs/examples/input-button/basic.vue +33 -33
  200. package/docs/examples/input-cards/basic.vue +79 -79
  201. package/docs/examples/input-code/basic.vue +29 -29
  202. package/docs/examples/input-color/basic.vue +10 -10
  203. package/docs/examples/input-color/disabled.vue +13 -13
  204. package/docs/examples/input-color/format.vue +17 -17
  205. package/docs/examples/input-color/no-alpha.vue +13 -13
  206. package/docs/examples/input-color/only-button.vue +15 -15
  207. package/docs/examples/input-color/predefine.vue +31 -31
  208. package/docs/examples/input-color/size.vue +15 -15
  209. package/docs/examples/input-layer/basic.vue +85 -86
  210. package/docs/examples/input-layer/render-vnode-page.vue +160 -160
  211. package/docs/examples/input-layer/render-vnode.vue +127 -127
  212. package/docs/examples/input-rows/basic.vue +73 -73
  213. package/docs/examples/input-rows/drag.vue +48 -48
  214. package/docs/examples/input-rows/layer-form.vue +85 -85
  215. package/docs/examples/input-rows/nested.vue +91 -91
  216. package/docs/examples/input-tag/basic.vue +27 -27
  217. package/docs/examples/input-tag/colors.vue +23 -23
  218. package/docs/examples/input-tag/readonly.vue +17 -17
  219. package/docs/examples/layer/basic.vue +43 -43
  220. package/docs/examples/layer/custom-buttons.vue +61 -61
  221. package/docs/examples/layer/drawer.vue +37 -37
  222. package/docs/examples/layer/full.vue +38 -38
  223. package/docs/examples/layer/modal.vue +34 -34
  224. package/docs/examples/layer/steps.vue +46 -46
  225. package/docs/examples/layer-form/basic.vue +76 -76
  226. package/docs/examples/layer-form/config.vue +82 -82
  227. package/docs/examples/layer-form/size.vue +72 -72
  228. package/docs/examples/layout/basic.vue +36 -36
  229. package/docs/examples/layout/custom-size.vue +50 -50
  230. package/docs/examples/layout/disable-move.vue +37 -37
  231. package/docs/examples/layout/hide-mid-when-narrow.vue +96 -96
  232. package/docs/examples/layout/min-size.vue +73 -73
  233. package/docs/examples/layout/percent-size.vue +80 -80
  234. package/docs/examples/layout/simple.vue +22 -22
  235. package/docs/examples/layout/top-side.vue +34 -34
  236. package/docs/examples/map/basic.vue +22 -22
  237. package/docs/examples/menu/basic.vue +58 -58
  238. package/docs/examples/menu/collapsed.vue +49 -49
  239. package/docs/examples/menu/horizontal.vue +44 -44
  240. package/docs/examples/menu/selection-test.vue +104 -104
  241. package/docs/examples/menu/theme.vue +46 -46
  242. package/docs/examples/menu/vertical.vue +46 -46
  243. package/docs/examples/number/advanced.vue +143 -143
  244. package/docs/examples/number/basic.vue +63 -63
  245. package/docs/examples/number/disabled.vue +49 -49
  246. package/docs/examples/number/size.vue +42 -42
  247. package/docs/examples/number/slots.vue +123 -123
  248. package/docs/examples/number/step-strictly.vue +41 -41
  249. package/docs/examples/number/step.vue +47 -47
  250. package/docs/examples/page/basic.vue +41 -41
  251. package/docs/examples/page/code-table-model.vue +428 -428
  252. package/docs/examples/page/dept-user-management.vue +211 -211
  253. package/docs/examples/page/init.vue +87 -87
  254. package/docs/examples/page/log.vue +453 -453
  255. package/docs/examples/page/user-management.vue +313 -313
  256. package/docs/examples/panel/tool-buttons.vue +18 -18
  257. package/docs/examples/radio/basic.vue +17 -17
  258. package/docs/examples/radio/button.vue +17 -17
  259. package/docs/examples/radio/color.vue +18 -18
  260. package/docs/examples/radio/disabled.vue +17 -17
  261. package/docs/examples/radio/size.vue +29 -29
  262. package/docs/examples/rate/basic.vue +24 -24
  263. package/docs/examples/rate/half.vue +24 -24
  264. package/docs/examples/rate/readonly.vue +11 -11
  265. package/docs/examples/rate/text.vue +37 -37
  266. package/docs/examples/select/basic.vue +16 -16
  267. package/docs/examples/select/clearable.vue +22 -22
  268. package/docs/examples/select/disabled.vue +31 -31
  269. package/docs/examples/select/filterable.vue +24 -24
  270. package/docs/examples/select/group.vue +23 -23
  271. package/docs/examples/select/icon.vue +16 -16
  272. package/docs/examples/select/multiple.vue +18 -18
  273. package/docs/examples/select/size.vue +39 -39
  274. package/docs/examples/slider/basic.vue +42 -42
  275. package/docs/examples/slider/disabled.vue +17 -17
  276. package/docs/examples/slider/marks.vue +30 -30
  277. package/docs/examples/slider/size.vue +37 -37
  278. package/docs/examples/slider/tooltip.vue +36 -36
  279. package/docs/examples/slider/vertical.vue +26 -26
  280. package/docs/examples/slider-captcha/basic.vue +44 -44
  281. package/docs/examples/slider-captcha/custom.vue +48 -48
  282. package/docs/examples/switch/basic.vue +16 -16
  283. package/docs/examples/switch/disabled.vue +13 -13
  284. package/docs/examples/switch/loading.vue +13 -13
  285. package/docs/examples/switch/size.vue +15 -15
  286. package/docs/examples/switch/text.vue +13 -13
  287. package/docs/examples/table/action-filter.vue +126 -126
  288. package/docs/examples/table/actions.vue +116 -116
  289. package/docs/examples/table/add-row.vue +103 -103
  290. package/docs/examples/table/basic.vue +168 -168
  291. package/docs/examples/table/checkbox-layout.vue +68 -68
  292. package/docs/examples/table/custom-layout.vue +115 -115
  293. package/docs/examples/table/dynamic-type.vue +73 -73
  294. package/docs/examples/table/editable.vue +262 -262
  295. package/docs/examples/table/field-selection.vue +87 -87
  296. package/docs/examples/table/frozen-column.vue +140 -140
  297. package/docs/examples/table/height-mode.vue +99 -99
  298. package/docs/examples/table/icon.vue +85 -85
  299. package/docs/examples/table/link.vue +66 -66
  300. package/docs/examples/table/multiple-disabled.vue +112 -112
  301. package/docs/examples/table/multiple.vue +188 -188
  302. package/docs/examples/table/pagination.vue +151 -151
  303. package/docs/examples/table/single-selection.vue +64 -64
  304. package/docs/examples/table/sub-table-lazy.vue +97 -97
  305. package/docs/examples/table/sub-table.vue +103 -103
  306. package/docs/examples/table/tag.vue +43 -43
  307. package/docs/examples/table/tree-column.vue +119 -119
  308. package/docs/examples/table/tree-data.vue +141 -141
  309. package/docs/examples/table/tree-default-expand-all.vue +60 -60
  310. package/docs/examples/table/tree-lazy.vue +80 -80
  311. package/docs/examples/table/tree-set-selection.vue +75 -75
  312. package/docs/examples/table-panel/basic.vue +229 -229
  313. package/docs/examples/table-panel/batch-operations.vue +285 -285
  314. package/docs/examples/table-panel/button-visibility.vue +88 -88
  315. package/docs/examples/table-panel/filter.vue +219 -219
  316. package/docs/examples/table-panel/get-selection.vue +111 -111
  317. package/docs/examples/table-panel/mask.vue +151 -151
  318. package/docs/examples/table-panel/multiple-selection.vue +243 -243
  319. package/docs/examples/table-panel/pagination.vue +133 -133
  320. package/docs/examples/table-panel/sub-table-lazy.vue +118 -118
  321. package/docs/examples/table-panel/tree-parent-key.vue +67 -67
  322. package/docs/examples/tabs/basic.vue +98 -98
  323. package/docs/examples/time/base.vue +67 -67
  324. package/docs/examples/title/basic.vue +87 -87
  325. package/docs/examples/tree/accordion.vue +46 -46
  326. package/docs/examples/tree/basic.vue +50 -50
  327. package/docs/examples/tree/buttons.vue +53 -53
  328. package/docs/examples/tree/checkable.vue +52 -52
  329. package/docs/examples/tree/custom-keys.vue +39 -39
  330. package/docs/examples/tree/default-expanded.vue +52 -52
  331. package/docs/examples/tree/draggable.vue +29 -29
  332. package/docs/examples/tree/expand-on-click.vue +39 -39
  333. package/docs/examples/tree/flat-data.vue +20 -20
  334. package/docs/examples/tree/icon.vue +40 -40
  335. package/docs/examples/tree/load-data.vue +37 -37
  336. package/docs/examples/tree/methods.vue +74 -74
  337. package/docs/examples/tree/theme.vue +33 -33
  338. package/docs/examples/tree-select/basic.vue +47 -47
  339. package/docs/examples/upload/accept.vue +31 -31
  340. package/docs/examples/upload/basic.vue +12 -12
  341. package/docs/examples/upload/drag.vue +11 -11
  342. package/docs/examples/upload/image.vue +17 -17
  343. package/docs/examples/upload/limit.vue +20 -20
  344. package/docs/examples/upload/multiple.vue +17 -17
  345. package/docs/examples/upload/readonly.vue +17 -17
  346. package/docs/examples/utils/cipher.vue +160 -160
  347. package/docs/examples/utils/common.vue +153 -153
  348. package/docs/examples/utils/date.vue +56 -56
  349. package/docs/examples/utils/dom.vue +52 -52
  350. package/docs/examples/utils/is.vue +70 -70
  351. package/docs/examples/workflow/basic.vue +265 -265
  352. package/docs/examples/workflow-viewer/basic.vue +248 -248
  353. package/package.json +23 -23
  354. package/docs/examples/button/danger-ghost.vue +0 -17
@@ -1,33 +1,33 @@
1
- <template>
2
- <div>
3
- <j-button label="打开动态组件" @click="openLayer" />
4
- <j-dynamic-layer ref="layerRef" />
5
- </div>
6
- </template>
7
-
8
- <script setup lang="ts">
9
- import { ref, h } from 'vue'
10
-
11
- const layerRef = ref()
12
-
13
- // 动态组件示例
14
- const DemoComponent = {
15
- setup() {
16
- return () =>
17
- h('div', { style: 'padding: 16px' }, [
18
- h('p', '这是一个动态加载的组件'),
19
- h('p', '可以是任何 Vue 组件'),
20
- ])
21
- },
22
- }
23
-
24
- const openLayer = () => {
25
- layerRef.value.open({
26
- title: '动态组件示例',
27
- name: DemoComponent,
28
- type: 'modal',
29
- width: 600,
30
- height: 400,
31
- })
32
- }
33
- </script>
1
+ <template>
2
+ <div>
3
+ <j-button label="打开动态组件" @click="openLayer" />
4
+ <j-dynamic-layer ref="layerRef" />
5
+ </div>
6
+ </template>
7
+
8
+ <script setup lang="ts">
9
+ import { ref, h } from 'vue'
10
+
11
+ const layerRef = ref()
12
+
13
+ // 动态组件示例
14
+ const DemoComponent = {
15
+ setup() {
16
+ return () =>
17
+ h('div', { style: 'padding: 16px' }, [
18
+ h('p', '这是一个动态加载的组件'),
19
+ h('p', '可以是任何 Vue 组件'),
20
+ ])
21
+ },
22
+ }
23
+
24
+ const openLayer = () => {
25
+ layerRef.value.open({
26
+ title: '动态组件示例',
27
+ name: DemoComponent,
28
+ type: 'modal',
29
+ width: 600,
30
+ height: 400,
31
+ })
32
+ }
33
+ </script>
@@ -1,43 +1,43 @@
1
- <template>
2
- <div>
3
- <j-button label="自定义按钮" @click="openLayer" />
4
- <j-dynamic-layer ref="layerRef" />
5
- </div>
6
- </template>
7
-
8
- <script setup lang="ts">
9
- import { ref, h } from 'vue'
10
-
11
- const layerRef = ref()
12
-
13
- const CustomComponent = {
14
- setup(props: any, { expose }: any) {
15
- const getConfig = () => {
16
- return {
17
- buttons: [
18
- {
19
- label: '自定义操作',
20
- type: 'primary',
21
- onClick: () => {
22
- alert('执行自定义操作')
23
- },
24
- },
25
- ],
26
- }
27
- }
28
-
29
- expose({ getConfig })
30
-
31
- return () => h('div', { style: 'padding: 16px' }, [h('p', '这个弹层有自定义按钮')])
32
- },
33
- }
34
-
35
- const openLayer = () => {
36
- layerRef.value.open({
37
- title: '自定义按钮示例',
38
- name: CustomComponent,
39
- type: 'modal',
40
- hasSaveBtn: false,
41
- })
42
- }
43
- </script>
1
+ <template>
2
+ <div>
3
+ <j-button label="自定义按钮" @click="openLayer" />
4
+ <j-dynamic-layer ref="layerRef" />
5
+ </div>
6
+ </template>
7
+
8
+ <script setup lang="ts">
9
+ import { ref, h } from 'vue'
10
+
11
+ const layerRef = ref()
12
+
13
+ const CustomComponent = {
14
+ setup(props: any, { expose }: any) {
15
+ const getConfig = () => {
16
+ return {
17
+ buttons: [
18
+ {
19
+ label: '自定义操作',
20
+ type: 'primary',
21
+ onClick: () => {
22
+ alert('执行自定义操作')
23
+ },
24
+ },
25
+ ],
26
+ }
27
+ }
28
+
29
+ expose({ getConfig })
30
+
31
+ return () => h('div', { style: 'padding: 16px' }, [h('p', '这个弹层有自定义按钮')])
32
+ },
33
+ }
34
+
35
+ const openLayer = () => {
36
+ layerRef.value.open({
37
+ title: '自定义按钮示例',
38
+ name: CustomComponent,
39
+ type: 'modal',
40
+ hasSaveBtn: false,
41
+ })
42
+ }
43
+ </script>
@@ -1,73 +1,73 @@
1
- <template>
2
- <div>
3
- <j-button label="打开表单组件" @click="openFormLayer" />
4
- <j-dynamic-layer ref="layerRef" />
5
- </div>
6
- </template>
7
-
8
- <script setup lang="ts">
9
- import { ref, h } from 'vue'
10
-
11
- const layerRef = ref()
12
-
13
- // 表单组件示例
14
- const FormComponent = {
15
- setup(props: any, { expose }: any) {
16
- const formData = ref({
17
- name: '',
18
- email: '',
19
- })
20
-
21
- // 提供给外层调用的方法
22
- const open = (param: any) => {
23
- console.log('接收参数:', param)
24
- return Promise.resolve()
25
- }
26
-
27
- const ok = () => {
28
- if (!formData.value.name) {
29
- alert('请输入姓名')
30
- return Promise.resolve(false)
31
- }
32
- console.log('提交数据:', formData.value)
33
- return Promise.resolve(true)
34
- }
35
-
36
- expose({ open, ok })
37
-
38
- return () =>
39
- h('div', { style: 'padding: 16px' }, [
40
- h('div', { style: 'margin-bottom: 16px' }, [
41
- h('label', '姓名: '),
42
- h('input', {
43
- value: formData.value.name,
44
- onInput: (e: any) => (formData.value.name = e.target.value),
45
- style: 'margin-left: 8px; padding: 4px 8px',
46
- }),
47
- ]),
48
- h('div', [
49
- h('label', '邮箱: '),
50
- h('input', {
51
- value: formData.value.email,
52
- onInput: (e: any) => (formData.value.email = e.target.value),
53
- style: 'margin-left: 8px; padding: 4px 8px',
54
- }),
55
- ]),
56
- ])
57
- },
58
- }
59
-
60
- const openFormLayer = () => {
61
- layerRef.value.open({
62
- title: '表单示例',
63
- name: FormComponent,
64
- type: 'modal',
65
- width: 500,
66
- height: 300,
67
- param: { id: 123 },
68
- afterOk: (data: any) => {
69
- console.log('保存成功回调:', data)
70
- },
71
- })
72
- }
73
- </script>
1
+ <template>
2
+ <div>
3
+ <j-button label="打开表单组件" @click="openFormLayer" />
4
+ <j-dynamic-layer ref="layerRef" />
5
+ </div>
6
+ </template>
7
+
8
+ <script setup lang="ts">
9
+ import { ref, h } from 'vue'
10
+
11
+ const layerRef = ref()
12
+
13
+ // 表单组件示例
14
+ const FormComponent = {
15
+ setup(props: any, { expose }: any) {
16
+ const formData = ref({
17
+ name: '',
18
+ email: '',
19
+ })
20
+
21
+ // 提供给外层调用的方法
22
+ const open = (param: any) => {
23
+ console.log('接收参数:', param)
24
+ return Promise.resolve()
25
+ }
26
+
27
+ const ok = () => {
28
+ if (!formData.value.name) {
29
+ alert('请输入姓名')
30
+ return Promise.resolve(false)
31
+ }
32
+ console.log('提交数据:', formData.value)
33
+ return Promise.resolve(true)
34
+ }
35
+
36
+ expose({ open, ok })
37
+
38
+ return () =>
39
+ h('div', { style: 'padding: 16px' }, [
40
+ h('div', { style: 'margin-bottom: 16px' }, [
41
+ h('label', '姓名: '),
42
+ h('input', {
43
+ value: formData.value.name,
44
+ onInput: (e: any) => (formData.value.name = e.target.value),
45
+ style: 'margin-left: 8px; padding: 4px 8px',
46
+ }),
47
+ ]),
48
+ h('div', [
49
+ h('label', '邮箱: '),
50
+ h('input', {
51
+ value: formData.value.email,
52
+ onInput: (e: any) => (formData.value.email = e.target.value),
53
+ style: 'margin-left: 8px; padding: 4px 8px',
54
+ }),
55
+ ]),
56
+ ])
57
+ },
58
+ }
59
+
60
+ const openFormLayer = () => {
61
+ layerRef.value.open({
62
+ title: '表单示例',
63
+ name: FormComponent,
64
+ type: 'modal',
65
+ width: 500,
66
+ height: 300,
67
+ param: { id: 123 },
68
+ afterOk: (data: any) => {
69
+ console.log('保存成功回调:', data)
70
+ },
71
+ })
72
+ }
73
+ </script>
@@ -1,52 +1,52 @@
1
- <template>
2
- <div>
3
- <j-button label="打开步骤弹窗" @click="openStepLayer" />
4
- <j-dynamic-layer ref="layerRef" />
5
- </div>
6
- </template>
7
-
8
- <script setup lang="ts">
9
- import { ref, h } from 'vue'
10
-
11
- const layerRef = ref()
12
- const currentStep = ref(0)
13
-
14
- const StepComponent = {
15
- setup(props: any, { expose }: any) {
16
- const getConfig = () => {
17
- return {
18
- isStep: true,
19
- steps: ['基本信息', '详细信息', '确认提交'],
20
- }
21
- }
22
-
23
- const validateSteps = (stepActive: number) => {
24
- console.log('校验步骤:', stepActive)
25
- if (stepActive === 0 && !confirm('是否继续下一步?')) {
26
- return Promise.resolve(false)
27
- }
28
- currentStep.value = stepActive
29
- return Promise.resolve(true)
30
- }
31
-
32
- expose({ getConfig, validateSteps })
33
-
34
- return () =>
35
- h('div', { style: 'padding: 16px' }, [
36
- h('h3', `当前步骤: ${currentStep.value + 1}`),
37
- h('p', '步骤条示例'),
38
- ])
39
- },
40
- }
41
-
42
- const openStepLayer = () => {
43
- currentStep.value = 0
44
- layerRef.value.open({
45
- title: '步骤弹窗',
46
- name: StepComponent,
47
- type: 'modal',
48
- width: 700,
49
- height: 400,
50
- })
51
- }
52
- </script>
1
+ <template>
2
+ <div>
3
+ <j-button label="打开步骤弹窗" @click="openStepLayer" />
4
+ <j-dynamic-layer ref="layerRef" />
5
+ </div>
6
+ </template>
7
+
8
+ <script setup lang="ts">
9
+ import { ref, h } from 'vue'
10
+
11
+ const layerRef = ref()
12
+ const currentStep = ref(0)
13
+
14
+ const StepComponent = {
15
+ setup(props: any, { expose }: any) {
16
+ const getConfig = () => {
17
+ return {
18
+ isStep: true,
19
+ steps: ['基本信息', '详细信息', '确认提交'],
20
+ }
21
+ }
22
+
23
+ const validateSteps = (stepActive: number) => {
24
+ console.log('校验步骤:', stepActive)
25
+ if (stepActive === 0 && !confirm('是否继续下一步?')) {
26
+ return Promise.resolve(false)
27
+ }
28
+ currentStep.value = stepActive
29
+ return Promise.resolve(true)
30
+ }
31
+
32
+ expose({ getConfig, validateSteps })
33
+
34
+ return () =>
35
+ h('div', { style: 'padding: 16px' }, [
36
+ h('h3', `当前步骤: ${currentStep.value + 1}`),
37
+ h('p', '步骤条示例'),
38
+ ])
39
+ },
40
+ }
41
+
42
+ const openStepLayer = () => {
43
+ currentStep.value = 0
44
+ layerRef.value.open({
45
+ title: '步骤弹窗',
46
+ name: StepComponent,
47
+ type: 'modal',
48
+ width: 700,
49
+ height: 400,
50
+ })
51
+ }
52
+ </script>
@@ -1,40 +1,40 @@
1
- <template>
2
- <div>
3
- <j-button label="打开抽屉" style="margin-right: 8px" @click="openDrawer" />
4
- <j-button label="打开全屏" @click="openFull" />
5
- <j-dynamic-layer ref="layerRef" />
6
- </div>
7
- </template>
8
-
9
- <script setup lang="ts">
10
- import { ref, h } from 'vue'
11
-
12
- const layerRef = ref()
13
-
14
- const ContentComponent = {
15
- setup() {
16
- return () =>
17
- h('div', { style: 'padding: 16px' }, [
18
- h('h3', '不同类型的弹层'),
19
- h('p', '支持 modal、drawer、full 三种类型'),
20
- ])
21
- },
22
- }
23
-
24
- const openDrawer = () => {
25
- layerRef.value.open({
26
- title: '抽屉模式',
27
- name: ContentComponent,
28
- type: 'drawer',
29
- width: 600,
30
- })
31
- }
32
-
33
- const openFull = () => {
34
- layerRef.value.open({
35
- title: '全屏模式',
36
- name: ContentComponent,
37
- type: 'full',
38
- })
39
- }
40
- </script>
1
+ <template>
2
+ <div>
3
+ <j-button label="打开抽屉" style="margin-right: 8px" @click="openDrawer" />
4
+ <j-button label="打开全屏" @click="openFull" />
5
+ <j-dynamic-layer ref="layerRef" />
6
+ </div>
7
+ </template>
8
+
9
+ <script setup lang="ts">
10
+ import { ref, h } from 'vue'
11
+
12
+ const layerRef = ref()
13
+
14
+ const ContentComponent = {
15
+ setup() {
16
+ return () =>
17
+ h('div', { style: 'padding: 16px' }, [
18
+ h('h3', '不同类型的弹层'),
19
+ h('p', '支持 modal、drawer、full 三种类型'),
20
+ ])
21
+ },
22
+ }
23
+
24
+ const openDrawer = () => {
25
+ layerRef.value.open({
26
+ title: '抽屉模式',
27
+ name: ContentComponent,
28
+ type: 'drawer',
29
+ width: 600,
30
+ })
31
+ }
32
+
33
+ const openFull = () => {
34
+ layerRef.value.open({
35
+ title: '全屏模式',
36
+ name: ContentComponent,
37
+ type: 'full',
38
+ })
39
+ }
40
+ </script>
@@ -1,31 +1,31 @@
1
- <template>
2
- <div style="width: 100%; height: 400px">
3
- <j-echarts :option="option" @click="handleClick" />
4
- </div>
5
- </template>
6
-
7
- <script lang="ts" setup>
8
- import { ref } from 'vue'
9
-
10
- const option = ref({
11
- title: {
12
- text: 'ECharts 基础示例',
13
- },
14
- tooltip: {},
15
- xAxis: {
16
- data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子'],
17
- },
18
- yAxis: {},
19
- series: [
20
- {
21
- name: '销量',
22
- type: 'bar',
23
- data: [5, 20, 36, 10, 10, 20],
24
- },
25
- ],
26
- })
27
-
28
- const handleClick = (params: any) => {
29
- console.log('点击了图表', params)
30
- }
31
- </script>
1
+ <template>
2
+ <div style="width: 100%; height: 400px">
3
+ <j-echarts :option="option" @click="handleClick" />
4
+ </div>
5
+ </template>
6
+
7
+ <script lang="ts" setup>
8
+ import { ref } from 'vue'
9
+
10
+ const option = ref({
11
+ title: {
12
+ text: 'ECharts 基础示例',
13
+ },
14
+ tooltip: {},
15
+ xAxis: {
16
+ data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子'],
17
+ },
18
+ yAxis: {},
19
+ series: [
20
+ {
21
+ name: '销量',
22
+ type: 'bar',
23
+ data: [5, 20, 36, 10, 10, 20],
24
+ },
25
+ ],
26
+ })
27
+
28
+ const handleClick = (params: any) => {
29
+ console.log('点击了图表', params)
30
+ }
31
+ </script>
@@ -1,43 +1,43 @@
1
- <template>
2
- <div>
3
- <j-button label="更新数据" style="margin-bottom: 16px" @click="updateData" />
4
- <div style="width: 100%; height: 400px">
5
- <j-echarts :option="option" />
6
- </div>
7
- </div>
8
- </template>
9
-
10
- <script lang="ts" setup>
11
- import { ref } from 'vue'
12
-
13
- const option = ref({
14
- title: {
15
- text: '动态数据更新',
16
- },
17
- tooltip: {},
18
- xAxis: {
19
- data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子'],
20
- },
21
- yAxis: {},
22
- series: [
23
- {
24
- name: '销量',
25
- type: 'bar',
26
- data: [5, 20, 36, 10, 10, 20],
27
- },
28
- ],
29
- })
30
-
31
- const updateData = () => {
32
- option.value = {
33
- ...option.value,
34
- series: [
35
- {
36
- name: '销量',
37
- type: 'bar',
38
- data: option.value.series[0].data.map(() => Math.floor(Math.random() * 100)),
39
- },
40
- ],
41
- }
42
- }
43
- </script>
1
+ <template>
2
+ <div>
3
+ <j-button label="更新数据" style="margin-bottom: 16px" @click="updateData" />
4
+ <div style="width: 100%; height: 400px">
5
+ <j-echarts :option="option" />
6
+ </div>
7
+ </div>
8
+ </template>
9
+
10
+ <script lang="ts" setup>
11
+ import { ref } from 'vue'
12
+
13
+ const option = ref({
14
+ title: {
15
+ text: '动态数据更新',
16
+ },
17
+ tooltip: {},
18
+ xAxis: {
19
+ data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子'],
20
+ },
21
+ yAxis: {},
22
+ series: [
23
+ {
24
+ name: '销量',
25
+ type: 'bar',
26
+ data: [5, 20, 36, 10, 10, 20],
27
+ },
28
+ ],
29
+ })
30
+
31
+ const updateData = () => {
32
+ option.value = {
33
+ ...option.value,
34
+ series: [
35
+ {
36
+ name: '销量',
37
+ type: 'bar',
38
+ data: option.value.series[0].data.map(() => Math.floor(Math.random() * 100)),
39
+ },
40
+ ],
41
+ }
42
+ }
43
+ </script>