@a2simcode/ui 0.0.159 → 0.0.161

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