@a2simcode/ui 0.0.145 → 0.0.146

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 (338) 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 +12 -9
  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 +57 -57
  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 +171 -171
  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-layer.ts +366 -366
  55. package/docs/components/meta/input-rows.ts +113 -113
  56. package/docs/components/meta/layer-form.ts +56 -56
  57. package/docs/components/meta/map.ts +68 -68
  58. package/docs/components/meta/panel.ts +152 -152
  59. package/docs/components/meta/slider.ts +270 -270
  60. package/docs/components/meta/table-panel.ts +232 -232
  61. package/docs/components/meta/table.ts +391 -391
  62. package/docs/components/meta/tabs.ts +146 -146
  63. package/docs/components/meta/title.ts +91 -91
  64. package/docs/components/meta/tree-select.ts +199 -199
  65. package/docs/components/meta/vpanel.ts +19 -19
  66. package/docs/components/meta/workflow-viewer.ts +55 -55
  67. package/docs/components/number.md +124 -124
  68. package/docs/components/page.md +102 -102
  69. package/docs/components/panel.md +37 -37
  70. package/docs/components/radio.md +87 -87
  71. package/docs/components/rate.md +71 -71
  72. package/docs/components/select.md +133 -133
  73. package/docs/components/slider-captcha.md +41 -41
  74. package/docs/components/slider.md +101 -101
  75. package/docs/components/switch.md +90 -90
  76. package/docs/components/table-panel.md +236 -236
  77. package/docs/components/table.md +391 -391
  78. package/docs/components/tabs.md +26 -26
  79. package/docs/components/title.md +24 -24
  80. package/docs/components/tree.md +207 -207
  81. package/docs/components/upload.md +117 -117
  82. package/docs/components/workflow-viewer.md +21 -21
  83. package/docs/components/workflow.md +21 -21
  84. package/docs/examples/autocomplete/advanced.vue +35 -35
  85. package/docs/examples/autocomplete/basic.vue +32 -32
  86. package/docs/examples/autocomplete/clearable.vue +33 -33
  87. package/docs/examples/autocomplete/custom-template.vue +49 -49
  88. package/docs/examples/autocomplete/disabled.vue +33 -33
  89. package/docs/examples/autocomplete/icon.vue +37 -37
  90. package/docs/examples/barcode/all-types.vue +380 -380
  91. package/docs/examples/barcode/basic.vue +14 -14
  92. package/docs/examples/barcode/props-appearance.vue +243 -243
  93. package/docs/examples/barcode/props-geometry.vue +143 -143
  94. package/docs/examples/barcode/props-logic.vue +216 -216
  95. package/docs/examples/barcode/props-symbology.vue +199 -199
  96. package/docs/examples/barcode/props-text.vue +268 -268
  97. package/docs/examples/button/basic.vue +7 -7
  98. package/docs/examples/button/danger-ghost.vue +17 -17
  99. package/docs/examples/button/disabled.vue +10 -10
  100. package/docs/examples/button/loading.vue +6 -6
  101. package/docs/examples/button/shape.vue +7 -7
  102. package/docs/examples/button/size.vue +14 -14
  103. package/docs/examples/button/type.vue +9 -9
  104. package/docs/examples/button-select/basic.vue +19 -19
  105. package/docs/examples/buttons/basic.vue +45 -45
  106. package/docs/examples/buttons/disabled.vue +36 -36
  107. package/docs/examples/buttons/dropdown.vue +63 -63
  108. package/docs/examples/buttons/group.vue +52 -52
  109. package/docs/examples/buttons/link.vue +47 -47
  110. package/docs/examples/buttons/popup.vue +39 -39
  111. package/docs/examples/buttons/size.vue +45 -45
  112. package/docs/examples/cascader-select/basic.vue +28 -28
  113. package/docs/examples/cascader-select/clearable.vue +34 -34
  114. package/docs/examples/cascader-select/disabled.vue +43 -43
  115. package/docs/examples/cascader-select/filterable.vue +37 -37
  116. package/docs/examples/cascader-select/methods.vue +84 -84
  117. package/docs/examples/cascader-select/multiple.vue +38 -38
  118. package/docs/examples/cascader-select/slot.vue +45 -45
  119. package/docs/examples/checkbox/basic.vue +18 -18
  120. package/docs/examples/checkbox/button.vue +19 -19
  121. package/docs/examples/checkbox/color.vue +25 -25
  122. package/docs/examples/checkbox/disabled.vue +17 -17
  123. package/docs/examples/checkbox/min-max.vue +20 -20
  124. package/docs/examples/checkbox/mixed.vue +56 -56
  125. package/docs/examples/checkbox/size.vue +28 -28
  126. package/docs/examples/code-mirror/basic.vue +11 -11
  127. package/docs/examples/code-mirror/events.vue +42 -42
  128. package/docs/examples/code-mirror/height.vue +25 -25
  129. package/docs/examples/code-mirror/mode.vue +33 -33
  130. package/docs/examples/code-mirror/readonly.vue +14 -14
  131. package/docs/examples/collapse/basic.vue +82 -82
  132. package/docs/examples/comp/basic.vue +7 -7
  133. package/docs/examples/comp/collapse.vue +38 -38
  134. package/docs/examples/comp/tabs.vue +38 -38
  135. package/docs/examples/count/basic.vue +101 -101
  136. package/docs/examples/count-up/basic.vue +89 -89
  137. package/docs/examples/data-panel/basic.vue +110 -110
  138. package/docs/examples/date/basic.vue +73 -73
  139. package/docs/examples/date/default-value.vue +59 -59
  140. package/docs/examples/date/format.vue +75 -75
  141. package/docs/examples/date/range.vue +66 -66
  142. package/docs/examples/date/types.vue +79 -79
  143. package/docs/examples/decorated-title/basic.vue +31 -31
  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 +539 -539
  173. package/docs/examples/form/init.vue +76 -76
  174. package/docs/examples/form/master-detail.vue +203 -203
  175. package/docs/examples/guid/basic.vue +10 -10
  176. package/docs/examples/guid/size.vue +13 -13
  177. package/docs/examples/hpanel/basic.vue +79 -79
  178. package/docs/examples/icon/basic.vue +9 -9
  179. package/docs/examples/icon/rotate-flip.vue +9 -9
  180. package/docs/examples/icon/size.vue +7 -7
  181. package/docs/examples/input/basic.vue +10 -10
  182. package/docs/examples/input/clearable.vue +12 -12
  183. package/docs/examples/input/disabled.vue +6 -6
  184. package/docs/examples/input/icon.vue +23 -23
  185. package/docs/examples/input/password.vue +18 -18
  186. package/docs/examples/input/size.vue +13 -13
  187. package/docs/examples/input/textarea.vue +25 -25
  188. package/docs/examples/input/word-limit.vue +28 -28
  189. package/docs/examples/input-button/basic.vue +33 -33
  190. package/docs/examples/input-code/basic.vue +29 -29
  191. package/docs/examples/input-color/basic.vue +10 -10
  192. package/docs/examples/input-color/disabled.vue +13 -13
  193. package/docs/examples/input-color/format.vue +17 -17
  194. package/docs/examples/input-color/no-alpha.vue +13 -13
  195. package/docs/examples/input-color/only-button.vue +15 -15
  196. package/docs/examples/input-color/predefine.vue +31 -31
  197. package/docs/examples/input-color/size.vue +15 -15
  198. package/docs/examples/input-layer/basic.vue +86 -86
  199. package/docs/examples/input-rows/basic.vue +73 -73
  200. package/docs/examples/input-rows/drag.vue +48 -48
  201. package/docs/examples/input-rows/layer-form.vue +85 -85
  202. package/docs/examples/input-rows/nested.vue +91 -91
  203. package/docs/examples/input-tag/basic.vue +27 -27
  204. package/docs/examples/input-tag/colors.vue +23 -23
  205. package/docs/examples/input-tag/readonly.vue +17 -17
  206. package/docs/examples/layer/basic.vue +43 -43
  207. package/docs/examples/layer/custom-buttons.vue +61 -61
  208. package/docs/examples/layer/drawer.vue +37 -37
  209. package/docs/examples/layer/full.vue +38 -38
  210. package/docs/examples/layer/modal.vue +34 -34
  211. package/docs/examples/layer/steps.vue +46 -46
  212. package/docs/examples/layer-form/basic.vue +76 -76
  213. package/docs/examples/layer-form/config.vue +82 -82
  214. package/docs/examples/layer-form/size.vue +72 -72
  215. package/docs/examples/layout/basic.vue +36 -36
  216. package/docs/examples/layout/custom-size.vue +50 -50
  217. package/docs/examples/layout/disable-move.vue +37 -37
  218. package/docs/examples/layout/hide-mid-when-narrow.vue +96 -96
  219. package/docs/examples/layout/min-size.vue +73 -73
  220. package/docs/examples/layout/percent-size.vue +80 -80
  221. package/docs/examples/layout/simple.vue +22 -22
  222. package/docs/examples/layout/top-side.vue +34 -34
  223. package/docs/examples/map/basic.vue +22 -22
  224. package/docs/examples/menu/basic.vue +58 -58
  225. package/docs/examples/menu/collapsed.vue +49 -49
  226. package/docs/examples/menu/horizontal.vue +44 -44
  227. package/docs/examples/menu/selection-test.vue +104 -104
  228. package/docs/examples/menu/theme.vue +46 -46
  229. package/docs/examples/menu/vertical.vue +46 -46
  230. package/docs/examples/number/advanced.vue +143 -143
  231. package/docs/examples/number/basic.vue +63 -63
  232. package/docs/examples/number/disabled.vue +49 -49
  233. package/docs/examples/number/size.vue +42 -42
  234. package/docs/examples/number/slots.vue +123 -123
  235. package/docs/examples/number/step-strictly.vue +41 -41
  236. package/docs/examples/number/step.vue +47 -47
  237. package/docs/examples/page/basic.vue +41 -41
  238. package/docs/examples/page/code-table-model.vue +428 -428
  239. package/docs/examples/page/dept-user-management.vue +211 -211
  240. package/docs/examples/page/init.vue +87 -87
  241. package/docs/examples/page/log.vue +453 -453
  242. package/docs/examples/page/user-management.vue +313 -313
  243. package/docs/examples/panel/tool-buttons.vue +18 -18
  244. package/docs/examples/radio/basic.vue +17 -17
  245. package/docs/examples/radio/button.vue +17 -17
  246. package/docs/examples/radio/color.vue +18 -18
  247. package/docs/examples/radio/disabled.vue +17 -17
  248. package/docs/examples/radio/size.vue +29 -29
  249. package/docs/examples/rate/basic.vue +24 -24
  250. package/docs/examples/rate/half.vue +24 -24
  251. package/docs/examples/rate/readonly.vue +11 -11
  252. package/docs/examples/rate/text.vue +37 -37
  253. package/docs/examples/select/basic.vue +16 -16
  254. package/docs/examples/select/clearable.vue +22 -22
  255. package/docs/examples/select/disabled.vue +31 -31
  256. package/docs/examples/select/filterable.vue +24 -24
  257. package/docs/examples/select/group.vue +23 -23
  258. package/docs/examples/select/icon.vue +16 -16
  259. package/docs/examples/select/multiple.vue +18 -18
  260. package/docs/examples/select/size.vue +39 -39
  261. package/docs/examples/slider/basic.vue +42 -42
  262. package/docs/examples/slider/disabled.vue +17 -17
  263. package/docs/examples/slider/marks.vue +30 -30
  264. package/docs/examples/slider/size.vue +37 -37
  265. package/docs/examples/slider/tooltip.vue +36 -36
  266. package/docs/examples/slider/vertical.vue +26 -26
  267. package/docs/examples/slider-captcha/basic.vue +44 -44
  268. package/docs/examples/slider-captcha/custom.vue +48 -48
  269. package/docs/examples/switch/basic.vue +16 -16
  270. package/docs/examples/switch/disabled.vue +13 -13
  271. package/docs/examples/switch/loading.vue +13 -13
  272. package/docs/examples/switch/size.vue +15 -15
  273. package/docs/examples/switch/text.vue +13 -13
  274. package/docs/examples/table/action-filter.vue +126 -126
  275. package/docs/examples/table/actions.vue +116 -116
  276. package/docs/examples/table/add-row.vue +103 -103
  277. package/docs/examples/table/basic.vue +168 -168
  278. package/docs/examples/table/checkbox-layout.vue +68 -68
  279. package/docs/examples/table/custom-layout.vue +115 -115
  280. package/docs/examples/table/dynamic-type.vue +73 -73
  281. package/docs/examples/table/editable.vue +262 -262
  282. package/docs/examples/table/field-selection.vue +87 -87
  283. package/docs/examples/table/frozen-column.vue +140 -140
  284. package/docs/examples/table/height-mode.vue +99 -99
  285. package/docs/examples/table/icon.vue +85 -85
  286. package/docs/examples/table/link.vue +66 -66
  287. package/docs/examples/table/multiple.vue +188 -188
  288. package/docs/examples/table/pagination.vue +151 -151
  289. package/docs/examples/table/single-selection.vue +64 -64
  290. package/docs/examples/table/sub-table-lazy.vue +97 -97
  291. package/docs/examples/table/sub-table.vue +103 -103
  292. package/docs/examples/table/tag.vue +43 -43
  293. package/docs/examples/table/tree-column.vue +119 -119
  294. package/docs/examples/table/tree-data.vue +141 -141
  295. package/docs/examples/table/tree-default-expand-all.vue +60 -60
  296. package/docs/examples/table/tree-lazy.vue +80 -80
  297. package/docs/examples/table/tree-set-selection.vue +75 -75
  298. package/docs/examples/table-panel/basic.vue +229 -229
  299. package/docs/examples/table-panel/batch-operations.vue +285 -285
  300. package/docs/examples/table-panel/button-visibility.vue +88 -88
  301. package/docs/examples/table-panel/filter.vue +219 -219
  302. package/docs/examples/table-panel/get-selection.vue +111 -111
  303. package/docs/examples/table-panel/multiple-selection.vue +243 -243
  304. package/docs/examples/table-panel/pagination.vue +133 -133
  305. package/docs/examples/table-panel/sub-table-lazy.vue +118 -118
  306. package/docs/examples/table-panel/tree-parent-key.vue +67 -67
  307. package/docs/examples/tabs/basic.vue +98 -98
  308. package/docs/examples/time/base.vue +67 -67
  309. package/docs/examples/title/basic.vue +87 -87
  310. package/docs/examples/tree/accordion.vue +46 -46
  311. package/docs/examples/tree/basic.vue +50 -50
  312. package/docs/examples/tree/buttons.vue +53 -53
  313. package/docs/examples/tree/checkable.vue +52 -52
  314. package/docs/examples/tree/custom-keys.vue +39 -39
  315. package/docs/examples/tree/default-expanded.vue +52 -52
  316. package/docs/examples/tree/draggable.vue +29 -29
  317. package/docs/examples/tree/expand-on-click.vue +39 -39
  318. package/docs/examples/tree/flat-data.vue +20 -20
  319. package/docs/examples/tree/icon.vue +40 -40
  320. package/docs/examples/tree/load-data.vue +37 -37
  321. package/docs/examples/tree/methods.vue +74 -74
  322. package/docs/examples/tree/theme.vue +33 -33
  323. package/docs/examples/tree-select/basic.vue +47 -47
  324. package/docs/examples/upload/accept.vue +31 -31
  325. package/docs/examples/upload/basic.vue +12 -12
  326. package/docs/examples/upload/drag.vue +11 -11
  327. package/docs/examples/upload/image.vue +17 -17
  328. package/docs/examples/upload/limit.vue +20 -20
  329. package/docs/examples/upload/multiple.vue +17 -17
  330. package/docs/examples/upload/readonly.vue +17 -17
  331. package/docs/examples/utils/cipher.vue +160 -160
  332. package/docs/examples/utils/common.vue +153 -153
  333. package/docs/examples/utils/date.vue +56 -56
  334. package/docs/examples/utils/dom.vue +52 -52
  335. package/docs/examples/utils/is.vue +70 -70
  336. package/docs/examples/workflow/basic.vue +265 -265
  337. package/docs/examples/workflow-viewer/basic.vue +248 -248
  338. package/package.json +23 -23
@@ -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>