@a2simcode/ui 0.0.132 → 0.0.133

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 (346) 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/index.d.ts +4 -1
  6. package/dist/components/input-map/index.d.ts +101 -0
  7. package/dist/components/input-map/src/input-map.vue.d.ts +86 -0
  8. package/dist/components/vpanel/index.d.ts +22 -0
  9. package/dist/components/vpanel/src/vpanel.vue.d.ts +19 -0
  10. package/dist/simcode-ui.es.js +3423 -3251
  11. package/dist/simcode-ui.umd.js +2 -2
  12. package/dist/stats.html +1 -1
  13. package/dist/ui.css +1 -1
  14. package/docs/components/autocomplete.md +89 -89
  15. package/docs/components/barcode.md +101 -101
  16. package/docs/components/button-select.md +24 -24
  17. package/docs/components/button.md +117 -117
  18. package/docs/components/buttons.md +119 -119
  19. package/docs/components/cascader-select.md +114 -114
  20. package/docs/components/checkbox.md +114 -114
  21. package/docs/components/code-mirror.md +85 -85
  22. package/docs/components/collapse.md +26 -26
  23. package/docs/components/comp.md +71 -71
  24. package/docs/components/count-up.md +24 -24
  25. package/docs/components/count.md +24 -24
  26. package/docs/components/data-panel.md +24 -24
  27. package/docs/components/date.md +76 -76
  28. package/docs/components/dialog-full.md +112 -112
  29. package/docs/components/dialog.md +127 -127
  30. package/docs/components/divider.md +24 -24
  31. package/docs/components/drawer.md +127 -127
  32. package/docs/components/dynamic-layer.md +118 -118
  33. package/docs/components/echarts.md +72 -72
  34. package/docs/components/editor.md +24 -24
  35. package/docs/components/form.md +42 -42
  36. package/docs/components/guid.md +39 -39
  37. package/docs/components/hpanel.md +24 -24
  38. package/docs/components/icon.md +56 -56
  39. package/docs/components/input-button.md +24 -24
  40. package/docs/components/input-code.md +24 -24
  41. package/docs/components/input-color.md +114 -114
  42. package/docs/components/input-layer.md +26 -26
  43. package/docs/components/input-map.md +24 -0
  44. package/docs/components/input-rows.md +370 -370
  45. package/docs/components/input-tag.md +50 -50
  46. package/docs/components/input.md +129 -129
  47. package/docs/components/layer-form.md +61 -61
  48. package/docs/components/layer.md +127 -127
  49. package/docs/components/layout.md +132 -132
  50. package/docs/components/map.md +24 -24
  51. package/docs/components/menu.md +121 -121
  52. package/docs/components/meta/buttons.ts +76 -76
  53. package/docs/components/meta/comp.ts +236 -236
  54. package/docs/components/meta/date.ts +267 -267
  55. package/docs/components/meta/echarts.ts +64 -64
  56. package/docs/components/meta/form-item.ts +50 -50
  57. package/docs/components/meta/form.ts +165 -165
  58. package/docs/components/meta/input-cards.ts +112 -112
  59. package/docs/components/meta/input-color.ts +243 -243
  60. package/docs/components/meta/input-layer.ts +366 -366
  61. package/docs/components/meta/input-map.ts +32 -0
  62. package/docs/components/meta/input-rows.ts +113 -113
  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/slider.ts +270 -270
  67. package/docs/components/meta/table-panel.ts +232 -232
  68. package/docs/components/meta/table.ts +391 -391
  69. package/docs/components/meta/tabs.ts +146 -146
  70. package/docs/components/meta/title.ts +91 -91
  71. package/docs/components/meta/tree-select.ts +199 -199
  72. package/docs/components/meta/vpanel.ts +20 -0
  73. package/docs/components/meta/workflow-viewer.ts +55 -55
  74. package/docs/components/number.md +124 -124
  75. package/docs/components/page.md +87 -87
  76. package/docs/components/panel.md +37 -37
  77. package/docs/components/radio.md +87 -87
  78. package/docs/components/rate.md +71 -71
  79. package/docs/components/select.md +133 -133
  80. package/docs/components/slider-captcha.md +41 -41
  81. package/docs/components/slider.md +101 -101
  82. package/docs/components/switch.md +90 -90
  83. package/docs/components/table-panel.md +236 -236
  84. package/docs/components/table.md +391 -391
  85. package/docs/components/tabs.md +26 -26
  86. package/docs/components/title.md +24 -24
  87. package/docs/components/tree.md +207 -207
  88. package/docs/components/upload.md +117 -117
  89. package/docs/components/vpanel.md +25 -0
  90. package/docs/components/workflow-viewer.md +21 -21
  91. package/docs/components/workflow.md +21 -21
  92. package/docs/examples/autocomplete/advanced.vue +35 -35
  93. package/docs/examples/autocomplete/basic.vue +32 -32
  94. package/docs/examples/autocomplete/clearable.vue +33 -33
  95. package/docs/examples/autocomplete/custom-template.vue +49 -49
  96. package/docs/examples/autocomplete/disabled.vue +33 -33
  97. package/docs/examples/autocomplete/icon.vue +37 -37
  98. package/docs/examples/barcode/all-types.vue +380 -380
  99. package/docs/examples/barcode/basic.vue +14 -14
  100. package/docs/examples/barcode/props-appearance.vue +243 -243
  101. package/docs/examples/barcode/props-geometry.vue +143 -143
  102. package/docs/examples/barcode/props-logic.vue +216 -216
  103. package/docs/examples/barcode/props-symbology.vue +199 -199
  104. package/docs/examples/barcode/props-text.vue +268 -268
  105. package/docs/examples/button/basic.vue +7 -7
  106. package/docs/examples/button/danger-ghost.vue +17 -17
  107. package/docs/examples/button/disabled.vue +10 -10
  108. package/docs/examples/button/loading.vue +6 -6
  109. package/docs/examples/button/shape.vue +7 -7
  110. package/docs/examples/button/size.vue +14 -14
  111. package/docs/examples/button/type.vue +9 -9
  112. package/docs/examples/button-select/basic.vue +19 -19
  113. package/docs/examples/buttons/basic.vue +45 -45
  114. package/docs/examples/buttons/disabled.vue +36 -36
  115. package/docs/examples/buttons/dropdown.vue +63 -63
  116. package/docs/examples/buttons/group.vue +52 -52
  117. package/docs/examples/buttons/link.vue +47 -47
  118. package/docs/examples/buttons/popup.vue +39 -39
  119. package/docs/examples/buttons/size.vue +45 -45
  120. package/docs/examples/cascader-select/basic.vue +28 -28
  121. package/docs/examples/cascader-select/clearable.vue +34 -34
  122. package/docs/examples/cascader-select/disabled.vue +43 -43
  123. package/docs/examples/cascader-select/filterable.vue +37 -37
  124. package/docs/examples/cascader-select/methods.vue +84 -84
  125. package/docs/examples/cascader-select/multiple.vue +38 -38
  126. package/docs/examples/cascader-select/slot.vue +45 -45
  127. package/docs/examples/checkbox/basic.vue +18 -18
  128. package/docs/examples/checkbox/button.vue +19 -19
  129. package/docs/examples/checkbox/color.vue +25 -25
  130. package/docs/examples/checkbox/disabled.vue +17 -17
  131. package/docs/examples/checkbox/min-max.vue +20 -20
  132. package/docs/examples/checkbox/mixed.vue +56 -56
  133. package/docs/examples/checkbox/size.vue +28 -28
  134. package/docs/examples/code-mirror/basic.vue +11 -11
  135. package/docs/examples/code-mirror/events.vue +42 -42
  136. package/docs/examples/code-mirror/height.vue +25 -25
  137. package/docs/examples/code-mirror/mode.vue +33 -33
  138. package/docs/examples/code-mirror/readonly.vue +14 -14
  139. package/docs/examples/collapse/basic.vue +82 -82
  140. package/docs/examples/comp/basic.vue +7 -7
  141. package/docs/examples/comp/collapse.vue +38 -38
  142. package/docs/examples/comp/tabs.vue +38 -38
  143. package/docs/examples/count/basic.vue +101 -101
  144. package/docs/examples/count-up/basic.vue +89 -89
  145. package/docs/examples/data-panel/basic.vue +110 -110
  146. package/docs/examples/date/basic.vue +73 -73
  147. package/docs/examples/date/default-value.vue +59 -59
  148. package/docs/examples/date/format.vue +75 -75
  149. package/docs/examples/date/range.vue +66 -66
  150. package/docs/examples/date/types.vue +79 -79
  151. package/docs/examples/decorated-title/basic.vue +31 -31
  152. package/docs/examples/dialog/basic.vue +36 -36
  153. package/docs/examples/dialog/custom-buttons.vue +44 -44
  154. package/docs/examples/dialog/fullscreen.vue +23 -23
  155. package/docs/examples/dialog/no-mask.vue +17 -17
  156. package/docs/examples/dialog/size.vue +44 -44
  157. package/docs/examples/dialog/steps.vue +57 -57
  158. package/docs/examples/dialog-full/basic.vue +29 -29
  159. package/docs/examples/dialog-full/custom-buttons.vue +45 -45
  160. package/docs/examples/dialog-full/no-buttons.vue +18 -18
  161. package/docs/examples/dialog-full/no-header.vue +27 -27
  162. package/docs/examples/dialog-full/steps.vue +71 -71
  163. package/docs/examples/divider/basic.vue +52 -52
  164. package/docs/examples/drawer/basic.vue +35 -35
  165. package/docs/examples/drawer/custom-buttons.vue +34 -34
  166. package/docs/examples/drawer/direction.vue +47 -47
  167. package/docs/examples/drawer/mask.vue +36 -36
  168. package/docs/examples/drawer/no-buttons.vue +20 -20
  169. package/docs/examples/drawer/size.vue +28 -28
  170. package/docs/examples/dynamic-layer/basic.vue +33 -33
  171. package/docs/examples/dynamic-layer/custom-buttons.vue +43 -43
  172. package/docs/examples/dynamic-layer/form.vue +73 -73
  173. package/docs/examples/dynamic-layer/steps.vue +52 -52
  174. package/docs/examples/dynamic-layer/types.vue +40 -40
  175. package/docs/examples/echarts/basic.vue +31 -31
  176. package/docs/examples/echarts/dynamic.vue +43 -43
  177. package/docs/examples/echarts/line.vue +46 -46
  178. package/docs/examples/echarts/pie.vue +44 -44
  179. package/docs/examples/editor/basic.vue +15 -15
  180. package/docs/examples/form/basic.vue +539 -539
  181. package/docs/examples/form/init.vue +76 -76
  182. package/docs/examples/guid/basic.vue +10 -10
  183. package/docs/examples/guid/size.vue +13 -13
  184. package/docs/examples/hpanel/basic.vue +79 -79
  185. package/docs/examples/icon/basic.vue +9 -9
  186. package/docs/examples/icon/rotate-flip.vue +9 -9
  187. package/docs/examples/icon/size.vue +7 -7
  188. package/docs/examples/input/basic.vue +10 -10
  189. package/docs/examples/input/clearable.vue +12 -12
  190. package/docs/examples/input/disabled.vue +6 -6
  191. package/docs/examples/input/icon.vue +23 -23
  192. package/docs/examples/input/password.vue +18 -18
  193. package/docs/examples/input/size.vue +13 -13
  194. package/docs/examples/input/textarea.vue +25 -25
  195. package/docs/examples/input/word-limit.vue +28 -28
  196. package/docs/examples/input-button/basic.vue +33 -33
  197. package/docs/examples/input-code/basic.vue +29 -29
  198. package/docs/examples/input-color/basic.vue +10 -10
  199. package/docs/examples/input-color/disabled.vue +13 -13
  200. package/docs/examples/input-color/format.vue +17 -17
  201. package/docs/examples/input-color/no-alpha.vue +13 -13
  202. package/docs/examples/input-color/only-button.vue +15 -15
  203. package/docs/examples/input-color/predefine.vue +31 -31
  204. package/docs/examples/input-color/size.vue +15 -15
  205. package/docs/examples/input-layer/basic.vue +86 -86
  206. package/docs/examples/input-map/basic.vue +18 -0
  207. package/docs/examples/input-rows/basic.vue +73 -73
  208. package/docs/examples/input-rows/drag.vue +48 -48
  209. package/docs/examples/input-rows/layer-form.vue +85 -85
  210. package/docs/examples/input-rows/nested.vue +91 -91
  211. package/docs/examples/input-tag/basic.vue +27 -27
  212. package/docs/examples/input-tag/colors.vue +23 -23
  213. package/docs/examples/input-tag/readonly.vue +17 -17
  214. package/docs/examples/layer/basic.vue +43 -43
  215. package/docs/examples/layer/custom-buttons.vue +61 -61
  216. package/docs/examples/layer/drawer.vue +37 -37
  217. package/docs/examples/layer/full.vue +38 -38
  218. package/docs/examples/layer/modal.vue +34 -34
  219. package/docs/examples/layer/steps.vue +46 -46
  220. package/docs/examples/layer-form/basic.vue +76 -76
  221. package/docs/examples/layer-form/config.vue +82 -82
  222. package/docs/examples/layer-form/size.vue +72 -72
  223. package/docs/examples/layout/basic.vue +36 -36
  224. package/docs/examples/layout/custom-size.vue +50 -50
  225. package/docs/examples/layout/disable-move.vue +37 -37
  226. package/docs/examples/layout/hide-mid-when-narrow.vue +96 -96
  227. package/docs/examples/layout/min-size.vue +73 -73
  228. package/docs/examples/layout/percent-size.vue +80 -80
  229. package/docs/examples/layout/simple.vue +22 -22
  230. package/docs/examples/layout/top-side.vue +34 -34
  231. package/docs/examples/map/basic.vue +22 -22
  232. package/docs/examples/menu/basic.vue +58 -58
  233. package/docs/examples/menu/collapsed.vue +49 -49
  234. package/docs/examples/menu/horizontal.vue +44 -44
  235. package/docs/examples/menu/selection-test.vue +104 -104
  236. package/docs/examples/menu/theme.vue +46 -46
  237. package/docs/examples/menu/vertical.vue +46 -46
  238. package/docs/examples/number/advanced.vue +143 -143
  239. package/docs/examples/number/basic.vue +63 -63
  240. package/docs/examples/number/disabled.vue +49 -49
  241. package/docs/examples/number/size.vue +42 -42
  242. package/docs/examples/number/slots.vue +123 -123
  243. package/docs/examples/number/step-strictly.vue +41 -41
  244. package/docs/examples/number/step.vue +47 -47
  245. package/docs/examples/page/basic.vue +41 -41
  246. package/docs/examples/page/dept-user-management.vue +211 -211
  247. package/docs/examples/page/init.vue +87 -87
  248. package/docs/examples/page/log.vue +453 -453
  249. package/docs/examples/page/user-management.vue +313 -313
  250. package/docs/examples/panel/tool-buttons.vue +18 -18
  251. package/docs/examples/radio/basic.vue +17 -17
  252. package/docs/examples/radio/button.vue +17 -17
  253. package/docs/examples/radio/color.vue +18 -18
  254. package/docs/examples/radio/disabled.vue +17 -17
  255. package/docs/examples/radio/size.vue +29 -29
  256. package/docs/examples/rate/basic.vue +24 -24
  257. package/docs/examples/rate/half.vue +24 -24
  258. package/docs/examples/rate/readonly.vue +11 -11
  259. package/docs/examples/rate/text.vue +37 -37
  260. package/docs/examples/select/basic.vue +16 -16
  261. package/docs/examples/select/clearable.vue +22 -22
  262. package/docs/examples/select/disabled.vue +31 -31
  263. package/docs/examples/select/filterable.vue +24 -24
  264. package/docs/examples/select/group.vue +23 -23
  265. package/docs/examples/select/icon.vue +16 -16
  266. package/docs/examples/select/multiple.vue +18 -18
  267. package/docs/examples/select/size.vue +39 -39
  268. package/docs/examples/slider/basic.vue +42 -42
  269. package/docs/examples/slider/disabled.vue +17 -17
  270. package/docs/examples/slider/marks.vue +30 -30
  271. package/docs/examples/slider/size.vue +37 -37
  272. package/docs/examples/slider/tooltip.vue +36 -36
  273. package/docs/examples/slider/vertical.vue +26 -26
  274. package/docs/examples/slider-captcha/basic.vue +44 -44
  275. package/docs/examples/slider-captcha/custom.vue +48 -48
  276. package/docs/examples/switch/basic.vue +16 -16
  277. package/docs/examples/switch/disabled.vue +13 -13
  278. package/docs/examples/switch/loading.vue +13 -13
  279. package/docs/examples/switch/size.vue +15 -15
  280. package/docs/examples/switch/text.vue +13 -13
  281. package/docs/examples/table/action-filter.vue +126 -126
  282. package/docs/examples/table/actions.vue +116 -116
  283. package/docs/examples/table/add-row.vue +103 -103
  284. package/docs/examples/table/basic.vue +168 -168
  285. package/docs/examples/table/checkbox-layout.vue +68 -68
  286. package/docs/examples/table/custom-layout.vue +115 -115
  287. package/docs/examples/table/dynamic-type.vue +73 -73
  288. package/docs/examples/table/editable.vue +262 -262
  289. package/docs/examples/table/field-selection.vue +87 -87
  290. package/docs/examples/table/frozen-column.vue +140 -140
  291. package/docs/examples/table/height-mode.vue +99 -99
  292. package/docs/examples/table/icon.vue +85 -85
  293. package/docs/examples/table/link.vue +66 -66
  294. package/docs/examples/table/multiple.vue +188 -188
  295. package/docs/examples/table/pagination.vue +151 -151
  296. package/docs/examples/table/single-selection.vue +64 -64
  297. package/docs/examples/table/sub-table-lazy.vue +97 -97
  298. package/docs/examples/table/sub-table.vue +103 -103
  299. package/docs/examples/table/tag.vue +43 -43
  300. package/docs/examples/table/tree-column.vue +119 -119
  301. package/docs/examples/table/tree-data.vue +141 -141
  302. package/docs/examples/table/tree-default-expand-all.vue +60 -60
  303. package/docs/examples/table/tree-lazy.vue +80 -80
  304. package/docs/examples/table/tree-set-selection.vue +75 -75
  305. package/docs/examples/table-panel/basic.vue +229 -229
  306. package/docs/examples/table-panel/batch-operations.vue +285 -285
  307. package/docs/examples/table-panel/button-visibility.vue +88 -88
  308. package/docs/examples/table-panel/filter.vue +219 -219
  309. package/docs/examples/table-panel/get-selection.vue +111 -111
  310. package/docs/examples/table-panel/multiple-selection.vue +243 -243
  311. package/docs/examples/table-panel/pagination.vue +133 -133
  312. package/docs/examples/table-panel/sub-table-lazy.vue +118 -118
  313. package/docs/examples/table-panel/tree-parent-key.vue +67 -67
  314. package/docs/examples/tabs/basic.vue +98 -98
  315. package/docs/examples/time/base.vue +67 -67
  316. package/docs/examples/title/basic.vue +87 -87
  317. package/docs/examples/tree/accordion.vue +46 -46
  318. package/docs/examples/tree/basic.vue +50 -50
  319. package/docs/examples/tree/buttons.vue +53 -53
  320. package/docs/examples/tree/checkable.vue +52 -52
  321. package/docs/examples/tree/custom-keys.vue +39 -39
  322. package/docs/examples/tree/default-expanded.vue +52 -52
  323. package/docs/examples/tree/draggable.vue +29 -29
  324. package/docs/examples/tree/expand-on-click.vue +39 -39
  325. package/docs/examples/tree/flat-data.vue +20 -20
  326. package/docs/examples/tree/icon.vue +40 -40
  327. package/docs/examples/tree/load-data.vue +37 -37
  328. package/docs/examples/tree/methods.vue +74 -74
  329. package/docs/examples/tree/theme.vue +33 -33
  330. package/docs/examples/tree-select/basic.vue +47 -47
  331. package/docs/examples/upload/accept.vue +31 -31
  332. package/docs/examples/upload/basic.vue +12 -12
  333. package/docs/examples/upload/drag.vue +11 -11
  334. package/docs/examples/upload/image.vue +17 -17
  335. package/docs/examples/upload/limit.vue +20 -20
  336. package/docs/examples/upload/multiple.vue +17 -17
  337. package/docs/examples/upload/readonly.vue +17 -17
  338. package/docs/examples/utils/cipher.vue +160 -160
  339. package/docs/examples/utils/common.vue +153 -153
  340. package/docs/examples/utils/date.vue +56 -56
  341. package/docs/examples/utils/dom.vue +52 -52
  342. package/docs/examples/utils/is.vue +70 -70
  343. package/docs/examples/vpanel/basic.vue +88 -0
  344. package/docs/examples/workflow/basic.vue +265 -265
  345. package/docs/examples/workflow-viewer/basic.vue +248 -248
  346. package/package.json +23 -23
@@ -1,85 +1,85 @@
1
- <template>
2
- <div style="position: relative; width: 100%; height: 300px">
3
- <j-table v-if="iconsReady" :columns="columns" :records="records" />
4
- </div>
5
- </template>
6
-
7
- <script setup lang="ts">
8
- import { getIcon, iconLoaded, loadIcon } from '@iconify/vue'
9
- import { onBeforeMount, ref } from 'vue'
10
-
11
- const iconsReady = ref(false)
12
-
13
- const browsers = [
14
- { name: 'Chrome', icon: 'logos:chrome' },
15
- { name: 'Firefox', icon: 'logos:firefox' },
16
- { name: 'Safari', icon: 'logos:safari' },
17
- { name: 'Edge', icon: 'logos:microsoft-edge' },
18
- ]
19
-
20
- const toSvg = (iconName: string) => {
21
- const iconData = getIcon(iconName)
22
- if (!iconData) return ''
23
- return `<svg viewBox="0 0 ${iconData.width} ${iconData.height}">${iconData.body}</svg>`
24
- }
25
-
26
- const records = ref<Record<string, any>[]>([])
27
-
28
- onBeforeMount(async () => {
29
- // @ts-ignore
30
- if (import.meta.env.SSR) {
31
- iconsReady.value = true
32
- return
33
- }
34
-
35
- const icons = browsers.map((item) => item.icon)
36
-
37
- await Promise.all(
38
- icons.map(async (icon) => {
39
- if (!iconLoaded(icon)) {
40
- await loadIcon(icon)
41
- }
42
- })
43
- )
44
-
45
- records.value = browsers.map((item) => {
46
- return {
47
- ...item,
48
- svg: toSvg(item.icon),
49
- }
50
- })
51
-
52
- iconsReady.value = true
53
- })
54
-
55
- const columns = ref([
56
- {
57
- id: 'name',
58
- config: {
59
- label: '浏览器',
60
- width: 150,
61
- align: 'left',
62
- },
63
- },
64
- {
65
- id: 'icon',
66
- type: 'j-icon',
67
- config: {
68
- label: '图标(Iconify)',
69
- width: 120,
70
- align: 'center',
71
- size: 24,
72
- },
73
- },
74
- {
75
- id: 'svg',
76
- type: 'j-icon',
77
- config: {
78
- label: '图标(SVG)',
79
- width: 120,
80
- align: 'center',
81
- size: 24,
82
- },
83
- },
84
- ])
85
- </script>
1
+ <template>
2
+ <div style="position: relative; width: 100%; height: 300px">
3
+ <j-table v-if="iconsReady" :columns="columns" :records="records" />
4
+ </div>
5
+ </template>
6
+
7
+ <script setup lang="ts">
8
+ import { getIcon, iconLoaded, loadIcon } from '@iconify/vue'
9
+ import { onBeforeMount, ref } from 'vue'
10
+
11
+ const iconsReady = ref(false)
12
+
13
+ const browsers = [
14
+ { name: 'Chrome', icon: 'logos:chrome' },
15
+ { name: 'Firefox', icon: 'logos:firefox' },
16
+ { name: 'Safari', icon: 'logos:safari' },
17
+ { name: 'Edge', icon: 'logos:microsoft-edge' },
18
+ ]
19
+
20
+ const toSvg = (iconName: string) => {
21
+ const iconData = getIcon(iconName)
22
+ if (!iconData) return ''
23
+ return `<svg viewBox="0 0 ${iconData.width} ${iconData.height}">${iconData.body}</svg>`
24
+ }
25
+
26
+ const records = ref<Record<string, any>[]>([])
27
+
28
+ onBeforeMount(async () => {
29
+ // @ts-ignore
30
+ if (import.meta.env.SSR) {
31
+ iconsReady.value = true
32
+ return
33
+ }
34
+
35
+ const icons = browsers.map((item) => item.icon)
36
+
37
+ await Promise.all(
38
+ icons.map(async (icon) => {
39
+ if (!iconLoaded(icon)) {
40
+ await loadIcon(icon)
41
+ }
42
+ })
43
+ )
44
+
45
+ records.value = browsers.map((item) => {
46
+ return {
47
+ ...item,
48
+ svg: toSvg(item.icon),
49
+ }
50
+ })
51
+
52
+ iconsReady.value = true
53
+ })
54
+
55
+ const columns = ref([
56
+ {
57
+ id: 'name',
58
+ config: {
59
+ label: '浏览器',
60
+ width: 150,
61
+ align: 'left',
62
+ },
63
+ },
64
+ {
65
+ id: 'icon',
66
+ type: 'j-icon',
67
+ config: {
68
+ label: '图标(Iconify)',
69
+ width: 120,
70
+ align: 'center',
71
+ size: 24,
72
+ },
73
+ },
74
+ {
75
+ id: 'svg',
76
+ type: 'j-icon',
77
+ config: {
78
+ label: '图标(SVG)',
79
+ width: 120,
80
+ align: 'center',
81
+ size: 24,
82
+ },
83
+ },
84
+ ])
85
+ </script>
@@ -1,66 +1,66 @@
1
- <template>
2
- <div style="position: relative; width: 100%; height: 400px">
3
- <j-table :columns="columns" :records="records" />
4
- </div>
5
- </template>
6
-
7
- <script setup lang="ts">
8
- import { ref } from 'vue'
9
- import { ElMessage } from 'element-plus'
10
-
11
- const columns = ref([
12
- {
13
- id: 'name',
14
- type: 'link',
15
- config: {
16
- label: '项目名称',
17
- width: 'auto',
18
- align: 'left',
19
- click: ({ row }: { row: any }) => {
20
- ElMessage.success(`点击了项目: ${row.name}`)
21
- },
22
- },
23
- },
24
- {
25
- id: 'status',
26
- config: {
27
- label: '状态',
28
- width: 'auto',
29
- align: 'center',
30
- },
31
- },
32
- {
33
- id: 'owner',
34
- type: 'link',
35
- config: {
36
- label: '负责人',
37
- width: 'auto',
38
- align: 'center',
39
- click: ({ row }: { row: any }) => {
40
- ElMessage.info(`查看负责人: ${row.owner}`)
41
- },
42
- },
43
- },
44
- ])
45
-
46
- const records = ref([
47
- {
48
- id: '1',
49
- name: '项目A',
50
- status: '进行中',
51
- owner: '张三',
52
- },
53
- {
54
- id: '2',
55
- name: '项目B',
56
- status: '已完成',
57
- owner: '李四',
58
- },
59
- {
60
- id: '3',
61
- name: '项目C',
62
- status: '待审核',
63
- owner: '王五',
64
- },
65
- ])
66
- </script>
1
+ <template>
2
+ <div style="position: relative; width: 100%; height: 400px">
3
+ <j-table :columns="columns" :records="records" />
4
+ </div>
5
+ </template>
6
+
7
+ <script setup lang="ts">
8
+ import { ref } from 'vue'
9
+ import { ElMessage } from 'element-plus'
10
+
11
+ const columns = ref([
12
+ {
13
+ id: 'name',
14
+ type: 'link',
15
+ config: {
16
+ label: '项目名称',
17
+ width: 'auto',
18
+ align: 'left',
19
+ click: ({ row }: { row: any }) => {
20
+ ElMessage.success(`点击了项目: ${row.name}`)
21
+ },
22
+ },
23
+ },
24
+ {
25
+ id: 'status',
26
+ config: {
27
+ label: '状态',
28
+ width: 'auto',
29
+ align: 'center',
30
+ },
31
+ },
32
+ {
33
+ id: 'owner',
34
+ type: 'link',
35
+ config: {
36
+ label: '负责人',
37
+ width: 'auto',
38
+ align: 'center',
39
+ click: ({ row }: { row: any }) => {
40
+ ElMessage.info(`查看负责人: ${row.owner}`)
41
+ },
42
+ },
43
+ },
44
+ ])
45
+
46
+ const records = ref([
47
+ {
48
+ id: '1',
49
+ name: '项目A',
50
+ status: '进行中',
51
+ owner: '张三',
52
+ },
53
+ {
54
+ id: '2',
55
+ name: '项目B',
56
+ status: '已完成',
57
+ owner: '李四',
58
+ },
59
+ {
60
+ id: '3',
61
+ name: '项目C',
62
+ status: '待审核',
63
+ owner: '王五',
64
+ },
65
+ ])
66
+ </script>
@@ -1,188 +1,188 @@
1
- <template>
2
- <div style="margin-bottom: 10px">
3
- <j-button type="primary" label="获取选中数据" @click="getSelection" />
4
- <j-button label="选中前两行" @click="setSelection" />
5
- </div>
6
- <div style="position: relative; width: 100%; height: 500px">
7
- <j-table ref="tableRef" :columns="columns" :records="records" is-multiple />
8
- </div>
9
- </template>
10
-
11
- <script setup lang="ts">
12
- import { ref } from 'vue'
13
-
14
- const tableRef = ref()
15
-
16
- const getSelection = () => {
17
- const records = tableRef.value.getSelection()
18
- console.log(records)
19
- alert(`选中了 ${records.length} 条数据,详情请查看控制台`)
20
- }
21
-
22
- const setSelection = () => {
23
- const selectedRecords = [records.value[0], records.value[1]]
24
- tableRef.value.setSelection(selectedRecords)
25
- }
26
-
27
- const columns = ref([
28
- {
29
- id: 'Order ID',
30
- config: {
31
- label: 'Order ID',
32
- width: 'auto',
33
- align: 'left',
34
- },
35
- },
36
- {
37
- id: 'Customer ID',
38
- config: {
39
- label: 'Customer ID',
40
- width: 'auto',
41
- align: 'left',
42
- },
43
- },
44
- {
45
- id: 'Product Name',
46
- config: {
47
- label: 'Product Name',
48
- width: 'auto',
49
- align: 'left',
50
- },
51
- },
52
- {
53
- id: 'Category',
54
- config: {
55
- label: 'Category',
56
- width: 'auto',
57
- align: 'left',
58
- },
59
- },
60
- {
61
- id: 'Quantity',
62
- config: {
63
- label: 'Quantity',
64
- width: 'auto',
65
- align: 'right',
66
- },
67
- },
68
- {
69
- id: 'Sales',
70
- config: {
71
- label: 'Sales',
72
- width: 'auto',
73
- align: 'right',
74
- },
75
- },
76
- {
77
- id: 'Profit',
78
- config: {
79
- label: 'Profit',
80
- width: 'auto',
81
- align: 'right',
82
- },
83
- },
84
- ])
85
-
86
- const records = ref([
87
- {
88
- id: 'CA-2016-152156',
89
- 'Order ID': 'CA-2016-152156',
90
- 'Customer ID': 'CG-12520',
91
- 'Product Name': 'Canon ImageCLASS 2200 Advanced Copier',
92
- Category: 'Office Supplies',
93
- Quantity: 2,
94
- Sales: 2399.99,
95
- Profit: 400.0,
96
- },
97
- {
98
- id: 'CA-2017-152157',
99
- 'Order ID': 'CA-2017-152157',
100
- 'Customer ID': 'DV-13045',
101
- 'Product Name': 'Logitech Wireless Mouse',
102
- Category: 'Technology',
103
- Quantity: 3,
104
- Sales: 89.97,
105
- Profit: 25.5,
106
- },
107
- {
108
- id: 'US-2017-108966',
109
- 'Order ID': 'US-2017-108966',
110
- 'Customer ID': 'SO-20335',
111
- 'Product Name': 'HON Mesh Task Chair',
112
- Category: 'Furniture',
113
- Quantity: 4,
114
- Sales: 799.96,
115
- Profit: 120.0,
116
- },
117
- {
118
- id: 'US-2016-108967',
119
- 'Order ID': 'US-2016-108967',
120
- 'Customer ID': 'AB-10015',
121
- 'Product Name': 'Avery Binder Labels',
122
- Category: 'Office Supplies',
123
- Quantity: 10,
124
- Sales: 15.9,
125
- Profit: 5.2,
126
- },
127
- {
128
- id: 'CA-2015-108968',
129
- 'Order ID': 'CA-2015-108968',
130
- 'Customer ID': 'ML-12515',
131
- 'Product Name': 'Apple iPhone 7',
132
- Category: 'Technology',
133
- Quantity: 1,
134
- Sales: 699.0,
135
- Profit: 80.0,
136
- },
137
- {
138
- id: 'CA-2016-108969',
139
- 'Order ID': 'CA-2016-108969',
140
- 'Customer ID': 'CG-12520',
141
- 'Product Name': 'Staples Paper',
142
- Category: 'Office Supplies',
143
- Quantity: 20,
144
- Sales: 40.0,
145
- Profit: 12.0,
146
- },
147
- {
148
- id: 'US-2016-108970',
149
- 'Order ID': 'US-2016-108970',
150
- 'Customer ID': 'DV-13045',
151
- 'Product Name': 'Dell Monitor 24"',
152
- Category: 'Technology',
153
- Quantity: 2,
154
- Sales: 320.0,
155
- Profit: 60.0,
156
- },
157
- {
158
- id: 'US-2017-108971',
159
- 'Order ID': 'US-2017-108971',
160
- 'Customer ID': 'SO-20335',
161
- 'Product Name': 'Office Chair Ergonomic',
162
- Category: 'Furniture',
163
- Quantity: 1,
164
- Sales: 199.0,
165
- Profit: 35.0,
166
- },
167
- {
168
- id: 'CA-2017-108972',
169
- 'Order ID': 'CA-2017-108972',
170
- 'Customer ID': 'AB-10015',
171
- 'Product Name': 'Notebook Set',
172
- Category: 'Office Supplies',
173
- Quantity: 15,
174
- Sales: 60.0,
175
- Profit: 18.0,
176
- },
177
- {
178
- id: 'US-2015-108973',
179
- 'Order ID': 'US-2015-108973',
180
- 'Customer ID': 'ML-12515',
181
- 'Product Name': 'Bluetooth Headset',
182
- Category: 'Technology',
183
- Quantity: 2,
184
- Sales: 150.0,
185
- Profit: 30.0,
186
- },
187
- ])
188
- </script>
1
+ <template>
2
+ <div style="margin-bottom: 10px">
3
+ <j-button type="primary" label="获取选中数据" @click="getSelection" />
4
+ <j-button label="选中前两行" @click="setSelection" />
5
+ </div>
6
+ <div style="position: relative; width: 100%; height: 500px">
7
+ <j-table ref="tableRef" :columns="columns" :records="records" is-multiple />
8
+ </div>
9
+ </template>
10
+
11
+ <script setup lang="ts">
12
+ import { ref } from 'vue'
13
+
14
+ const tableRef = ref()
15
+
16
+ const getSelection = () => {
17
+ const records = tableRef.value.getSelection()
18
+ console.log(records)
19
+ alert(`选中了 ${records.length} 条数据,详情请查看控制台`)
20
+ }
21
+
22
+ const setSelection = () => {
23
+ const selectedRecords = [records.value[0], records.value[1]]
24
+ tableRef.value.setSelection(selectedRecords)
25
+ }
26
+
27
+ const columns = ref([
28
+ {
29
+ id: 'Order ID',
30
+ config: {
31
+ label: 'Order ID',
32
+ width: 'auto',
33
+ align: 'left',
34
+ },
35
+ },
36
+ {
37
+ id: 'Customer ID',
38
+ config: {
39
+ label: 'Customer ID',
40
+ width: 'auto',
41
+ align: 'left',
42
+ },
43
+ },
44
+ {
45
+ id: 'Product Name',
46
+ config: {
47
+ label: 'Product Name',
48
+ width: 'auto',
49
+ align: 'left',
50
+ },
51
+ },
52
+ {
53
+ id: 'Category',
54
+ config: {
55
+ label: 'Category',
56
+ width: 'auto',
57
+ align: 'left',
58
+ },
59
+ },
60
+ {
61
+ id: 'Quantity',
62
+ config: {
63
+ label: 'Quantity',
64
+ width: 'auto',
65
+ align: 'right',
66
+ },
67
+ },
68
+ {
69
+ id: 'Sales',
70
+ config: {
71
+ label: 'Sales',
72
+ width: 'auto',
73
+ align: 'right',
74
+ },
75
+ },
76
+ {
77
+ id: 'Profit',
78
+ config: {
79
+ label: 'Profit',
80
+ width: 'auto',
81
+ align: 'right',
82
+ },
83
+ },
84
+ ])
85
+
86
+ const records = ref([
87
+ {
88
+ id: 'CA-2016-152156',
89
+ 'Order ID': 'CA-2016-152156',
90
+ 'Customer ID': 'CG-12520',
91
+ 'Product Name': 'Canon ImageCLASS 2200 Advanced Copier',
92
+ Category: 'Office Supplies',
93
+ Quantity: 2,
94
+ Sales: 2399.99,
95
+ Profit: 400.0,
96
+ },
97
+ {
98
+ id: 'CA-2017-152157',
99
+ 'Order ID': 'CA-2017-152157',
100
+ 'Customer ID': 'DV-13045',
101
+ 'Product Name': 'Logitech Wireless Mouse',
102
+ Category: 'Technology',
103
+ Quantity: 3,
104
+ Sales: 89.97,
105
+ Profit: 25.5,
106
+ },
107
+ {
108
+ id: 'US-2017-108966',
109
+ 'Order ID': 'US-2017-108966',
110
+ 'Customer ID': 'SO-20335',
111
+ 'Product Name': 'HON Mesh Task Chair',
112
+ Category: 'Furniture',
113
+ Quantity: 4,
114
+ Sales: 799.96,
115
+ Profit: 120.0,
116
+ },
117
+ {
118
+ id: 'US-2016-108967',
119
+ 'Order ID': 'US-2016-108967',
120
+ 'Customer ID': 'AB-10015',
121
+ 'Product Name': 'Avery Binder Labels',
122
+ Category: 'Office Supplies',
123
+ Quantity: 10,
124
+ Sales: 15.9,
125
+ Profit: 5.2,
126
+ },
127
+ {
128
+ id: 'CA-2015-108968',
129
+ 'Order ID': 'CA-2015-108968',
130
+ 'Customer ID': 'ML-12515',
131
+ 'Product Name': 'Apple iPhone 7',
132
+ Category: 'Technology',
133
+ Quantity: 1,
134
+ Sales: 699.0,
135
+ Profit: 80.0,
136
+ },
137
+ {
138
+ id: 'CA-2016-108969',
139
+ 'Order ID': 'CA-2016-108969',
140
+ 'Customer ID': 'CG-12520',
141
+ 'Product Name': 'Staples Paper',
142
+ Category: 'Office Supplies',
143
+ Quantity: 20,
144
+ Sales: 40.0,
145
+ Profit: 12.0,
146
+ },
147
+ {
148
+ id: 'US-2016-108970',
149
+ 'Order ID': 'US-2016-108970',
150
+ 'Customer ID': 'DV-13045',
151
+ 'Product Name': 'Dell Monitor 24"',
152
+ Category: 'Technology',
153
+ Quantity: 2,
154
+ Sales: 320.0,
155
+ Profit: 60.0,
156
+ },
157
+ {
158
+ id: 'US-2017-108971',
159
+ 'Order ID': 'US-2017-108971',
160
+ 'Customer ID': 'SO-20335',
161
+ 'Product Name': 'Office Chair Ergonomic',
162
+ Category: 'Furniture',
163
+ Quantity: 1,
164
+ Sales: 199.0,
165
+ Profit: 35.0,
166
+ },
167
+ {
168
+ id: 'CA-2017-108972',
169
+ 'Order ID': 'CA-2017-108972',
170
+ 'Customer ID': 'AB-10015',
171
+ 'Product Name': 'Notebook Set',
172
+ Category: 'Office Supplies',
173
+ Quantity: 15,
174
+ Sales: 60.0,
175
+ Profit: 18.0,
176
+ },
177
+ {
178
+ id: 'US-2015-108973',
179
+ 'Order ID': 'US-2015-108973',
180
+ 'Customer ID': 'ML-12515',
181
+ 'Product Name': 'Bluetooth Headset',
182
+ Category: 'Technology',
183
+ Quantity: 2,
184
+ Sales: 150.0,
185
+ Profit: 30.0,
186
+ },
187
+ ])
188
+ </script>